1 | UNIT Unit10;
|
---|
2 |
|
---|
3 | INTERFACE
|
---|
4 |
|
---|
5 | USES
|
---|
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
7 | Dialogs, StdCtrls, Math;
|
---|
8 |
|
---|
9 | TYPE
|
---|
10 | TForm10 = Class(TForm)
|
---|
11 | label_key: TLabel;
|
---|
12 | label_group: TLabel;
|
---|
13 | combo_group: TComboBox;
|
---|
14 | label_target_char: TLabel;
|
---|
15 | check_charid: TRadioButton;
|
---|
16 | check_charname: TRadioButton;
|
---|
17 | edit_char: TEdit;
|
---|
18 | label_option: TLabel;
|
---|
19 | combo_option: TComboBox;
|
---|
20 | label_action: TLabel;
|
---|
21 | combo_action: TComboBox;
|
---|
22 | label_value: TLabel;
|
---|
23 | label_value2: TLabel;
|
---|
24 | edit_value: TEdit;
|
---|
25 | edit_value2: TEdit;
|
---|
26 | button_add: TButton;
|
---|
27 | button_cancel: TButton;
|
---|
28 | Check_Ctrl: TCheckBox;
|
---|
29 | Check_Alt: TCheckBox;
|
---|
30 | combo_keys: TComboBox;
|
---|
31 | procedure button_addClick(Sender: TObject);
|
---|
32 | procedure check_charnameClick(Sender: TObject);
|
---|
33 | PROCEDURE check_charidClick(Sender: TObject);
|
---|
34 | PROCEDURE button_cancelClick(Sender: TObject);
|
---|
35 | PROCEDURE combo_actionChange(Sender: TObject);
|
---|
36 | PROCEDURE combo_optionChange(Sender: TObject);
|
---|
37 | PROCEDURE combo_groupChange(Sender: TObject);
|
---|
38 | PROCEDURE FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
---|
39 | PROCEDURE InitStuff(LoadHotKey:Byte);
|
---|
40 | PRIVATE
|
---|
41 | PUBLIC
|
---|
42 | END;
|
---|
43 |
|
---|
44 | VAR
|
---|
45 | Form10: TForm10;
|
---|
46 |
|
---|
47 | IMPLEMENTATION
|
---|
48 |
|
---|
49 | USES Unit1,Unit2,Unit3,Unit8,Unit9;
|
---|
50 |
|
---|
51 | {$R *.dfm}
|
---|
52 |
|
---|
53 | VAR change:Byte;
|
---|
54 |
|
---|
55 | PROCEDURE TForm10.InitStuff(LoadHotKey:Byte);
|
---|
56 | VAR i:Byte;
|
---|
57 | BEGIN
|
---|
58 | IF LoadHotKey=0 THEN BEGIN
|
---|
59 | change:=0;
|
---|
60 | Form10.Check_Ctrl.Checked:=False;
|
---|
61 | Form10.Check_Alt.Checked:=False;
|
---|
62 | Form10.combo_keys.Items.Clear;
|
---|
63 | FOR i:=1 TO Length(VKKeys) DO Form10.combo_keys.Items.Add(VKKeys[i].Name);
|
---|
64 | Form10.combo_keys.ItemIndex:=0;
|
---|
65 | Form10.combo_group.Items.Clear;
|
---|
66 | FOR i:=1 TO Length(HK_Target_Types) DO Form10.combo_group.Items.Add(HK_Target_Types[i]);
|
---|
67 | Form10.combo_group.ItemIndex:=0;
|
---|
68 | Form10.combo_groupChange(Self);
|
---|
69 | Form10.combo_option.ItemIndex:=0;
|
---|
70 | Form10.combo_optionChange(Self);
|
---|
71 | Form10.combo_action.ItemIndex:=0;
|
---|
72 | Form10.check_charid.Checked:=True;
|
---|
73 | Form10.label_target_char.Caption:='Target char ID:';
|
---|
74 | Form10.edit_char.Text:='';
|
---|
75 | Form10.edit_value.Text:='0';
|
---|
76 | Form10.edit_value2.Text:='0';
|
---|
77 | END ELSE BEGIN
|
---|
78 | change:=LoadHotKey;
|
---|
79 | WITH Hotkeys.Items[LoadHotKey-1] DO BEGIN
|
---|
80 | Form10.Check_Ctrl.Checked:=MOD_Ctrl;
|
---|
81 | Form10.Check_Alt.Checked:=MOD_Alt;
|
---|
82 | Form10.combo_keys.Items.Clear;
|
---|
83 | FOR i:=1 TO Length(VKKeys) DO Form10.combo_keys.Items.Add(VKKeys[i].Name);
|
---|
84 | Form10.combo_keys.ItemIndex:=key-1;
|
---|
85 | Form10.combo_group.Items.Clear;
|
---|
86 | FOR i:=1 TO Length(HK_Target_Types) DO Form10.combo_group.Items.Add(HK_Target_Types[i]);
|
---|
87 | Form10.combo_group.ItemIndex:=Target_Type-1;
|
---|
88 | Form10.combo_groupChange(Self);
|
---|
89 | Form10.combo_option.ItemIndex:=Target_Item-1;
|
---|
90 | Form10.combo_optionChange(Self);
|
---|
91 | FOR i:=0 TO Form10.combo_action.Items.Count-1 DO BEGIN
|
---|
92 | IF HK_Actions[Action]=Form10.combo_action.Items.Strings[i] THEN BEGIN
|
---|
93 | Form10.combo_action.ItemIndex:=i;
|
---|
94 | break;
|
---|
95 | END;
|
---|
96 | END;
|
---|
97 | IF Target_CharName='' THEN BEGIN
|
---|
98 | Form10.check_charid.Checked:=True;
|
---|
99 | Form10.label_target_char.Caption:='Target char ID:';
|
---|
100 | Form10.edit_char.Text:=IntToStr(Target_CharID);
|
---|
101 | END ELSE BEGIN
|
---|
102 | Form10.check_charname.Checked:=True;
|
---|
103 | Form10.label_target_char.Caption:='Target char name:';
|
---|
104 | Form10.edit_char.Text:=Target_CharName;
|
---|
105 | END;
|
---|
106 | Form10.edit_value.Text:=FloatToStr(Value);
|
---|
107 | Form10.edit_value2.Text:=FloatToStr(Value2);
|
---|
108 | END;
|
---|
109 | END;
|
---|
110 | END;
|
---|
111 |
|
---|
112 | PROCEDURE TForm10.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
---|
113 | BEGIN
|
---|
114 | Form9.Enabled:=True;
|
---|
115 | Form10.Visible:=False;
|
---|
116 | CanClose:=False;
|
---|
117 | END;
|
---|
118 |
|
---|
119 | PROCEDURE TForm10.combo_groupChange(Sender: TObject);
|
---|
120 | VAR i:Byte;
|
---|
121 | BEGIN
|
---|
122 | Form10.combo_option.Items.Clear;
|
---|
123 | IF Pos('Global',Form10.combo_group.Items.Strings[Form10.combo_group.ItemIndex])>0 THEN BEGIN
|
---|
124 | Form10.check_charid.Enabled:=False;
|
---|
125 | Form10.check_charname.Enabled:=False;
|
---|
126 | Form10.edit_char.Enabled:=False;
|
---|
127 | Form10.label_target_char.Enabled:=False;
|
---|
128 | FOR i:=1 TO Length(Settings) DO BEGIN
|
---|
129 | IF Settings[i].has_box THEN
|
---|
130 | Form10.combo_option.Items.Add(Settings[i].Item_Checkbox.Caption)
|
---|
131 | ELSE Form10.combo_option.Items.Add(Settings[i].Item_Label.Caption);
|
---|
132 | END;
|
---|
133 | END;
|
---|
134 | IF Pos('Char',Form10.combo_group.Items.Strings[Form10.combo_group.ItemIndex])>0 THEN BEGIN
|
---|
135 | Form10.check_charid.Enabled:=True;
|
---|
136 | Form10.check_charname.Enabled:=True;
|
---|
137 | Form10.edit_char.Enabled:=True;
|
---|
138 | Form10.label_target_char.Enabled:=True;
|
---|
139 | FOR i:=1 TO Length(CharDataStuff) DO BEGIN
|
---|
140 | Form10.combo_option.Items.Add(CharDataStuff[i].overview_name);
|
---|
141 | END;
|
---|
142 | END;
|
---|
143 | Form10.combo_option.ItemIndex:=0;
|
---|
144 | Form10.combo_optionChange(Self);
|
---|
145 | END;
|
---|
146 |
|
---|
147 | PROCEDURE TForm10.combo_optionChange(Sender: TObject);
|
---|
148 | BEGIN
|
---|
149 | Form10.button_add.Enabled:=True;
|
---|
150 | Form10.combo_action.Items.Clear;
|
---|
151 | IF Pos('Global',Form10.combo_group.Items.Strings[Form10.combo_group.ItemIndex])>0 THEN BEGIN
|
---|
152 | IF Settings[Form10.combo_option.ItemIndex+1].has_box THEN BEGIN
|
---|
153 | Form10.combo_action.Items.Add('Toggle');
|
---|
154 | END;
|
---|
155 | IF Settings[Form10.combo_option.ItemIndex+1].has_edit THEN BEGIN
|
---|
156 | Form10.combo_action.Items.Add('Set');
|
---|
157 | Form10.combo_action.Items.Add('Add');
|
---|
158 | Form10.combo_action.Items.Add('Multiply');
|
---|
159 | Form10.combo_action.Items.Add('Switch value');
|
---|
160 | END;
|
---|
161 | END;
|
---|
162 | IF Pos('Char',Form10.combo_group.Items.Strings[Form10.combo_group.ItemIndex])>0 THEN BEGIN
|
---|
163 | IF CharDataStuff[Form10.combo_option.ItemIndex+1].data_type=6 THEN BEGIN
|
---|
164 | Form10.combo_action.Items.Add('CAN''T CHANGE');
|
---|
165 | Form10.button_add.Enabled:=False;
|
---|
166 | END ELSE BEGIN
|
---|
167 | Form10.combo_action.Items.Add('Set');
|
---|
168 | Form10.combo_action.Items.Add('Add');
|
---|
169 | Form10.combo_action.Items.Add('Multiply');
|
---|
170 | Form10.combo_action.Items.Add('Freeze');
|
---|
171 | Form10.combo_action.Items.Add('Set & Freeze');
|
---|
172 | Form10.combo_action.Items.Add('Switch value');
|
---|
173 | END;
|
---|
174 | END;
|
---|
175 | Form10.combo_action.ItemIndex:=0;
|
---|
176 | Form10.combo_actionChange(Self);
|
---|
177 | END;
|
---|
178 |
|
---|
179 | PROCEDURE TForm10.combo_actionChange(Sender: TObject);
|
---|
180 | BEGIN
|
---|
181 | IF ('Toggle'=Form10.combo_action.Items.Strings[Form10.combo_action.ItemIndex]) OR ('Freeze'=Form10.combo_action.Items.Strings[Form10.combo_action.ItemIndex]) THEN BEGIN
|
---|
182 | Form10.label_value.Enabled:=False;
|
---|
183 | Form10.label_value2.Enabled:=False;
|
---|
184 | Form10.edit_value.Enabled:=False;
|
---|
185 | Form10.edit_value2.Enabled:=False;
|
---|
186 | END ELSE BEGIN
|
---|
187 | Form10.label_value.Enabled:=True;
|
---|
188 | Form10.edit_value.Enabled:=True;
|
---|
189 | IF Pos('Switch',Form10.combo_action.Items.Strings[Form10.combo_action.ItemIndex])>0 THEN BEGIN
|
---|
190 | Form10.label_value2.Enabled:=True;
|
---|
191 | Form10.edit_value2.Enabled:=True;
|
---|
192 | END ELSE BEGIN
|
---|
193 | Form10.label_value2.Enabled:=False;
|
---|
194 | Form10.edit_value2.Enabled:=False;
|
---|
195 | END;
|
---|
196 | END;
|
---|
197 | END;
|
---|
198 |
|
---|
199 | PROCEDURE TForm10.button_cancelClick(Sender: TObject);
|
---|
200 | BEGIN
|
---|
201 | Form9.Enabled:=True;
|
---|
202 | Form10.Visible:=False;
|
---|
203 | END;
|
---|
204 |
|
---|
205 | PROCEDURE TForm10.check_charidClick(Sender: TObject);
|
---|
206 | BEGIN
|
---|
207 | IF Form10.check_charid.Checked THEN
|
---|
208 | Form10.label_target_char.Caption:='Target char ID:'
|
---|
209 | ELSE
|
---|
210 | Form10.label_target_char.Caption:='Target char name:';
|
---|
211 | END;
|
---|
212 |
|
---|
213 | PROCEDURE TForm10.check_charnameClick(Sender: TObject);
|
---|
214 | BEGIN
|
---|
215 | IF Form10.check_charid.Checked THEN
|
---|
216 | Form10.label_target_char.Caption:='Target char ID:'
|
---|
217 | ELSE
|
---|
218 | Form10.label_target_char.Caption:='Target char name:';
|
---|
219 | END;
|
---|
220 |
|
---|
221 | PROCEDURE TForm10.button_addClick(Sender: TObject);
|
---|
222 | VAR i:Byte;
|
---|
223 | dataset:HotKey;
|
---|
224 | _temp:String;
|
---|
225 | _tempint:Integer;
|
---|
226 | _tempfloat:Double;
|
---|
227 | number:Word;
|
---|
228 | _wanted_datatype:Byte;
|
---|
229 | _check_value2:Boolean;
|
---|
230 | BEGIN
|
---|
231 | //check_valid_data:
|
---|
232 | dataset.Target_Type:=Form10.combo_group.ItemIndex+1;
|
---|
233 | dataset.Target_Item:=Form10.combo_option.ItemIndex+1;
|
---|
234 | FOR i:=1 TO Length(HK_Actions) DO BEGIN
|
---|
235 | IF HK_Actions[i]=Form10.combo_action.Items.Strings[Form10.combo_action.ItemIndex] THEN BEGIN
|
---|
236 | dataset.Action:=i;
|
---|
237 | break;
|
---|
238 | END;
|
---|
239 | END;
|
---|
240 | IF Pos('Char',HK_Target_Types[dataset.Target_Type])>0 THEN BEGIN
|
---|
241 | IF Form10.check_charid.Checked THEN BEGIN
|
---|
242 | IF TryStrToInt(Form10.edit_char.Text,_tempint)=False THEN BEGIN
|
---|
243 | MessageBox(Form10.Handle,PChar('Invalid character ID!'),PChar('Error'),MB_OK);
|
---|
244 | exit;
|
---|
245 | END;
|
---|
246 | IF (_tempint<0) OR (_tempint>100) THEN BEGIN
|
---|
247 | MessageBox(Form10.Handle,PChar('Invalid character ID!'),PChar('Error'),MB_OK);
|
---|
248 | exit;
|
---|
249 | END;
|
---|
250 | dataset.Target_CharID:=_tempint;
|
---|
251 | END ELSE BEGIN
|
---|
252 | IF (Length(Form10.edit_char.Text)<1) OR (Length(Form10.edit_char.Text)>20) THEN BEGIN
|
---|
253 | MessageBox(Form10.Handle,PChar('Invalid character name!'),PChar('Error'),MB_OK);
|
---|
254 | exit;
|
---|
255 | END;
|
---|
256 | dataset.Target_CharName:=Form10.edit_char.Text;
|
---|
257 | END;
|
---|
258 | END;
|
---|
259 | IF (Pos('Toggle',HK_Actions[dataset.Action])=0) AND (Pos('Freeze value',HK_Actions[dataset.Action])=0) THEN BEGIN
|
---|
260 | IF Pos('Global',HK_Target_Types[dataset.Target_Type])>0 THEN BEGIN
|
---|
261 | _wanted_datatype:=Settings[Form10.combo_option.ItemIndex+1].edit_type;
|
---|
262 | END;
|
---|
263 | IF Pos('Char',HK_Target_Types[dataset.Target_Type])>0 THEN BEGIN
|
---|
264 | _wanted_datatype:=CharDataStuff[Form10.combo_option.ItemIndex+1].data_type;
|
---|
265 | END;
|
---|
266 | IF Pos('Switch',HK_Actions[dataset.Action])>0 THEN BEGIN
|
---|
267 | _check_value2:=True;
|
---|
268 | END ELSE _check_value2:=False;
|
---|
269 | CASE _wanted_datatype OF
|
---|
270 | 1..4: BEGIN
|
---|
271 | IF TryStrToInt(Form10.edit_value.Text,_tempint) THEN BEGIN
|
---|
272 | dataset.Value:=_tempint;
|
---|
273 | END ELSE BEGIN
|
---|
274 | MessageBox(Form10.Handle,PChar('Invalid value (has to be integer)!'),PChar('Error'),MB_OK);
|
---|
275 | exit;
|
---|
276 | END;
|
---|
277 | IF _check_value2 THEN BEGIN
|
---|
278 | IF TryStrToInt(Form10.edit_value2.Text,_tempint) THEN BEGIN
|
---|
279 | dataset.Value2:=_tempint;
|
---|
280 | END ELSE BEGIN
|
---|
281 | MessageBox(Form10.Handle,PChar('Invalid value2 (has to be integer)!'),PChar('Error'),MB_OK);
|
---|
282 | exit;
|
---|
283 | END;
|
---|
284 | END;
|
---|
285 | END;
|
---|
286 | 5: BEGIN
|
---|
287 | IF TryStrToFloat(Form10.edit_value.Text,_tempfloat) THEN BEGIN
|
---|
288 | dataset.Value:=_tempfloat;
|
---|
289 | END ELSE BEGIN
|
---|
290 | MessageBox(Form10.Handle,PChar('Invalid value (has to be float)!'),PChar('Error'),MB_OK);
|
---|
291 | exit;
|
---|
292 | END;
|
---|
293 | IF _check_value2 THEN BEGIN
|
---|
294 | IF TryStrToFloat(Form10.edit_value2.Text,_tempfloat) THEN BEGIN
|
---|
295 | dataset.Value2:=_tempfloat;
|
---|
296 | END ELSE BEGIN
|
---|
297 | MessageBox(Form10.Handle,PChar('Invalid value2 (has to be float)!'),PChar('Error'),MB_OK);
|
---|
298 | exit;
|
---|
299 | END;
|
---|
300 | END;
|
---|
301 | END;
|
---|
302 | END;
|
---|
303 | END;
|
---|
304 | dataset.MOD_Alt:=Form10.Check_Alt.Checked;
|
---|
305 | dataset.MOD_Ctrl:=Form10.Check_Ctrl.Checked;
|
---|
306 | dataset.Key:=Form10.combo_keys.ItemIndex+1;
|
---|
307 |
|
---|
308 | IF change=0 THEN BEGIN
|
---|
309 | //check_already_exist:
|
---|
310 | number:=65000;
|
---|
311 | IF Hotkeys.Size>0 THEN BEGIN
|
---|
312 | FOR i:=0 TO Hotkeys.Size-1 DO BEGIN
|
---|
313 | WITH Hotkeys.Items[i] DO BEGIN
|
---|
314 | IF (MOD_Alt=Form10.Check_Alt.Checked)
|
---|
315 | AND (MOD_Ctrl=Form10.Check_Ctrl.Checked)
|
---|
316 | AND (Key=Form10.combo_keys.ItemIndex+1) THEN BEGIN
|
---|
317 | _temp:='Do you really want to change the hotkey "';
|
---|
318 | IF MOD_Alt THEN _temp:=_temp+'ALT+';
|
---|
319 | IF MOD_Ctrl THEN _temp:=_temp+'CTRL+';
|
---|
320 | _temp:=_temp+VKKeys[Key].Name+'"?';
|
---|
321 | IF MessageBox(Form10.Handle,PChar(_temp),PChar('Really?'),MB_OKCANCEL)=IDCANCEL THEN BEGIN
|
---|
322 | exit;
|
---|
323 | END;
|
---|
324 | number:=i;
|
---|
325 | break;
|
---|
326 | END;
|
---|
327 | END;
|
---|
328 | END;
|
---|
329 | END;
|
---|
330 | //add/change_item:
|
---|
331 | IF number<65000 THEN BEGIN
|
---|
332 | Hotkeys.Items[number]:=dataset;
|
---|
333 | END ELSE BEGIN
|
---|
334 | Hotkeys.Size:=Hotkeys.Size+1;
|
---|
335 | HotKeys.Items[HotKeys.Size-1]:=dataset;
|
---|
336 | END;
|
---|
337 | //change_item:
|
---|
338 | END ELSE BEGIN
|
---|
339 | WITH HotKeys.Items[change-1] DO BEGIN
|
---|
340 | _temp:='Do you really want to change the hotkey "';
|
---|
341 | IF MOD_Alt THEN _temp:=_temp+'ALT+';
|
---|
342 | IF MOD_Ctrl THEN _temp:=_temp+'CTRL+';
|
---|
343 | _temp:=_temp+VKKeys[Key].Name+'"?';
|
---|
344 | IF MessageBox(Form10.Handle,PChar(_temp),PChar('Really?'),MB_OKCANCEL)=IDCANCEL THEN BEGIN
|
---|
345 | exit;
|
---|
346 | END;
|
---|
347 | END;
|
---|
348 | HotKeys.Items[change-1]:=dataset;
|
---|
349 | END;
|
---|
350 | Form10.Visible:=False;
|
---|
351 | Form9.Enabled:=True;
|
---|
352 | Form9.DrawTable;
|
---|
353 | END;
|
---|
354 |
|
---|
355 | END.
|
---|