www.pudn.com > M2Engine.rar > GeneralConfig.pas
unit GeneralConfig;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, IniFiles, ExtCtrls;
type
TfrmGeneralConfig = class(TForm)
PageControl: TPageControl;
ServerInfoSheet: TTabSheet;
ShareSheet: TTabSheet;
NetWorkSheet: TTabSheet;
GroupBoxNet: TGroupBox;
LabelGateIPaddr: TLabel;
LabelGatePort: TLabel;
EditGateAddr: TEdit;
EditGatePort: TEdit;
ButtonNetWorkSave: TButton;
GroupBox1: TGroupBox;
Label4: TLabel;
Label5: TLabel;
EditDBPort: TEdit;
EditDBAddr: TEdit;
GroupBox2: TGroupBox;
Label2: TLabel;
Label3: TLabel;
EditIDSPort: TEdit;
EditIDSAddr: TEdit;
GroupBox3: TGroupBox;
Label6: TLabel;
Label7: TLabel;
EditLogServerPort: TEdit;
EditLogServerAddr: TEdit;
GroupBox4: TGroupBox;
Label8: TLabel;
Label9: TLabel;
EditMsgSrvPort: TEdit;
EditMsgSrvAddr: TEdit;
GroupBoxInfo: TGroupBox;
Label1: TLabel;
EditGameName: TEdit;
EditServerIndex: TEdit;
Label10: TLabel;
Label11: TLabel;
EditServerNumber: TEdit;
CheckBoxServiceMode: TCheckBox;
GroupBox5: TGroupBox;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
EditTestLevel: TEdit;
EditTestGold: TEdit;
EditTestUserLimit: TEdit;
CheckBoxTestServer: TCheckBox;
ButtonServerInfoSave: TButton;
GroupBox6: TGroupBox;
Label15: TLabel;
EditUserFull: TEdit;
GroupBox7: TGroupBox;
Label16: TLabel;
EditDBName: TEdit;
EditGuildDir: TEdit;
Label17: TLabel;
Label18: TLabel;
EditGuildFile: TEdit;
EditConLogDir: TEdit;
EditCastleDir: TEdit;
EditEnvirDir: TEdit;
EditMapDir: TEdit;
EditNoticeDir: TEdit;
EditPlugDir: TEdit;
Label24: TLabel;
Label23: TLabel;
Label22: TLabel;
Label21: TLabel;
Label20: TLabel;
Label19: TLabel;
EditVentureDir: TEdit;
Label25: TLabel;
ButtonShareDirSave: TButton;
Label26: TLabel;
TabSheet1: TTabSheet;
GroupBox8: TGroupBox;
ColorBoxHint: TColorBox;
procedure ButtonNetWorkSaveClick(Sender: TObject);
procedure EditValueChange(Sender: TObject);
procedure PageControlChanging(Sender: TObject;
var AllowChange: Boolean);
procedure CheckBoxTestServerClick(Sender: TObject);
procedure ButtonServerInfoSaveClick(Sender: TObject);
procedure ButtonShareDirSaveClick(Sender: TObject);
procedure ColorBoxHintChange(Sender: TObject);
private
boOpened: Boolean;
boModValued: Boolean;
procedure ModValue();
procedure uModValue();
procedure RefDlgConf();
{ Private declarations }
public
procedure Open();
{ Public declarations }
end;
var
frmGeneralConfig: TfrmGeneralConfig;
implementation
uses HUtil32, M2Share;
{$R *.dfm}
procedure TfrmGeneralConfig.ModValue;
begin
boModValued := True;
ButtonNetWorkSave.Enabled := True;
ButtonServerInfoSave.Enabled := True;
ButtonShareDirSave.Enabled := True;
end;
procedure TfrmGeneralConfig.uModValue;
begin
boModValued := False;
ButtonNetWorkSave.Enabled := False;
ButtonServerInfoSave.Enabled := False;
ButtonShareDirSave.Enabled := False;
end;
procedure TfrmGeneralConfig.ButtonNetWorkSaveClick(Sender: TObject);
var
Gateaddr, IDSAddr, DBAddr, LogServerAddr, MsgSrvAddr: string;
GatePort, IDSPort, DBPort, LogServerPort, MsgSrvPort: Integer;
begin
Gateaddr := Trim(EditGateAddr.Text);
GatePort := Str_ToInt(Trim(EditGatePort.Text), -1);
IDSAddr := Trim(EditIDSAddr.Text);
IDSPort := Str_ToInt(Trim(EditIDSPort.Text), -1);
DBAddr := Trim(EditDBAddr.Text);
DBPort := Str_ToInt(Trim(EditDBPort.Text), -1);
LogServerAddr := Trim(EditLogServerAddr.Text);
LogServerPort := Str_ToInt(Trim(EditLogServerPort.Text), -1);
MsgSrvAddr := Trim(EditMsgSrvAddr.Text);
MsgSrvPort := Str_ToInt(Trim(EditMsgSrvPort.Text), -1);
if not IsIPaddr(Gateaddr) then begin
Application.MessageBox('网关地址设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditGateAddr.SetFocus;
exit;
end;
if (GatePort < 0) or (GatePort > 65535) then begin
Application.MessageBox('网关端口设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditGatePort.SetFocus;
exit;
end;
if not IsIPaddr(IDSAddr) then begin
Application.MessageBox('管理服务器地址设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditIDSAddr.SetFocus;
exit;
end;
if (IDSPort < 0) or (IDSPort > 65535) then begin
Application.MessageBox('管理服务器端口设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditIDSPort.SetFocus;
exit;
end;
if not IsIPaddr(DBAddr) then begin
Application.MessageBox('数据库服务器地址设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditDBAddr.SetFocus;
exit;
end;
if (DBPort < 0) or (DBPort > 65535) then begin
Application.MessageBox('数据库服务器端口设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditDBPort.SetFocus;
exit;
end;
if not IsIPaddr(LogServerAddr) then begin
Application.MessageBox('日志服务器地址设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditLogServerAddr.SetFocus;
exit;
end;
if (LogServerPort < 0) or (LogServerPort > 65535) then begin
Application.MessageBox('日志服务器端口设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditLogServerPort.SetFocus;
exit;
end;
if not IsIPaddr(MsgSrvAddr) then begin
Application.MessageBox('游戏主服务器地址设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditMsgSrvAddr.SetFocus;
exit;
end;
if (MsgSrvPort < 0) or (MsgSrvPort > 65535) then begin
Application.MessageBox('游戏主服务器端口设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditMsgSrvPort.SetFocus;
exit;
end;
g_Config.sGateAddr := Gateaddr;
g_Config.nGatePort := GatePort;
g_Config.sIDSAddr := IDSAddr;
g_Config.nIDSPort := IDSPort;
g_Config.sDBAddr := DBAddr;
g_Config.nDBPort := DBPort;
g_Config.sLogServerAddr := LogServerAddr;
g_Config.nLogServerPort := LogServerPort;
g_Config.sMsgSrvAddr := MsgSrvAddr;
g_Config.nMsgSrvPort := MsgSrvPort;
Config.WriteString('Server', 'GateAddr', g_Config.sGateAddr);
Config.WriteInteger('Server', 'GatePort', g_Config.nGatePort);
Config.WriteString('Server', 'IDSAddr', g_Config.sIDSAddr);
Config.WriteInteger('Server', 'IDSPort', g_Config.nIDSPort);
Config.WriteString('Server', 'DBAddr', g_Config.sDBAddr);
Config.WriteInteger('Server', 'DBPort', g_Config.nDBPort);
Config.WriteString('Server', 'LogServerAddr', g_Config.sLogServerAddr);
Config.WriteInteger('Server', 'LogServerPort', g_Config.nLogServerPort);
Config.WriteString('Server', 'MsgSrvAddr', g_Config.sMsgSrvAddr);
Config.WriteInteger('Server', 'MsgSrvPort', g_Config.nMsgSrvPort);
uModValue();
end;
procedure TfrmGeneralConfig.Open;
begin
boOpened := False;
uModValue();
EditGateAddr.Text := g_Config.sGateAddr;
EditGatePort.Text := IntToStr(g_Config.nGatePort);
EditIDSAddr.Text := g_Config.sIDSAddr;
EditIDSPort.Text := IntToStr(g_Config.nIDSPort);
EditDBAddr.Text := g_Config.sDBAddr;
EditDBPort.Text := IntToStr(g_Config.nDBPort);
EditLogServerAddr.Text := g_Config.sLogServerAddr;
EditLogServerPort.Text := IntToStr(g_Config.nLogServerPort);
EditGameName.Text := g_Config.sServerName;
EditServerIndex.Text := IntToStr(nServerIndex);
EditServerNumber.Text := IntToStr(g_Config.nServerNumber);
CheckBoxServiceMode.Checked := g_Config.boServiceMode;
CheckBoxTestServer.Checked := g_Config.boTestServer;
EditTestLevel.Text := IntToStr(g_Config.nTestLevel);
EditTestGold.Text := IntToStr(g_Config.nTestGold);
EditTestUserLimit.Text := IntToStr(g_Config.nTestUserLimit);
EditUserFull.Text := IntToStr(g_Config.nUserFull);
CheckBoxTestServerClick(Self);
EditDBName.Text := sDBName;
EditGuildDir.Text := g_Config.sGuildDir;
EditGuildFile.Text := g_Config.sGuildFile;
EditConLogDir.Text := g_Config.sConLogDir;
EditCastleDir.Text := g_Config.sCastleDir;
EditEnvirDir.Text := g_Config.sEnvirDir;
EditMapDir.Text := g_Config.sMapDir;
EditNoticeDir.Text := g_Config.sNoticeDir;
EditPlugDir.Text := g_Config.sPlugDir;
EditVentureDir.Text := g_Config.sVentureDir;
RefDlgConf();
boOpened := True;
PageControl.ActivePageIndex := 0;
ShowModal;
end;
procedure TfrmGeneralConfig.EditValueChange(Sender: TObject);
begin
if not boOpened then exit;
ModValue();
end;
procedure TfrmGeneralConfig.PageControlChanging(Sender: TObject;
var AllowChange: Boolean);
begin
if boModValued then begin
if Application.MessageBox('参数设置已经被修改,是否确认不保存修改的设置?', '确认信息', MB_YESNO + MB_ICONQUESTION) = IDYES then begin
uModValue
end else AllowChange := False;
end;
end;
procedure TfrmGeneralConfig.CheckBoxTestServerClick(Sender: TObject);
var
boStatue: Boolean;
begin
boStatue := CheckBoxTestServer.Checked;
EditTestLevel.Enabled := boStatue;
EditTestGold.Enabled := boStatue;
EditTestUserLimit.Enabled := boStatue;
EditValueChange(Sender);
end;
procedure TfrmGeneralConfig.ButtonServerInfoSaveClick(Sender: TObject);
var
GameName, DBName: string;
ServerIndex, ServerNumber, TestLevel, TestGold, TestUserLimit, UserFull: Integer;
TestServer, ServiceMode: Boolean;
begin
GameName := Trim(EditGameName.Text);
ServerIndex := Str_ToInt(Trim(EditServerIndex.Text), -1);
ServerNumber := Str_ToInt(Trim(EditServerNumber.Text), -1);
ServiceMode := CheckBoxServiceMode.Checked;
TestServer := CheckBoxTestServer.Checked;
TestLevel := Str_ToInt(Trim(EditTestLevel.Text), -1);
TestGold := Str_ToInt(Trim(EditTestGold.Text), -1);
TestUserLimit := Str_ToInt(Trim(EditTestUserLimit.Text), -1);
UserFull := Str_ToInt(Trim(EditUserFull.Text), -1);
DBName := Trim(EditDBName.Text);
if GameName = '' then begin
Application.MessageBox('游戏名称设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditGameName.SetFocus;
exit;
end;
if (ServerIndex < 0) or (ServerIndex > 255) then begin
Application.MessageBox('服务器号设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditServerIndex.SetFocus;
exit;
end;
if (ServerNumber < 0) or (ServerNumber > 255) then begin
Application.MessageBox('服务器数设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditServerNumber.SetFocus;
exit;
end;
if (TestLevel < 0) or (TestLevel > 65535) then begin
Application.MessageBox('开始等级设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditTestLevel.SetFocus;
exit;
end;
if (TestGold < 0) or (TestGold > High(Integer) div 2) then begin
Application.MessageBox('开始金币设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditTestGold.SetFocus;
exit;
end;
if (TestUserLimit < 0) or (TestUserLimit > 10000) then begin
Application.MessageBox('测试人数设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditTestUserLimit.SetFocus;
exit;
end;
if (UserFull < 0) or (UserFull > 10000) then begin
Application.MessageBox('上限人数设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditUserFull.SetFocus;
exit;
end;
if DBName = '' then begin
Application.MessageBox('数据库名称设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditDBName.SetFocus;
exit;
end;
g_Config.sServerName := GameName;
//nServerIndex:=ServerIndex;
g_Config.nServerNumber := ServerNumber;
g_Config.boServiceMode := ServiceMode;
g_Config.boTestServer := TestServer;
g_Config.nTestLevel := TestLevel;
g_Config.nTestGold := TestGold;
g_Config.nTestUserLimit := TestUserLimit;
g_Config.nUserFull := UserFull;
sDBName := DBName;
Config.WriteString('Server', 'ServerName', g_Config.sServerName);
Config.WriteInteger('Server', 'ServerIndex', nServerIndex);
Config.WriteInteger('Server', 'ServerNumber', g_Config.nServerNumber);
Config.WriteString('Server', 'TestServer', BoolToStr(g_Config.boTestServer));
Config.WriteInteger('Server', 'TestLevel', g_Config.nTestLevel);
Config.WriteInteger('Server', 'TestGold', g_Config.nTestGold);
Config.WriteInteger('Server', 'TestServerUserLimit', g_Config.nTestUserLimit);
Config.WriteInteger('Server', 'UserFull', g_Config.nUserFull);
Config.WriteString('Server', 'DBName', sDBName);
uModValue();
end;
procedure TfrmGeneralConfig.ButtonShareDirSaveClick(Sender: TObject);
var
GuildDir, GuildFile, VentureDir, ConLogDir, CastleDir, EnvirDir, MapDir, NoticeDir, PlugDir: string;
begin
GuildDir := Trim(EditGuildDir.Text);
GuildFile := Trim(EditGuildFile.Text);
VentureDir := Trim(EditVentureDir.Text);
ConLogDir := Trim(EditConLogDir.Text);
CastleDir := Trim(EditCastleDir.Text);
EnvirDir := Trim(EditEnvirDir.Text);
MapDir := Trim(EditMapDir.Text);
NoticeDir := Trim(EditNoticeDir.Text);
PlugDir := Trim(EditPlugDir.Text);
if not DirectoryExists(GuildDir) or (GuildDir[Length(GuildDir)] <> '\') then begin
Application.MessageBox('行会目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditGuildDir.SetFocus;
exit;
end;
if not FileExists(GuildFile) then begin
Application.MessageBox('行会文件设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditGuildFile.SetFocus;
exit;
end;
if not DirectoryExists(VentureDir) or (VentureDir[Length(VentureDir)] <> '\') then begin
Application.MessageBox('Venture目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditVentureDir.SetFocus;
exit;
end;
if not DirectoryExists(ConLogDir) or (ConLogDir[Length(ConLogDir)] <> '\') then begin
Application.MessageBox('登录日志目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditConLogDir.SetFocus;
exit;
end;
if not DirectoryExists(CastleDir) or (CastleDir[Length(CastleDir)] <> '\') then begin
Application.MessageBox('城堡目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditCastleDir.SetFocus;
exit;
end;
if not DirectoryExists(EnvirDir) or (EnvirDir[Length(EnvirDir)] <> '\') then begin
Application.MessageBox('配置目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditEnvirDir.SetFocus;
exit;
end;
if not DirectoryExists(MapDir) or (MapDir[Length(MapDir)] <> '\') then begin
Application.MessageBox('地图目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditMapDir.SetFocus;
exit;
end;
if not DirectoryExists(NoticeDir) or (NoticeDir[Length(NoticeDir)] <> '\') then begin
Application.MessageBox('公告目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditNoticeDir.SetFocus;
exit;
end;
if not DirectoryExists(PlugDir) or (PlugDir[Length(PlugDir)] <> '\') then begin
Application.MessageBox('插件目录设置错误!!!', '错误信息', MB_OK + MB_ICONERROR);
EditPlugDir.SetFocus;
exit;
end;
g_Config.sGuildDir := GuildDir;
g_Config.sGuildFile := GuildFile;
g_Config.sVentureDir := VentureDir;
g_Config.sConLogDir := ConLogDir;
g_Config.sCastleDir := CastleDir;
g_Config.sEnvirDir := EnvirDir;
g_Config.sMapDir := MapDir;
g_Config.sNoticeDir := NoticeDir;
g_Config.sPlugDir := PlugDir;
Config.WriteString('Share', 'GuildDir', g_Config.sGuildDir);
Config.WriteString('Share', 'GuildFile', g_Config.sGuildFile);
Config.WriteString('Share', 'VentureDir', g_Config.sVentureDir);
Config.WriteString('Share', 'ConLogDir', g_Config.sConLogDir);
Config.WriteString('Share', 'CastleDir', g_Config.sCastleDir);
Config.WriteString('Share', 'EnvirDir', g_Config.sEnvirDir);
Config.WriteString('Share', 'MapDir', g_Config.sMapDir);
Config.WriteString('Share', 'NoticeDir', g_Config.sNoticeDir);
Config.WriteString('Share', 'PlugDir', g_Config.sPlugDir);
uModValue();
end;
procedure TfrmGeneralConfig.RefDlgConf;
begin
ColorBoxHint.Selected := Application.HintColor;
end;
procedure TfrmGeneralConfig.ColorBoxHintChange(Sender: TObject);
begin
Application.HintColor := ColorBoxHint.Selected;
end;
end.