设为首页 加入收藏

TOP

DELPHI版传奇引擎学习菜鸟篇(applem2)-02(一)
2017-10-10 12:07:29 】 浏览:11562
Tags:DELPHI 传奇 引擎 学习 菜鸟篇 applem2 -02
每天只学习一个知识点,也是一种进步.

接着学习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;

到此GShare.pas的声明部分结束,觉得还可以优化,接下来是实现部分,实现一共有5个函数\过程:

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);

加载保

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇WinExec 使用手记 下一篇DELPHI版传奇引擎学习菜鸟篇(appl..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目