home *** CD-ROM | disk | FTP | other *** search
- unit Setting;
-
- { Program copyright (c) 1995 by Charles Calvert }
- { Project Name: LIFE }
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs,
- Messages, Classes, Graphics,
- Controls, Forms, Dialogs,
- StdCtrls, Spin, ExtCtrls;
-
- type
- TSettings = class(TForm)
- LBoardSize: TLabel;
- LBoardSizeY: TLabel;
- LGridSize: TLabel;
- CheckforAltGen: TCheckBox;
- SpinEdit1: TSpinEdit;
- PBoardSizeX: TPanel;
- PBoardSizeY: TPanel;
- procedure AnyChangeClick(Sender: TObject);
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- public
- procedure FindBestSize;
- procedure SetStartState;
- procedure TabsOn(Setting: Boolean);
- end;
-
- var
- Settings: TSettings;
-
- implementation
-
- uses
- LifeDef;
-
- {$R *.DFM}
-
- procedure TSettings.CreateParams(var Params: TCreateParams);
- begin
- inherited CreateParams(Params);
- Params.Style := Params.Style and not ws_Caption;
- Params.Style := Params.Style and not ws_ThickFrame;
- Params.Style := Params.Style or ws_Border;
- end;
-
- procedure TSettings.FindBestSize;
- const
- Border = 5;
- var
- R: TRect;
- MikeSize: Integer;
- Temp: Integer;
- begin
- R := GetClientRect;
- MikeSize := BoardInfo.MicrobeSize;
- if MikeSize > 0 then begin
- BoardInfo.SizeX := (R.Right - (2 * Border)) div MikeSize;
- BoardInfo.SizeY := (R.Bottom - (2 * Border)) div MikeSize;
- Temp := BoardInfo.SizeY * MikeSize + Border + MikeSize;
- if Temp >= R.Bottom then Dec(BoardInfo.SizeY);
- Temp := BoardInfo.SizeX * MikeSize + Border + MikeSize;
- if Temp >= R.Right then Dec(BoardInfo.SizeX);
- end;
- PBoardSizeX.Caption := IntToStr(BoardInfo.SizeX);
- PBoardSizeY.Caption := IntToStr(BoardInfo.SizeY);
- SpinEdit1.Value := BoardInfo.MicrobeSize;
- end;
-
- procedure TSettings.AnyChangeClick(Sender: TObject);
- begin
- BoardInfo.MicrobeSize := SpinEdit1.Value;
- GameInfo.CheckForAltGen := CheckForAltGen.Checked;
- FindBestSize;
- end;
-
- { Called Only when program begins }
- procedure TSettings.SetStartState;
- begin
- GameInfo.GameType := Classic;
- GameInfo.MaxGen := 32000;
- GameInfo.CheckForAltGen := True;
- CheckForAltGen.Checked := GameInfo.CheckForAltGen;
- BoardInfo.MicrobeSize := 10;
- SpinEdit1.Value := BoardInfo.MicrobeSize;
- end;
-
- procedure TSettings.TabsOn(Setting: Boolean);
- var
- i: Integer;
- begin
- for i := 0 to ComponentCount - 1 do
- TWinControl(Components[i]).Enabled := Setting;
- end;
-
- end.
-