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.