接着学习GShare.pas的实现部分,其实这个应该叫做GAMECENTER共享单元,我刚开始理解的是错误的,这是根据名字起的.
//虽然光看这些变量不可能全部知道代表什么,但是为了学习,还是注释一下
var
//下面4个应该是更新数据(格式)用的,默认为本机更新
g_sDataListAddrs: string = '127.0.0.1';
g_wDataListPort: Word = 18888;
g_sDataListPassWord: string = '123456';
g_boGetDataListOK: Boolean = False;
//下面3个是获取更新列表用的,
g_DataListReadBuffer: PChar;
g_nDataListReadLength: Integer;
g_GetDatList: TStringList;
//下面6个很明显,从字面就能看出意思对应启动设置\窗口\按钮状态
g_nFormIdx: Integer;
g_IniConf: Tinifile;
g_sButtonStartGame: string = '启动游戏服务器(&S)';
g_sButtonStopGame: string = '停止游戏服务器(&T)';
g_sButtonStopStartGame: string = '中止启动游戏服务器(&T)';
g_sButtonStopStopGame: string = '中止停止游戏服务器(&T)';
//下面对应的都是配置变量,主窗口都有对应的控件
g_sConfFile: string = '.\Config.ini';
g_sBackListFile: string = '.\BackupList.txt';
g_sGameName: string = '测试引擎';
g_sGameDirectory: string = '.\';
g_sHeroDBName: string = 'HeroDB';
g_sExtIPaddr: string = '127.0.0.1';
g_sExtIPaddr2: string = '127.0.0.1';
g_boAutoRunBak: Boolean = False;
g_boCloseWuXin: Boolean = False;
g_boIP2: Boolean = False;
// 声明并初始化服务端配置结构,也许类似这样的应该定义为类,前边也好多
g_Config: TConfig = (
DBServer: (
MainFormX: 0;
MainFormY: 373;
GatePort: 5100;
ServerPort: 6000;
GetStart: True;
ProgramFile: 'DBServer.exe';
);
LoginSrv: (
MainFormX: 252;
MainFormY: 0;
GatePort: 5500;
ServerPort: 5600;
MonPort: 3000;
GetStart: True;
ProgramFile: 'LoginSrv.exe';
);
M2Server:(
MainFormX: 561;
MainFormY: 0;
GatePort: 5000;
MsgSrvPort: 4900;
GetStart: True;
ProgramFile: 'M2Server.exe';
ProgramFile: 'PlugTop.exe';
);
LogServer:(
MainFormX: 252;
MainFormY: 286;
Port: 10000;
GetStart: True;
ProgramFile: 'LogDataServer.exe';
);
RunGate:(
MainFormX: 437;
MainFormY: 373;
GetStart: (True, False, False, False, False, False, False, False);
GatePort: (7200, 7201, 7202, 7203, 7204, 7205, 7206, 7207);
ProgramFile: 'RunGate.exe';
);
SelGate:(
MainFormX: 0;
MainFormY: 180;
GatePort: (7100, 7101);
GetStart1: True;
GetStart2: False;
ProgramFile: 'SelGate.exe';
);
LoginGate:(
MainFormX: 0;
MainFormY: 0;
GatePort: 7000;
GetStart: True;
ProgramFile: 'LoginGate.exe';
);
PlugTop:(
MainFormX: 525;
MainFormY:300;
GetStart: True;
ProgramFile: 'PlugTop.exe';
);
);
//声明服务程序变量,暂时就这么理解吧
DBServer: TProgram;
LoginServer: TProgram;
LogServer: TProgram;
M2Server: TProgram;
RunGate: array[0..MAXRUNGATECOUNT - 1] of TProgram;
SelGate: TProgram;
SelGate1: TProgram;
LoginGate: TProgram;
LoginGate2: TProgram;
PlugTop: TProgram;
//下面是检测程序运行状态的变量,暂时理解为心跳检测吧
g_dwStopTick: LongWord;
g_dwStopTimeOut: LongWord = 10000;
g_dwM2CheckCodeAddr: LongWord;
g_dwDBCheckCodeAddr: LongWord;
g_BackUpManager: TBackUpManager;
m_nBackStartStatus: Integer = 0;
procedure LoadConfig();//加载配置
procedure SaveConfig();//保存配置
{运行服务}
function RunProgram(var ProgramInfo: TProgram; sHandle: string; dwWaitTime: LongWord): LongWord;
{停止服务}
function StopProgram(var ProgramInfo: TProgram; dwWaitTime: LongWord): Integer;
{发送消息}
procedure SendProgramMsg(DesForm: THandle; wIdent: Word; sSendMsg: string);