unit _fm_Setup;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, ExtCtrls, ImgList, Spin, IniFiles;
type
Tfm_Setup = class(TForm)
btApply : TBitBtn;
Panel1 : TPanel;
Panel2 : TPanel;
Panel3 : TPanel;
cbAnim : TCheckBox;
cbTime : TCheckBox;
tbDiff : TTrackBar;
lbDLevel : TLabel;
Panel4 : TPanel;
cbASave : TCheckBox;
cbALoad : TCheckBox;
ilDiff : TImageList;
imDiff : TImage;
imTime : TImage;
Image1 : TImage;
Image2 : TImage;
Image3 : TImage;
meTime : TSpinEdit;
Panel5 : TPanel;
Image4 : TImage;
cbTips : TCheckBox;
procedure btApplyClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure cbTimeClick(Sender: TObject);
procedure meTimeClick(Sender: TObject);
procedure cbAnimClick(Sender: TObject);
procedure cbASaveClick(Sender: TObject);
procedure cbALoadClick(Sender: TObject);
procedure tbDiffChange(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure cbTipsClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fm_Setup : Tfm_Setup;
procedure LoadConfig;
procedure LoadTopNames;
implementation
uses _fm_Main, _fm_Lang, _fm_Top, LangSupp, _fm_DMan;
{$R *.DFM}
{------------------------------------------------------------------------------}
procedure LoadTopNames;
var
i : integer;
begin
for i:=0 to 9 do begin
fm_Top.sgTop.Cells[0,i] := intToStr(i + 1);
fm_Top.sgTop.Cells[1,i] := TopNames[i].Name;
fm_Top.sgTop.Cells[2,i] := TopNames[i].Points;
fm_Top.sgTop.Cells[3,i] := TopNames[i].CoolWord;
end;
end;
{------------------------------------------------------------------------------}
procedure LoadConfig;
var
i : Longint;
IniFile : TIniFile;
Exist : boolean;
v : array[0..MAX_PATH] of char;
Key : HKey;
begin
{ Load Cofiguration from file -------------------------------------------------}
{Selfs constants}
ShowTips := true;
Animation := true;
TimeLimit := 0;
AutoSave := true;
AutoLoad := true;
Difficulty := 3;
Network := true;
for i:=0 to 9 do begin
TopNames[i].Name := '';
TopNames[i].Points := '';
TopNames[i].CoolWord := '';
end;
{Если нет файла конфигурации, то создать его}
if not FileExists(ExtractFilePath(Application.ExeName)+'Erudite.ini') then begin
// fm_Setup.btApplyClick(fm_Setup.btApply);
fm_Lang.ShowModal;
{Set CurrentLanguage}
fm_Main.RegisterExtension('.eru', true);
end;
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Erudite.ini');
with IniFile do begin
if CurrentLanguage=lgNone then
case ReadString('Setup','Language','English')[1] of
'D':
CurrentLanguage := lgDEU;
'R':
CurrentLanguage := lgRUS;
else
CurrentLanguage := lgENU;
end;
ShowTips := ReadBool('Setup','ShowTips',true);
Animation := ReadBool('Setup','Animation',true);
AutoSave := ReadBool('Setup','AutoSave',true);
AutoLoad := ReadBool('Setup','AutoLoad',true);
TimeLimit := ReadInteger('Setup','Time Limit',0);
Difficulty := ReadInteger('Setup','Difficulty',3);
for i:=0 to 9 do
if (ReadString('Players','Player'+FormatFloat('0',i),'')<>'') then
Players[1].Name.Items.Add(ReadString('Players','Player'+FormatFloat('0',i),'')
);
for i:=0 to 9 do
if (ReadString('Top 10','Name'+FormatFloat('0',i),'')<>'') then begin
TopNames[i].Name := Trim(Copy(ReadString('Top 10','Name'+FormatFloat('0',i),''
),1,20));
TopNames[i].Points := Copy(ReadString('Top 10','Name'+FormatFloat('0',i),''),
21,5);
TopNames[i].CoolWord := Trim(Copy(ReadString('Top 10','Name'+FormatFloat('0',i
),''),26,40));
end;
Free;
end;
{with}
RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion',
0, KEY_READ, Key);
i := SizeOf(v);
RegQueryValueEx(Key, 'RegisteredOwner', nil, nil, @v, @i);
{if Windows NT}
if StrPas(v)='' then begin
RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
0, KEY_READ, Key);
i := RegQueryValueEx(Key, 'RegisteredOwner', nil, nil, @v, @i);
end;
UserName := StrPas(v);
if UserName<>'' then begin
Exist := false;
if Players[1].Name.Items.Count>0 then
for i:=0 to Players[1].Name.Items.Count-1 do
if (Players[1].Name.Items[i]=UserName) then begin
Exist := true;
break;
end;
if not Exist then begin
fm_main.cb1.Text := UserName;
Players[1].Name.Items.Add(UserName);
end;
end;
Players[1].Name.Items.Add(_M_sPPCName);
for i:=2 to MaxPlayers do
Players[i].Name.Items:=Players[1].Name.Items;
fm_Main.stTime.Visible := Boolean(TimeLimit);
LoadTopNames;
end;
{------------------------------------------------------------------------------}
procedure Tfm_Setup.btApplyClick(Sender: TObject);
var
Time : string;
begin
ShowTips := cbTips.Checked;
Animation := cbAnim.Checked;
Difficulty := tbDiff.Position;
AutoSave := cbASave.Checked;
AutoLoad := cbALoad.Checked;
if cbTime.Checked then begin
Time := meTime.Text;
while Pos(' ',Time)>0 do
Delete(Time,Pos(' ',Time),1);
TimeLimit := StrToIntDef(Time,0);
if GameState<>gsNoGame then
fm_Main.tmGame.Enabled := true;
end
else begin
TimeLimit := 0;
fm_Main.tmGame.Enabled := false;
end;
fm_Main.stTime.Visible := Boolean(TimeLimit);
end;
{------------------------------------------------------------------------------}
procedure Tfm_Setup.FormActivate(Sender: TObject);
begin
cbTips.Checked := ShowTips;
cbAnim.Checked := Animation;
tbDiff.Position := Difficulty;
cbASave.Checked := AutoSave;
cbALoad.Checked := AutoLoad;
cbTime.Checked := Boolean(TimeLimit);
meTime.Text := IntToStr(TimeLimit);
if cbTime.Checked then
meTime.Color := clWindow
else
meTime.Color := clBtnFace;
end;
{------------------------------------------------------------------------------}
procedure Tfm_Setup.cbTimeClick(Sender: TObject);
begin
meTime.Enabled := cbTime.Checked;
if meTime.Enabled then begin
meTime.SetFocus;
if (strtointDef(meTime.Text, 0)=0) then
meTime.Text := '60';
end;
if cbTime.Checked then
meTime.Color := clWindow
else
meTime.Color := clBtnFace;
end;
{------------------------------------------------------------------------------}
procedure Tfm_Setup.meTimeClick(Sender: TObject);
begin
meTime.SelectAll;
end;
procedure Tfm_Setup.cbAnimClick(Sender: TObject);
begin
Animation := not Animation
end;
procedure Tfm_Setup.cbASaveClick(Sender: TObject);
begin
AutoSave := not AutoSave
end;
procedure Tfm_Setup.cbALoadClick(Sender: TObject);
begin
AutoLoad := not AutoLoad
end;
procedure Tfm_Setup.tbDiffChange(Sender: TObject);
begin
imDiff.Picture.Bitmap.Canvas.Draw(0,0,imDiff.Picture.Bitmap);
ilDiff.GetBitmap(tbDiff.Position,imDiff.Picture.Bitmap);
end;
procedure Tfm_Setup.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#27 then
Close
end;
procedure Tfm_Setup.cbTipsClick(Sender: TObject);
begin
ShowTips := not ShowTips
end;
end.