Files
Client/Server/ToolProject/GameDBTool/Admin.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

207 lines
4.8 KiB
C++

// Admin.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "GameDBTool.h"
#include "Admin.h"
#include "GameDBTool.h"
#include "GameDBToolDlg.h"
#include ".\admin.h"
// CAdmin 대화 상자입니다.
IMPLEMENT_DYNAMIC(CAdmin, CDialog)
CAdmin::CAdmin(CWnd* pParent /*=NULL*/)
: CDialog(CAdmin::IDD, pParent)
, m_UserID(_T(""))
, m_SIP(_T(""))
, m_EIP(_T(""))
{
}
CAdmin::~CAdmin()
{
}
void CAdmin::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_UID, m_UserID);
DDX_Control(pDX, IDC_LEVEL, m_Level);
DDX_Text(pDX, IDC_S_IP, m_SIP);
DDX_Text(pDX, IDC_E_IP, m_EIP);
}
BEGIN_MESSAGE_MAP(CAdmin, CDialog)
ON_BN_CLICKED(IDC_MODIFY, OnBnClickedModify)
ON_EN_CHANGE(IDC_S_IP, OnEnChangeSIp)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
// CAdmin 메시지 처리기입니다.
BOOL CAdmin::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
ADMIN Admin = {0,};
char Query[256] = "";
sprintf(Query, "SELECT * FROM AdminList WHERE UID='%d'", m_UID);
int Rows = 0;
if(!CDBSingleObject::GetInstance().Select( Query, (void **)&Admin, sizeof(ADMIN), 0, 1, &Rows))
{
pDlgWnd->m_Log.LogPrint("[영자] 영자 정보 읽기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
}
if(0 == Rows)
{
pDlgWnd->m_Log.LogPrint("[영자] 영자 정보 읽기중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
}
m_UserID.Format("%d", m_UID);
m_Level.InsertString(0, "None");
m_Level.InsertString(1, "Admin LV1");
m_Level.InsertString(2, "Admin LV2");
m_Level.InsertString(3, "Admin LV3");
// 운영자 정보 창 띄었을때 현재 레벨 표시
switch(Admin.Level)
{
case 0: m_Level.SetCurSel(0); break;
case 1: m_Level.SetCurSel(1); break;
case 2: m_Level.SetCurSel(2); break;
case 3: m_Level.SetCurSel(3); break;
}
// 운영자 정보 창 띄었을때 현재 아이피 셋팅 표시
m_SIP = Admin.IP_S;
m_EIP = Admin.IP_E;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}
void CAdmin::OnBnClickedModify()
{
UpdateData();
CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp();
CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd;
IN_ADDR SAddr = {0,};
IN_ADDR EAddr = {0,};
SAddr.S_un.S_addr = inet_addr(m_SIP.GetBuffer(0));
EAddr.S_un.S_addr = inet_addr(m_EIP.GetBuffer(0));
if((SAddr.S_un.S_un_b.s_b1 != EAddr.S_un.S_un_b.s_b1) || (SAddr.S_un.S_un_b.s_b2 != EAddr.S_un.S_un_b.s_b2) ||
(SAddr.S_un.S_un_b.s_b3 != EAddr.S_un.S_un_b.s_b3))
{
MessageBox("IP 대역이 잘못 되었습니다.");
return;
}
char Query[256] = "";
switch(m_Level.GetCurSel())
{
case 0: // 일반
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
0, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 1: // 운영자 LV1
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
1, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 2: // 운영자 LV2
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
2, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
case 3: // 운영자 LV3
{
sprintf(Query, "UPDATE AdminList SET Level = '%d', IP_S = '%s', IP_E = '%s' WHERE UID = '%d'",
3, m_SIP.GetBuffer(0), m_EIP.GetBuffer(0), m_UID);
}break;
}
int Rows = 0;
if(!CDBSingleObject::GetInstance().ExecuteQuery(Query))
{
pDlgWnd->m_Log.LogPrint("[영자] 레벨 변환중에 오류가 발생. %s", CDBSingleObject::GetInstance().GetErrorString());
}
CAdmin::OnOK();
}
void CAdmin::OnEnChangeSIp()
{
UpdateData();
m_EIP = m_SIP;
UpdateData(FALSE);
}
bool CAdminDB::Initialize(void)
{
char Query[256] = "";
memset(&m_AdminList, 0, sizeof(unsigned long) * MaxList);
sprintf(Query, "SELECT UID FROM AdminList");
if(!CDBSingleObject::GetInstance().Select( Query, (void **)m_AdminList, sizeof(DWORD), 0, MaxList, &m_AdminNum))
return false;
return true;
}
unsigned short CAdminDB::GetAdminLevel(unsigned long UID)
{
for(int Count = 0; Count < m_AdminNum; ++Count)
if(m_AdminList[Count] == UID)
{
return Level::L1;
}
return Level::None;
}
HBRUSH CAdmin::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 여기서 DC의 특성을 변경합니다.
HBRUSH m_hBrush;
m_hBrush = CreateSolidBrush(RGB( 255, 169, 128));
switch( nCtlColor ){
case CTLCOLOR_DLG:
pDC->SetBkColor(RGB( 255, 255, 255));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
case CTLCOLOR_STATIC:
pDC->SetBkColor(RGB( 255, 169, 128));
pDC->SetTextColor(RGB( 0, 0, 0));
return m_hBrush;
break;
default:
return hbr;
break;
}
}