Rev 1 | Rev 4 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 2 | ||
---|---|---|---|
1 | unit LevSpeicherung; |
1 | unit LevSpeicherung; |
2 | 2 | ||
3 | interface |
3 | interface |
4 | 4 | ||
5 | uses |
5 | uses |
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, |
6 | Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, |
7 | StdCtrls, ExtCtrls, Spin, ComCtrls; |
7 | StdCtrls, ExtCtrls, Spin, ComCtrls; |
8 | 8 | ||
9 | type |
9 | type |
10 | TSpeicherungForm = class(TForm) |
10 | TSpeicherungForm = class(TForm) |
11 | Bevel1: TBevel; |
11 | Bevel1: TBevel; |
12 | LadenBtn: TButton; |
12 | LadenBtn: TButton; |
13 | LoeschenBtn: TButton; |
13 | LoeschenBtn: TButton; |
14 | AktualisierenBtn: TButton; |
14 | AktualisierenBtn: TButton; |
15 | SpeichernBtn: TButton; |
15 | SpeichernBtn: TButton; |
16 | AbbrechenBtn: TButton; |
16 | AbbrechenBtn: TButton; |
17 | LevelListBox: TListBox; |
17 | LevelListBox: TListBox; |
18 | Label2: TLabel; |
18 | Label2: TLabel; |
19 | Label3: TLabel; |
19 | Label3: TLabel; |
20 | Label1: TLabel; |
20 | Label1: TLabel; |
21 | ElPanel1: TPanel; |
21 | ElPanel1: TPanel; |
22 | li3a: TLabel; |
22 | li3a: TLabel; |
23 | li1b: TLabel; |
23 | li1b: TLabel; |
24 | li1a: TLabel; |
24 | li1a: TLabel; |
25 | li2b: TLabel; |
25 | li2b: TLabel; |
26 | li2a: TLabel; |
26 | li2a: TLabel; |
27 | li3b: TLabel; |
27 | li3b: TLabel; |
28 | liu: TLabel; |
28 | liu: TLabel; |
29 | liw: TLabel; |
29 | liw: TLabel; |
30 | SpinEditEdt: TEdit; |
30 | SpinEditEdt: TEdit; |
31 | SpinEdit: TUpDown; |
31 | SpinEdit: TUpDown; |
32 | procedure LoeschenBtnClick(Sender: TObject); |
32 | procedure LoeschenBtnClick(Sender: TObject); |
33 | procedure LadenBtnClick(Sender: TObject); |
33 | procedure LadenBtnClick(Sender: TObject); |
34 | procedure SpeichernBtnClick(Sender: TObject); |
34 | procedure SpeichernBtnClick(Sender: TObject); |
35 | procedure LevelListBoxClick(Sender: TObject); |
35 | procedure LevelListBoxClick(Sender: TObject); |
36 | procedure Button4Click(Sender: TObject); |
36 | procedure Button4Click(Sender: TObject); |
37 | procedure FormShow(Sender: TObject); |
37 | procedure FormShow(Sender: TObject); |
38 | procedure DsFancyButton2Click(Sender: TObject); |
38 | procedure DsFancyButton2Click(Sender: TObject); |
39 | procedure AbbrechenBtnClick(Sender: TObject); |
39 | procedure AbbrechenBtnClick(Sender: TObject); |
40 | procedure LevelNameChange(Sender: TObject); |
40 | procedure LevelNameChange(Sender: TObject); |
41 | procedure LevelListBoxDblClick(Sender: TObject); |
41 | procedure LevelListBoxDblClick(Sender: TObject); |
42 | procedure FormHide(Sender: TObject); |
42 | procedure FormHide(Sender: TObject); |
43 | procedure SpinEditClick(Sender: TObject; Button: TUDBtnType); |
43 | procedure SpinEditClick(Sender: TObject; Button: TUDBtnType); |
44 | procedure SpinEditEdtKeyPress(Sender: TObject; var Key: Char); |
44 | procedure SpinEditEdtKeyPress(Sender: TObject; var Key: Char); |
45 | procedure SpinEditEdtChange(Sender: TObject); |
45 | procedure SpinEditEdtChange(Sender: TObject); |
46 | public |
46 | public |
47 | procedure SearchLevels; |
47 | procedure SearchLevels; |
48 | function RightStr(str: string; count: integer): string; |
48 | function RightStr(str: string; count: integer): string; |
49 | function Filter(n: integer; s: string): string; |
49 | function Filter(n: integer; s: string): string; |
50 | end; |
50 | end; |
51 | 51 | ||
52 | var |
52 | var |
53 | SpeicherungForm: TSpeicherungForm; |
53 | SpeicherungForm: TSpeicherungForm; |
54 | 54 | ||
55 | const |
- | |
56 | FCompVersion = '1.0'; |
- | |
57 | - | ||
58 | implementation |
55 | implementation |
59 | 56 | ||
60 | uses |
57 | uses |
61 | LevMain; |
58 | Global, LevMain; |
62 | 59 | ||
63 | {$R *.DFM} |
60 | {$R *.DFM} |
64 | 61 | ||
65 | procedure TSpeicherungForm.SearchLevels; |
62 | procedure TSpeicherungForm.SearchLevels; |
66 | var |
63 | var |
67 | {sr: TSearchRec; |
64 | {sr: TSearchRec; |
68 | res: integer;} |
65 | res: integer;} |
69 | i: integer; |
66 | i: integer; |
70 | begin |
67 | begin |
71 | //SpinEdit.Value := 1; |
68 | //SpinEdit.Value := 1; |
72 | LevelListBox.items.clear; |
69 | LevelListBox.items.clear; |
73 | li1a.visible := false; |
70 | li1a.visible := false; |
74 | li2a.visible := false; |
71 | li2a.visible := false; |
75 | li3a.visible := false; |
72 | li3a.visible := false; |
76 | li1b.visible := false; |
73 | li1b.visible := false; |
77 | li2b.visible := false; |
74 | li2b.visible := false; |
78 | li3b.visible := false; |
75 | li3b.visible := false; |
79 | liw.visible := true; |
76 | liw.visible := true; |
80 | LadenBtn.enabled := false; |
77 | LadenBtn.enabled := false; |
81 | LoeschenBtn.enabled := false; |
78 | LoeschenBtn.enabled := false; |
82 | {res := FindFirst(mainform.fdirectory+'Levels\*.lev', 0, sr); |
79 | {res := FindFirst(mainform.fdirectory+'Levels\*.lev', 0, sr); |
83 | try |
80 | try |
84 | while (res = 0) do |
81 | while (res = 0) do |
85 | begin |
82 | begin |
86 | if (sr.name <> '.') and (sr.name <> '..') then |
83 | if (sr.name <> '.') and (sr.name <> '..') then |
87 | LevelListBox.items.Add(copy(sr.Name, 0, length(sr.name)-4)); |
84 | LevelListBox.items.Add(copy(sr.Name, 0, length(sr.name)-4)); |
88 | res := FindNext(sr); |
85 | res := FindNext(sr); |
89 | end; |
86 | end; |
90 | finally |
87 | finally |
91 | FindClose(sr); |
88 | FindClose(sr); |
92 | end;} |
89 | end;} |
93 | for i := 1 to 9999 do |
90 | for i := 1 to 9999 do |
94 | begin |
91 | begin |
95 | if fileexists(mainform.fdirectory+'Levels\Level '+inttostr(i)+'.lev') then |
92 | if fileexists(fdirectory+'Levels\Level '+inttostr(i)+'.lev') then |
96 | LevelListBox.items.Add('Level ' + inttostr(i)); |
93 | LevelListBox.items.Add('Level ' + inttostr(i)); |
97 | end; |
94 | end; |
98 | end; |
95 | end; |
99 | 96 | ||
100 | procedure TSpeicherungForm.LoeschenBtnClick(Sender: TObject); |
97 | procedure TSpeicherungForm.LoeschenBtnClick(Sender: TObject); |
101 | var |
98 | var |
102 | Markiert: boolean; |
99 | Markiert: boolean; |
103 | i: integer; |
100 | i: integer; |
104 | begin |
101 | begin |
105 | Markiert := false; |
102 | Markiert := false; |
106 | for i := 0 to LevelListBox.items.Count-1 do |
103 | for i := 0 to LevelListBox.items.Count-1 do |
107 | begin |
104 | begin |
108 | if LevelListBox.Selected[i] then Markiert := true; |
105 | if LevelListBox.Selected[i] then Markiert := true; |
109 | end; |
106 | end; |
110 | if not Markiert then exit; |
107 | if not Markiert then exit; |
111 | if MessageDlg('Dieses Level wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then |
108 | if MessageDlg('Dieses Level wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then |
112 | begin |
109 | begin |
113 | li1a.visible := false; |
110 | li1a.visible := false; |
114 | li2a.visible := false; |
111 | li2a.visible := false; |
115 | li3a.visible := false; |
112 | li3a.visible := false; |
116 | li1b.visible := false; |
113 | li1b.visible := false; |
117 | li2b.visible := false; |
114 | li2b.visible := false; |
118 | li3b.visible := false; |
115 | li3b.visible := false; |
119 | liu.visible := false; |
116 | liu.visible := false; |
120 | liw.visible := true; |
117 | liw.visible := true; |
121 | LadenBtn.enabled := false; |
118 | LadenBtn.enabled := false; |
122 | LoeschenBtn.enabled := false; |
119 | LoeschenBtn.enabled := false; |
123 | deletefile(mainform.FDirectory+'Levels\'+ |
120 | deletefile(FDirectory+'Levels\'+ |
124 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
121 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
125 | SearchLevels; |
122 | SearchLevels; |
126 | end; |
123 | end; |
127 | end; |
124 | end; |
128 | 125 | ||
129 | procedure TSpeicherungForm.LadenBtnClick(Sender: TObject); |
126 | procedure TSpeicherungForm.LadenBtnClick(Sender: TObject); |
130 | var |
127 | var |
131 | Markiert: boolean; |
128 | Markiert: boolean; |
132 | i, TempArtMain, TempLiveMain: integer; |
129 | i, TempArtMain, TempLiveMain: integer; |
133 | SavGame: textfile; |
130 | SavGame: textfile; |
134 | Ergebnis: array[1..5] of string; |
131 | Ergebnis: array[1..5] of string; |
135 | begin |
132 | begin |
136 | Markiert := false; |
133 | Markiert := false; |
137 | for i := 0 to LevelListBox.items.Count-1 do |
134 | for i := 0 to LevelListBox.items.Count-1 do |
138 | begin |
135 | begin |
139 | if LevelListBox.Selected[i] then Markiert := true; |
136 | if LevelListBox.Selected[i] then Markiert := true; |
140 | end; |
137 | end; |
141 | if not Markiert then exit; |
138 | if not Markiert then exit; |
142 | if LevelListBox.items.count = 0 then |
139 | if LevelListBox.items.count = 0 then |
143 | begin |
140 | begin |
144 | li1a.visible := false; |
141 | li1a.visible := false; |
145 | li2a.visible := false; |
142 | li2a.visible := false; |
146 | li3a.visible := false; |
143 | li3a.visible := false; |
147 | li1b.visible := false; |
144 | li1b.visible := false; |
148 | li2b.visible := false; |
145 | li2b.visible := false; |
149 | li3b.visible := false; |
146 | li3b.visible := false; |
150 | liw.visible := true; |
147 | liw.visible := true; |
151 | LadenBtn.enabled := false; |
148 | LadenBtn.enabled := false; |
152 | LoeschenBtn.enabled := false; |
149 | LoeschenBtn.enabled := false; |
153 | end; |
150 | end; |
154 | // Da Button bei ungültigen Level deaktiviert wird, ist das nicht mehr nötig. |
151 | // Da Button bei ungültigen Level deaktiviert wird, ist das nicht mehr nötig. |
155 | {if liu.visible or (LevelListBox.items.count=0) then |
152 | {if liu.visible or (LevelListBox.items.count=0) then |
156 | exit;} |
153 | exit;} |
157 | // Vorbereiten |
154 | // Vorbereiten |
158 | MainForm.DestroyLevel; |
155 | MainForm.DestroyLevel; |
159 | MainForm.LevChanged := false; |
156 | MainForm.LevChanged := false; |
160 | // Öffnen |
157 | // Öffnen |
161 | AssignFile(SavGame, mainform.FDirectory+'Levels\'+ |
158 | AssignFile(SavGame, FDirectory+'Levels\'+ |
162 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
159 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
163 | Reset(SavGame); |
160 | Reset(SavGame); |
164 | // Laden |
161 | // Laden |
165 | ReadLN(SavGame); // --> Copyrightinfo |
162 | ReadLN(SavGame); // --> Copyrightinfo |
166 | ReadLN(SavGame); // --> Copyrightinfo |
163 | ReadLN(SavGame); // --> Copyrightinfo |
167 | ReadLN(SavGame, Ergebnis[5]); // --> Länge der Karte |
164 | ReadLN(SavGame, Ergebnis[5]); // --> Länge der Karte |
168 | MainForm.ScrollBar.Max := strtoint(Ergebnis[5]); |
165 | MainForm.ScrollBar.Max := strtoint(Ergebnis[5]); |
169 | MainForm.Enemys.Clear; |
166 | MainForm.Enemys.Clear; |
170 | TempArtMain := MainForm.ArtChecked; |
167 | TempArtMain := MainForm.ArtChecked; |
171 | TempLiveMain := MainForm.LiveEdit; |
168 | TempLiveMain := MainForm.LiveEdit; |
172 | while not seekEoF(SavGame) do |
169 | while not seekEoF(SavGame) do |
173 | begin |
170 | begin |
174 | ReadLN(SavGame, Ergebnis[3]); |
171 | ReadLN(SavGame, Ergebnis[3]); |
175 | ReadLN(SavGame, Ergebnis[1]); |
172 | ReadLN(SavGame, Ergebnis[1]); |
176 | ReadLN(SavGame, Ergebnis[2]); |
173 | ReadLN(SavGame, Ergebnis[2]); |
177 | ReadLN(SavGame, Ergebnis[4]); |
174 | ReadLN(SavGame, Ergebnis[4]); |
178 | MainForm.EnemyAdd(strtoint(Ergebnis[1]), strtoint(Ergebnis[2]), strtoint(Ergebnis[3]), strtoint(Ergebnis[4])); |
175 | MainForm.EnemyAdd(strtoint(Ergebnis[1]), strtoint(Ergebnis[2]), strtoint(Ergebnis[3]), strtoint(Ergebnis[4])); |
179 | MainForm.ArtChecked := strtoint(Ergebnis[3]); |
176 | MainForm.ArtChecked := strtoint(Ergebnis[3]); |
180 | MainForm.LiveEdit := strtoint(Ergebnis[4]); |
177 | MainForm.LiveEdit := strtoint(Ergebnis[4]); |
181 | MainForm.EnemyCreate(strtoint(Ergebnis[1]), strtoint(Ergebnis[2])); |
178 | MainForm.EnemyCreate(strtoint(Ergebnis[1]), strtoint(Ergebnis[2])); |
182 | inc(MainForm.NumEnemys); |
179 | inc(MainForm.NumEnemys); |
183 | if Ergebnis[3] = '7' then MainForm.Boss := true; |
180 | if Ergebnis[3] = '7' then MainForm.Boss := true; |
184 | end; |
181 | end; |
185 | MainForm.LiveEdit := TempLiveMain; |
182 | MainForm.LiveEdit := TempLiveMain; |
186 | MainForm.ArtChecked := TempArtMain; |
183 | MainForm.ArtChecked := TempArtMain; |
187 | // Schließen |
184 | // Schließen |
188 | CloseFile(SavGame); |
185 | CloseFile(SavGame); |
189 | // Nacharbeiten |
186 | // Nacharbeiten |
190 | MainForm.AnzeigeAct; |
187 | MainForm.AnzeigeAct; |
191 | close; |
188 | close; |
192 | end; |
189 | end; |
193 | 190 | ||
194 | function TSpeicherungForm.RightStr(str: string; count: integer): string; |
191 | function TSpeicherungForm.RightStr(str: string; count: integer): string; |
195 | begin |
192 | begin |
196 | result := copy(str, length(str)-(count-1), count); |
193 | result := copy(str, length(str)-(count-1), count); |
197 | end; |
194 | end; |
198 | 195 | ||
199 | function TSpeicherungForm.Filter(n: integer; s: string): string; |
196 | function TSpeicherungForm.Filter(n: integer; s: string): string; |
200 | var |
197 | var |
201 | i, last: integer; |
198 | i, last: integer; |
202 | start, start2: boolean; |
199 | start, start2: boolean; |
203 | temp: string; |
200 | temp: string; |
204 | begin |
201 | begin |
205 | last := 0; |
202 | last := 0; |
206 | start := false; |
203 | start := false; |
207 | start2 := false; |
204 | start2 := false; |
208 | temp := ''; |
205 | temp := ''; |
209 | if n = 1 then |
206 | if n = 1 then |
210 | begin |
207 | begin |
211 | for i := 1 to length(s)+1 do |
208 | for i := 1 to length(s)+1 do |
212 | begin |
209 | begin |
213 | if copy(s, i, 1) = '-' then |
210 | if copy(s, i, 1) = '-' then |
214 | begin |
211 | begin |
215 | last := i; |
212 | last := i; |
216 | break; |
213 | break; |
217 | end; |
214 | end; |
218 | end; |
215 | end; |
219 | temp := copy(s, 1, last-1); |
216 | temp := copy(s, 1, last-1); |
220 | end; |
217 | end; |
221 | if n = 2 then |
218 | if n = 2 then |
222 | begin |
219 | begin |
223 | for i := 1 to length(s)+1 do |
220 | for i := 1 to length(s)+1 do |
224 | begin |
221 | begin |
225 | if start2 then start := true; |
222 | if start2 then start := true; |
226 | if copy(s, i, 1) = '-' then start2 := true; |
223 | if copy(s, i, 1) = '-' then start2 := true; |
227 | if (copy(s, i, 1) = ':') and start then break; |
224 | if (copy(s, i, 1) = ':') and start then break; |
228 | if start then temp := temp + copy(s, i, 1) |
225 | if start then temp := temp + copy(s, i, 1) |
229 | end; |
226 | end; |
230 | end; |
227 | end; |
231 | if n = 3 then |
228 | if n = 3 then |
232 | begin |
229 | begin |
233 | for i := 1 to length(s)+1 do |
230 | for i := 1 to length(s)+1 do |
234 | begin |
231 | begin |
235 | if start2 then start := true; |
232 | if start2 then start := true; |
236 | if copy(s, i, 1) = ':' then start2 := true; |
233 | if copy(s, i, 1) = ':' then start2 := true; |
237 | if (copy(s, i, 1) = '(') and start then break; |
234 | if (copy(s, i, 1) = '(') and start then break; |
238 | if start then temp := temp + copy(s, i, 1) |
235 | if start then temp := temp + copy(s, i, 1) |
239 | end; |
236 | end; |
240 | end; |
237 | end; |
241 | if n = 4 then |
238 | if n = 4 then |
242 | begin |
239 | begin |
243 | for i := 1 to length(s)+1 do |
240 | for i := 1 to length(s)+1 do |
244 | begin |
241 | begin |
245 | if start2 then start := true; |
242 | if start2 then start := true; |
246 | if copy(s, i, 1) = '(' then start2 := true; |
243 | if copy(s, i, 1) = '(' then start2 := true; |
247 | if (copy(s, i, 1) = ')') and start then break; |
244 | if (copy(s, i, 1) = ')') and start then break; |
248 | if start then temp := temp + copy(s, i, 1) |
245 | if start then temp := temp + copy(s, i, 1) |
249 | end; |
246 | end; |
250 | end; |
247 | end; |
251 | result := temp; |
248 | result := temp; |
252 | end; |
249 | end; |
253 | 250 | ||
254 | procedure TSpeicherungForm.SpeichernBtnClick(Sender: TObject); |
251 | procedure TSpeicherungForm.SpeichernBtnClick(Sender: TObject); |
255 | var |
252 | var |
256 | SavGame: textfile; |
253 | SavGame: textfile; |
257 | i, j: integer; |
254 | i, j: integer; |
258 | puffer: string; |
255 | puffer: string; |
259 | begin |
256 | begin |
260 | if mainform.Enemys.count = 0 then |
257 | if mainform.Enemys.count = 0 then |
261 | begin |
258 | begin |
262 | MessageDlg('Das Level ist leer!', mtError, [mbOK], 0); |
259 | MessageDlg('Das Level ist leer!', mtError, [mbOK], 0); |
263 | SpinEdit.SetFocus; |
260 | SpinEdit.SetFocus; |
264 | exit; |
261 | exit; |
265 | end; |
262 | end; |
266 | {for i := 0 to length(LevelName.text) do |
263 | {for i := 0 to length(LevelName.text) do |
267 | begin |
264 | begin |
268 | if (copy(LevelName.text, i, 1) = '\') or |
265 | if (copy(LevelName.text, i, 1) = '\') or |
269 | (copy(LevelName.text, i, 1) = '/') or |
266 | (copy(LevelName.text, i, 1) = '/') or |
270 | (copy(LevelName.text, i, 1) = ':') or |
267 | (copy(LevelName.text, i, 1) = ':') or |
271 | (copy(LevelName.text, i, 1) = '*') or |
268 | (copy(LevelName.text, i, 1) = '*') or |
272 | (copy(LevelName.text, i, 1) = '?') or |
269 | (copy(LevelName.text, i, 1) = '?') or |
273 | (copy(LevelName.text, i, 1) = '"') or |
270 | (copy(LevelName.text, i, 1) = '"') or |
274 | (copy(LevelName.text, i, 1) = '<') or |
271 | (copy(LevelName.text, i, 1) = '<') or |
275 | (copy(LevelName.text, i, 1) = '>') or |
272 | (copy(LevelName.text, i, 1) = '>') or |
276 | (copy(LevelName.text, i, 1) = '|') then |
273 | (copy(LevelName.text, i, 1) = '|') then |
277 | begin |
274 | begin |
278 | MessageDlg('Dies ist kein gültiger Levelname!', mtError, [mbOK], 0); |
275 | MessageDlg('Dies ist kein gültiger Levelname!', mtError, [mbOK], 0); |
279 | LevelName.SetFocus; |
276 | LevelName.SetFocus; |
280 | exit; |
277 | exit; |
281 | end; |
278 | end; |
282 | end;} |
279 | end;} |
283 | if LevelListBox.items.IndexOf('Level ' + inttostr(SpinEdit.Position)) > -1 then |
280 | if LevelListBox.items.IndexOf('Level ' + inttostr(SpinEdit.Position)) > -1 then |
284 | begin |
281 | begin |
285 | if MessageDlg('Level ist bereits vorhanden. Ersetzen?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then |
282 | if MessageDlg('Level ist bereits vorhanden. Ersetzen?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then |
286 | exit; |
283 | exit; |
287 | end; |
284 | end; |
288 | // Öffnen oder erstellen |
285 | // Öffnen oder erstellen |
289 | AssignFile(SavGame, mainform.FDirectory+'Levels\Level '+inttostr(SpinEdit.Position)+'.lev'); |
286 | AssignFile(SavGame, FDirectory+'Levels\Level '+inttostr(SpinEdit.Position)+'.lev'); |
290 | Rewrite(SavGame); |
287 | Rewrite(SavGame); |
291 | // Sortierung |
288 | // Sortierung |
292 | for j := 0 to mainform.enemys.Count - 2 do |
289 | for j := 0 to mainform.enemys.Count - 2 do |
293 | begin |
290 | begin |
294 | for i := 0 to mainform.enemys.Count - 2 do |
291 | for i := 0 to mainform.enemys.Count - 2 do |
295 | begin |
292 | begin |
296 | if strtoint(filter(1, mainform.enemys.Strings[i])) > strtoint(filter(1, mainform.enemys.Strings[i + 1])) then |
293 | if strtoint(filter(1, mainform.enemys.Strings[i])) > strtoint(filter(1, mainform.enemys.Strings[i + 1])) then |
297 | begin |
294 | begin |
298 | puffer := mainform.enemys.Strings[i]; |
295 | puffer := mainform.enemys.Strings[i]; |
299 | mainform.enemys.Strings[i] := mainform.enemys.Strings[i + 1]; |
296 | mainform.enemys.Strings[i] := mainform.enemys.Strings[i + 1]; |
300 | mainform.enemys.Strings[i + 1] := puffer; |
297 | mainform.enemys.Strings[i + 1] := puffer; |
301 | end; |
298 | end; |
302 | end; |
299 | end; |
303 | end; |
300 | end; |
304 | // Speichern |
301 | // Speichern |
305 | WriteLN(SavGame, '; SpaceMission ' + FCompVersion); |
302 | WriteLN(SavGame, '; SpaceMission ' + FCompVersion); |
306 | WriteLN(SavGame, '; LEV-File'); |
303 | WriteLN(SavGame, '; LEV-File'); |
307 | WriteLN(SavGame, inttostr(MainForm.ScrollBar.Max)); // --> Länge der Karte |
304 | WriteLN(SavGame, inttostr(MainForm.ScrollBar.Max)); // --> Länge der Karte |
308 | for i := 0 to mainform.enemys.count-1 do |
305 | for i := 0 to mainform.enemys.count-1 do |
309 | begin |
306 | begin |
310 | WriteLN(SavGame, filter(3, mainform.enemys.Strings[i])); |
307 | WriteLN(SavGame, filter(3, mainform.enemys.Strings[i])); |
311 | WriteLN(SavGame, filter(1, mainform.enemys.Strings[i])); |
308 | WriteLN(SavGame, filter(1, mainform.enemys.Strings[i])); |
312 | WriteLN(SavGame, filter(2, mainform.enemys.Strings[i])); |
309 | WriteLN(SavGame, filter(2, mainform.enemys.Strings[i])); |
313 | WriteLN(SavGame, filter(4, mainform.enemys.Strings[i])); |
310 | WriteLN(SavGame, filter(4, mainform.enemys.Strings[i])); |
314 | end; |
311 | end; |
315 | // Schließen |
312 | // Schließen |
316 | CloseFile(SavGame); |
313 | CloseFile(SavGame); |
317 | // Nacharbeiten |
314 | // Nacharbeiten |
318 | MainForm.LevChanged := false; |
315 | MainForm.LevChanged := false; |
319 | MainForm.AnzeigeAct; |
316 | MainForm.AnzeigeAct; |
320 | SearchLevels; |
317 | SearchLevels; |
321 | end; |
318 | end; |
322 | 319 | ||
323 | procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject); |
320 | procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject); |
324 | var |
321 | var |
325 | Ergebnis, boss, l, temp: string; |
322 | Ergebnis, boss, l, temp: string; |
326 | SavGame: textfile; |
323 | SavGame: textfile; |
327 | x, a: integer; |
324 | x, a: integer; |
328 | begin |
325 | begin |
329 | li1a.visible := false; |
326 | li1a.visible := false; |
330 | li2a.visible := false; |
327 | li2a.visible := false; |
331 | li3a.visible := false; |
328 | li3a.visible := false; |
332 | li1b.visible := false; |
329 | li1b.visible := false; |
333 | li2b.visible := false; |
330 | li2b.visible := false; |
334 | li3b.visible := false; |
331 | li3b.visible := false; |
335 | liu.visible := false; |
332 | liu.visible := false; |
336 | liw.visible := false; |
333 | liw.visible := false; |
337 | if (LevelListBox.items.count=0) or (LevelListBox.itemindex = -1) then |
334 | if (LevelListBox.items.count=0) or (LevelListBox.itemindex = -1) then |
338 | begin |
335 | begin |
339 | ladenbtn.enabled := false; |
336 | ladenbtn.enabled := false; |
340 | loeschenbtn.enabled := false; |
337 | loeschenbtn.enabled := false; |
341 | liw.visible := true; |
338 | liw.visible := true; |
342 | exit; |
339 | exit; |
343 | end; |
340 | end; |
344 | temp := LevelListBox.Items.strings[LevelListBox.itemindex]; |
341 | temp := LevelListBox.Items.strings[LevelListBox.itemindex]; |
345 | SpinEdit.Position := strtoint(RightStr(temp, length(temp)-6)); |
342 | SpinEdit.Position := strtoint(RightStr(temp, length(temp)-6)); |
346 | AssignFile(SavGame, mainform.FDirectory+'Levels\'+ |
343 | AssignFile(SavGame, FDirectory+'Levels\'+ |
347 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
344 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
348 | Reset(SavGame); |
345 | Reset(SavGame); |
349 | ReadLN(SavGame, Ergebnis); |
346 | ReadLN(SavGame, Ergebnis); |
350 | if Ergebnis <> '; SpaceMission '+FCompVersion then |
347 | if Ergebnis <> '; SpaceMission '+FCompVersion then |
351 | begin |
348 | begin |
352 | liu.visible := true; |
349 | liu.visible := true; |
353 | LadenBtn.enabled := false; |
350 | LadenBtn.enabled := false; |
354 | CloseFile(SavGame); |
351 | CloseFile(SavGame); |
355 | exit; |
352 | exit; |
356 | end; |
353 | end; |
357 | ReadLN(SavGame, Ergebnis); |
354 | ReadLN(SavGame, Ergebnis); |
358 | if Ergebnis <> '; LEV-File' then |
355 | if Ergebnis <> '; LEV-File' then |
359 | begin |
356 | begin |
360 | liu.visible := true; |
357 | liu.visible := true; |
361 | LadenBtn.enabled := false; |
358 | LadenBtn.enabled := false; |
362 | CloseFile(SavGame); |
359 | CloseFile(SavGame); |
363 | exit; |
360 | exit; |
364 | end; |
361 | end; |
365 | ReadLN(SavGame, l); |
362 | ReadLN(SavGame, l); |
366 | x := 0; |
363 | x := 0; |
367 | a := 0; |
364 | a := 0; |
368 | boss := 'Nein'; |
365 | boss := 'Nein'; |
369 | while not SeekEOF(SavGame) do |
366 | while not SeekEOF(SavGame) do |
370 | begin |
367 | begin |
371 | ReadLN(SavGame, Ergebnis); |
368 | ReadLN(SavGame, Ergebnis); |
372 | inc(a); |
369 | inc(a); |
373 | if a = 5 then a := 1; |
370 | if a = 5 then a := 1; |
374 | if (a = 1) and (Ergebnis = '7') then boss := 'Ja'; |
371 | if (a = 1) and (Ergebnis = '7') then boss := 'Ja'; |
375 | inc(x); |
372 | inc(x); |
376 | end; |
373 | end; |
377 | CloseFile(SavGame); |
374 | CloseFile(SavGame); |
378 | if a <> 4 then |
375 | if a <> 4 then |
379 | begin |
376 | begin |
380 | liu.visible := true; |
377 | liu.visible := true; |
381 | LadenBtn.enabled := false; |
378 | LadenBtn.enabled := false; |
382 | end |
379 | end |
383 | else |
380 | else |
384 | begin |
381 | begin |
385 | li1a.visible := true; |
382 | li1a.visible := true; |
386 | li2a.visible := true; |
383 | li2a.visible := true; |
387 | li3a.visible := true; |
384 | li3a.visible := true; |
388 | li1b.visible := true; |
385 | li1b.visible := true; |
389 | li2b.visible := true; |
386 | li2b.visible := true; |
390 | li3b.visible := true; |
387 | li3b.visible := true; |
391 | LadenBtn.enabled := true; |
388 | LadenBtn.enabled := true; |
392 | LoeschenBtn.enabled := true; |
389 | LoeschenBtn.enabled := true; |
393 | li1b.caption := inttostr(trunc(x / 4)); |
390 | li1b.caption := inttostr(trunc(x / 4)); |
394 | li2b.caption := boss; |
391 | li2b.caption := boss; |
395 | li3b.caption := l + ' Felder'; |
392 | li3b.caption := l + ' Felder'; |
396 | end; |
393 | end; |
397 | end; |
394 | end; |
398 | 395 | ||
399 | procedure TSpeicherungForm.Button4Click(Sender: TObject); |
396 | procedure TSpeicherungForm.Button4Click(Sender: TObject); |
400 | begin |
397 | begin |
401 | close; |
398 | close; |
402 | end; |
399 | end; |
403 | 400 | ||
404 | procedure TSpeicherungForm.FormShow(Sender: TObject); |
401 | procedure TSpeicherungForm.FormShow(Sender: TObject); |
405 | begin |
402 | begin |
406 | mainform.dxtimer.enabled := false; |
403 | mainform.dxtimer.enabled := false; |
407 | SearchLevels; |
404 | SearchLevels; |
408 | end; |
405 | end; |
409 | 406 | ||
410 | procedure TSpeicherungForm.DsFancyButton2Click(Sender: TObject); |
407 | procedure TSpeicherungForm.DsFancyButton2Click(Sender: TObject); |
411 | begin |
408 | begin |
412 | SearchLevels; |
409 | SearchLevels; |
413 | end; |
410 | end; |
414 | 411 | ||
415 | procedure TSpeicherungForm.AbbrechenBtnClick(Sender: TObject); |
412 | procedure TSpeicherungForm.AbbrechenBtnClick(Sender: TObject); |
416 | begin |
413 | begin |
417 | close; |
414 | close; |
418 | end; |
415 | end; |
419 | 416 | ||
420 | procedure TSpeicherungForm.LevelNameChange(Sender: TObject); |
417 | procedure TSpeicherungForm.LevelNameChange(Sender: TObject); |
421 | begin |
418 | begin |
422 | {...} |
419 | {...} |
423 | end; |
420 | end; |
424 | 421 | ||
425 | procedure TSpeicherungForm.LevelListBoxDblClick(Sender: TObject); |
422 | procedure TSpeicherungForm.LevelListBoxDblClick(Sender: TObject); |
426 | begin |
423 | begin |
427 | LadenBtn.click; |
424 | LadenBtn.click; |
428 | end; |
425 | end; |
429 | 426 | ||
430 | procedure TSpeicherungForm.FormHide(Sender: TObject); |
427 | procedure TSpeicherungForm.FormHide(Sender: TObject); |
431 | begin |
428 | begin |
432 | mainform.dxtimer.enabled := true; |
429 | mainform.dxtimer.enabled := true; |
433 | end; |
430 | end; |
434 | 431 | ||
435 | procedure TSpeicherungForm.SpinEditClick(Sender: TObject; |
432 | procedure TSpeicherungForm.SpinEditClick(Sender: TObject; |
436 | Button: TUDBtnType); |
433 | Button: TUDBtnType); |
437 | begin |
434 | begin |
438 | SpinEditEdt.Text := inttostr(SpinEdit.position); |
435 | SpinEditEdt.Text := inttostr(SpinEdit.position); |
439 | end; |
436 | end; |
440 | 437 | ||
441 | procedure TSpeicherungForm.SpinEditEdtKeyPress(Sender: TObject; |
438 | procedure TSpeicherungForm.SpinEditEdtKeyPress(Sender: TObject; |
442 | var Key: Char); |
439 | var Key: Char); |
443 | begin |
440 | begin |
444 | if not (Key in [#13, #08, '0'..'9']) then |
441 | if not (Key in [#13, #08, '0'..'9']) then |
445 | Key := #0; |
442 | Key := #0; |
446 | end; |
443 | end; |
447 | 444 | ||
448 | procedure TSpeicherungForm.SpinEditEdtChange(Sender: TObject); |
445 | procedure TSpeicherungForm.SpinEditEdtChange(Sender: TObject); |
449 | begin |
446 | begin |
450 | SpinEdit.Position := strtoint(SpinEditEdt.text); |
447 | SpinEdit.Position := strtoint(SpinEditEdt.text); |
451 | end; |
448 | end; |
452 | 449 | ||
453 | end. |
450 | end. |
454 | 451 | ||
455 | 452 |