📄 main.cpp
字号:
//#include <windows.h>
#include <stdio.h>
#include "StdInc.h"
#include "Defines.h"
#include "Common.h"
#include "LoopSleepMgr.h"
// Global Variables
int g_ServerVersion;
BYTE g_byThisServerID;
char g_szThisServerIP[16];
int g_nThisServerPort;
char g_szMainServerIP[16];
int g_nMainServerPort;
int g_nGateServerNum;
int g_MsgDfltHeaderSize;
int g_MsgG2SHeaderSize;
int g_MsgC2SHeaderSize;
int g_MsgS2SHeaderSize;
int g_MaxMap;
BOOL g_bRunServer=FALSE;
BYTE *g_MapZoneInfo = NULL;
// Global Objects
CListenServer ListenServer;
CSvrManage GateManage;
CMainServer MainServer;
CTickManage TickManage;
CFDB FDB;
CAccountManage AccountManage;
CMsgCrypt MsgCrypt;
// Local Functions
BOOL Load();
void GlobalInit();
void Close();
BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType);
int main()
{
CLoopSleepMgr MainLoopSleepMgr;
SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE);
if (Load() == FALSE)
{
printf("Load() fail!!\n");
goto Err0;
}
GlobalInit();
if (ListenServer.Init() == FALSE)
{
printf("ListenServer.Init() fail!!\n");
goto Err0;
}
if (MainServer.RunServer() == FALSE)
{
printf("MainServer.RunServer() fail!!\n");
goto Err1;
}
if (GateManage.Init(g_nGateServerNum) == FALSE)
{
printf("GateManage.Init() fail!!\n");
goto Err2;
}
TickManage.Init();
printf("AccountServer Run...\n");
MainLoopSleepMgr.SetValue(10); // Loop = 10 * 64 雀/檬
g_bRunServer = TRUE;
while(g_bRunServer)
{
TickManage.Proc();
MainServer.SvrProc();
GateManage.StandbyServerProc();
GateManage.ServerProc();
MainLoopSleepMgr.LoopSleep();
}
Close();
return 0;
Err2:
MainServer.OnClose();
Err1:
ListenServer.OnClose();
Err0:
return -1;
}
BOOL Load()
{
// set Global Variables out of SvrInfo.ini
g_ServerVersion = GetPrivateProfileInt("SvrInfo", "ServerVersion", 100, "./SvrInfo.ini");
g_byThisServerID = GetPrivateProfileInt("SvrInfo", "ThisServerID", 255, "./SvrInfo.ini");
GetPrivateProfileString("SvrInfo", "ThisServerIP", "loopback", g_szThisServerIP, 16, "./SvrInfo.ini");
g_nThisServerPort = GetPrivateProfileInt("SvrInfo", "ThisServerPort", 7777, "./SvrInfo.ini");
GetPrivateProfileString("SvrInfo", "MainServerIP", "loopback", g_szMainServerIP, 16, "./SvrInfo.ini");
g_nMainServerPort = GetPrivateProfileInt("SvrInfo", "MainServerPort", 5555, "./SvrInfo.ini");
g_nGateServerNum = GetPrivateProfileInt("SvrInfo", "GateServerNum", 2, "./SvrInfo.ini");
g_MapZoneInfo = new BYTE [g_MaxMap];
// set 'map index & zone server id' table
char str[32];
int i = -1;
while(++i < g_MaxMap)
{
wsprintf (str, "Map%d", i);
g_MapZoneInfo[i] = GetPrivateProfileInt("MapZone", str, 0, "./SvrInfo.ini");
}
return TRUE;
}
void GlobalInit()
{
// 檬扁拳秦具 窍绰 蔼甸阑 咯扁辑 檬扁拳钦聪促.
g_MsgDfltHeaderSize = sizeof(MSG_DFLT_HEADER);
g_MsgG2SHeaderSize = sizeof(MSG_G2S_HEADER);
g_MsgC2SHeaderSize = sizeof(MSG_C2S_HEADER);
g_MsgS2SHeaderSize = sizeof(MSG_S2S_HEADER);
MsgCrypt.SetMsgHeaderSize(sizeof(MSG_S2C_HEADER));
}
void Close()
{
MainServer.OnClose();
GateManage.Close();
ListenServer.OnClose();
}
BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType)
{
switch(dwCtrlType)
{
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
return FALSE;
case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
g_bRunServer = FALSE;
Sleep(100);
break;
default : return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -