source: trunk/Forms/FormGameSystem.pas

Last change on this file was 388, checked in by chronos, 6 months ago
  • Modified: Allow to resize new game, settings and game system forms to be smaller with scroll box area.
File size: 5.2 KB
Line 
1unit FormGameSystem;
2
3interface
4
5uses
6 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
7 ComCtrls, GameSystem, FormList, FormEx;
8
9type
10
11 { TFormGameSystem }
12
13 TFormGameSystem = class(TFormEx)
14 ButtonCancel: TButton;
15 ButtonOk: TButton;
16 ButtonSave: TButton;
17 ButtonLoad: TButton;
18 CheckBoxEmptyCellsNeutral: TCheckBox;
19 CheckBoxUnitsMoveImmediately: TCheckBox;
20 CheckBoxUnitsSplitMerge: TCheckBox;
21 ComboBoxPreferredGridType: TComboBox;
22 Label5: TLabel;
23 OpenDialog1: TOpenDialog;
24 PageControl1: TPageControl;
25 SaveDialog1: TSaveDialog;
26 ScrollBoxGeneral: TScrollBox;
27 TabSheetBuildings: TTabSheet;
28 TabSheetNations: TTabSheet;
29 TabSheetGeneral: TTabSheet;
30 TabSheetUnits: TTabSheet;
31 procedure ButtonLoadClick(Sender: TObject);
32 procedure ButtonSaveClick(Sender: TObject);
33 procedure FormCreate(Sender: TObject);
34 procedure FormDestroy(Sender: TObject);
35 private
36 FGameSystem: TGameSystem;
37 FormUnitKinds: TFormList;
38 FormNations: TFormList;
39 FormBuildingKinds: TFormList;
40 procedure SetGameSystem(AValue: TGameSystem);
41 procedure Translate;
42 public
43 property GameSystem: TGameSystem read FGameSystem write SetGameSystem;
44 procedure LoadData(GameSystem: TGameSystem);
45 procedure SaveData(GameSystem: TGameSystem);
46 end;
47
48
49implementation
50
51{$R *.lfm}
52
53uses
54 MapType, ItemList, Core;
55
56resourcestring
57 SFileDialogFilter = 'xTactics game system (.xts)|*.xts|All files|*.*';
58
59
60{ TFormGameSystem }
61
62procedure TFormGameSystem.ButtonLoadClick(Sender: TObject);
63begin
64 OpenDialog1.Filter := SFileDialogFilter;
65 OpenDialog1.InitialDir := ExtractFileDir(GameSystem.FileName);
66 OpenDialog1.FileName := ExtractFileName(GameSystem.FileName);
67 if OpenDialog1.Execute then begin
68 GameSystem.LoadFromFile(OpenDialog1.FileName);
69 LoadData(GameSystem);
70 end;
71end;
72
73procedure TFormGameSystem.ButtonSaveClick(Sender: TObject);
74begin
75 SaveDialog1.Filter := SFileDialogFilter;
76 SaveDialog1.InitialDir := ExtractFileDir(GameSystem.FileName);
77 SaveDialog1.FileName := ExtractFileName(GameSystem.FileName);
78 SaveDialog1.DefaultExt := GameSystemExt;
79 if SaveDialog1.Execute then begin
80 GameSystem.SaveToFile(SaveDialog1.FileName);
81 end;
82end;
83
84procedure TFormGameSystem.FormCreate(Sender: TObject);
85begin
86 FormUnitKinds := TFormList.Create(nil);
87 FormUnitKinds.ManualDock(TabSheetUnits, nil, alClient);
88 FormUnitKinds.Align := alClient;
89 FormUnitKinds.Visible := True;
90 FormUnitKinds.Images := Core.Core.ImageListSmall;
91 FormNations := TFormList.Create(nil);
92 FormNations.ManualDock(TabSheetNations, nil, alClient);
93 FormNations.Align := alClient;
94 FormNations.Visible := True;
95 FormNations.Images := Core.Core.ImageListSmall;
96 FormBuildingKinds := TFormList.Create(nil);
97 FormBuildingKinds.ManualDock(TabSheetBuildings, nil, alClient);
98 FormBuildingKinds.Align := alClient;
99 FormBuildingKinds.Visible := True;
100 FormBuildingKinds.Images := Core.Core.ImageListSmall;
101 Translate;
102end;
103
104procedure TFormGameSystem.FormDestroy(Sender: TObject);
105begin
106 GameSystem := nil;
107 FreeAndNil(FormNations);
108 FreeAndNil(FormUnitKinds);
109 FreeAndNil(FormBuildingKinds);
110end;
111
112procedure TFormGameSystem.SetGameSystem(AValue: TGameSystem);
113begin
114 if FGameSystem = AValue then Exit;
115 if Assigned(FGameSystem) then begin
116 FormUnitKinds.List := nil;
117 FormNations.List := nil;
118 FormBuildingKinds.List := nil;
119 end;
120 FGameSystem := AValue;
121 if Assigned(FGameSystem) then begin
122 FormUnitKinds.List := GameSystem.UnitKinds.BaseItemList;
123 FormNations.List := GameSystem.Nations.BaseItemList;
124 FormBuildingKinds.List := GameSystem.BuildingKinds.BaseItemList;
125 end;
126end;
127
128procedure TFormGameSystem.Translate;
129var
130 LastIndex: Integer;
131begin
132 with ComboBoxPreferredGridType do begin
133 LastIndex := ItemIndex;
134 Clear;
135 Items.AddObject(SGridTypeNone, TObject(mtNone));
136 Items.AddObject(SGridTypeHexagonVertical, TObject(mtHexagonVertical));
137 Items.AddObject(SGridTypeHexagonHorizontal, TObject(mtHexagonHorizontal));
138 Items.AddObject(SGridTypeSquare, TObject(mtSquare));
139 Items.AddObject(SGridTypeTriangle, TObject(mtTriangle));
140 Items.AddObject(SGridTypeRandom, TObject(mtRandom));
141 Items.AddObject(SGridTypeIsometric, TObject(mtIsometric));
142 ItemIndex := LastIndex;
143 end;
144end;
145
146procedure TFormGameSystem.LoadData(GameSystem: TGameSystem);
147begin
148 Self.GameSystem := GameSystem;
149 CheckBoxEmptyCellsNeutral.Checked := GameSystem.EmptyCellsNeutral;
150 CheckBoxUnitsSplitMerge.Checked := GameSystem.UnitsSplitMerge;
151 CheckBoxUnitsMoveImmediately.Checked := GameSystem.UnitsMoveImmediately;
152 ComboBoxPreferredGridType.ItemIndex := Integer(GameSystem.PreferedMapType);
153 FormNations.UpdateList;
154 FormNations.UpdateInterface;
155 FormUnitKinds.UpdateList;
156 FormUnitKinds.UpdateInterface;
157 FormBuildingKinds.UpdateList;
158 FormBuildingKinds.UpdateInterface;
159 Caption := ExtractFileName(Self.GameSystem.FileName) + ' - ' + SGameSystem;
160end;
161
162procedure TFormGameSystem.SaveData(GameSystem: TGameSystem);
163begin
164 GameSystem.EmptyCellsNeutral := CheckBoxEmptyCellsNeutral.Checked;
165 GameSystem.UnitsSplitMerge := CheckBoxUnitsSplitMerge.Checked;
166 GameSystem.UnitsMoveImmediately := CheckBoxUnitsMoveImmediately.Checked;
167 GameSystem.PreferedMapType := TMapType(ComboBoxPreferredGridType.ItemIndex);
168end;
169
170end.
171
Note: See TracBrowser for help on using the repository browser.