Rev 6 | Rev 15 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6 | Rev 14 | ||
---|---|---|---|
Line 53... | Line 53... | ||
53 | SpeicherungForm: TSpeicherungForm; |
53 | SpeicherungForm: TSpeicherungForm; |
54 | 54 | ||
55 | implementation |
55 | implementation |
56 | 56 | ||
57 | uses |
57 | uses |
58 | Global, LevMain; |
58 | Global, LevMain, ComLevelReader; |
59 | 59 | ||
60 | {$R *.DFM} |
60 | {$R *.DFM} |
61 | 61 | ||
62 | procedure TSpeicherungForm.SearchLevels; |
62 | procedure TSpeicherungForm.SearchLevels; |
63 | var |
63 | var |
Line 125... | Line 125... | ||
125 | 125 | ||
126 | procedure TSpeicherungForm.LadenBtnClick(Sender: TObject); |
126 | procedure TSpeicherungForm.LadenBtnClick(Sender: TObject); |
127 | var |
127 | var |
128 | Markiert: boolean; |
128 | Markiert: boolean; |
129 | i, TempArtMain, TempLiveMain: integer; |
129 | i, TempArtMain, TempLiveMain: integer; |
130 | SavGame: textfile; |
130 | LevelData: TLevelData; |
131 | Ergebnis: array[1..5] of string; |
- | |
132 | begin |
131 | begin |
133 | Markiert := false; |
132 | Markiert := false; |
134 | for i := 0 to LevelListBox.items.Count-1 do |
133 | for i := 0 to LevelListBox.items.Count-1 do |
135 | begin |
134 | begin |
136 | if LevelListBox.Selected[i] then Markiert := true; |
135 | if LevelListBox.Selected[i] then Markiert := true; |
Line 152... | Line 151... | ||
152 | {if liu.visible or (LevelListBox.items.count=0) then |
151 | {if liu.visible or (LevelListBox.items.count=0) then |
153 | exit;} |
152 | exit;} |
154 | // Vorbereiten |
153 | // Vorbereiten |
155 | MainForm.DestroyLevel; |
154 | MainForm.DestroyLevel; |
156 | MainForm.LevChanged := false; |
155 | MainForm.LevChanged := false; |
157 | // Öffnen |
156 | |
158 | AssignFile(SavGame, FDirectory+'Levels\'+ |
157 | LevelData := TLevelData.Create; |
159 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
- | |
160 | Reset(SavGame); |
- | |
161 | // Laden |
158 | try |
162 | ReadLN(SavGame); // --> Copyrightinfo |
- | |
163 | ReadLN(SavGame); // --> Copyrightinfo |
- | |
164 | ReadLN(SavGame, Ergebnis[5]); // --> Länge der Karte |
159 | LevelData.Load(FDirectory+'Levels\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
165 | MainForm.ScrollBar.Max := strtoint(Ergebnis[5]); |
160 | MainForm.ScrollBar.Max := LevelData.LevelEditorLength; |
166 | MainForm.Enemys.Clear; |
161 | MainForm.Enemys.Clear; |
167 | TempArtMain := MainForm.ArtChecked; |
162 | TempArtMain := MainForm.ArtChecked; |
168 | TempLiveMain := MainForm.LiveEdit; |
163 | TempLiveMain := MainForm.LiveEdit; |
- | 164 | MainForm.NumEnemys := Length(LevelData.EnemyAdventTable); |
|
169 | while not seekEoF(SavGame) do |
165 | for i := 0 to MainForm.NumEnemys-1 do |
170 | begin |
166 | begin |
171 | ReadLN(SavGame, Ergebnis[3]); |
167 | MainForm.EnemyAdd( |
172 | ReadLN(SavGame, Ergebnis[1]); |
168 | LevelData.EnemyAdventTable[i].x, |
173 | ReadLN(SavGame, Ergebnis[2]); |
169 | LevelData.EnemyAdventTable[i].y, |
- | 170 | Ord(LevelData.EnemyAdventTable[i].enemyType), |
|
174 | ReadLN(SavGame, Ergebnis[4]); |
171 | LevelData.EnemyAdventTable[i].lifes |
- | 172 | ); |
|
175 | MainForm.EnemyAdd(strtoint(Ergebnis[1]), strtoint(Ergebnis[2]), strtoint(Ergebnis[3]), strtoint(Ergebnis[4])); |
173 | MainForm.ArtChecked := Ord(LevelData.EnemyAdventTable[i].enemyType); |
176 | MainForm.ArtChecked := strtoint(Ergebnis[3]); |
174 | MainForm.LiveEdit := LevelData.EnemyAdventTable[i].lifes; |
177 | MainForm.LiveEdit := strtoint(Ergebnis[4]); |
175 | MainForm.EnemyCreate( |
178 | MainForm.EnemyCreate(strtoint(Ergebnis[1]), strtoint(Ergebnis[2])); |
176 | LevelData.EnemyAdventTable[i].x, |
179 | inc(MainForm.NumEnemys); |
177 | LevelData.EnemyAdventTable[i].y |
- | 178 | ); |
|
180 | if Ergebnis[3] = '7' then MainForm.Boss := true; |
179 | if LevelData.EnemyAdventTable[i].enemyType = etEnemyBoss then MainForm.Boss := true; |
- | 180 | end; |
|
- | 181 | finally |
|
- | 182 | FreeAndNil(LevelData); |
|
181 | end; |
183 | end; |
182 | MainForm.LiveEdit := TempLiveMain; |
184 | MainForm.LiveEdit := TempLiveMain; |
183 | MainForm.ArtChecked := TempArtMain; |
185 | MainForm.ArtChecked := TempArtMain; |
184 | // Schließen |
- | |
185 | CloseFile(SavGame); |
- | |
186 | // Nacharbeiten |
186 | // Nacharbeiten |
187 | MainForm.AnzeigeAct; |
187 | MainForm.AnzeigeAct; |
188 | close; |
188 | close; |
189 | end; |
189 | end; |
190 | 190 | ||
Line 317... | Line 317... | ||
317 | SearchLevels; |
317 | SearchLevels; |
318 | end; |
318 | end; |
319 | 319 | ||
320 | procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject); |
320 | procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject); |
321 | var |
321 | var |
322 | Ergebnis, boss, l, temp: string; |
322 | LevelData: TLevelData; |
323 | SavGame: textfile; |
323 | boss: boolean; |
324 | x, a: integer; |
324 | i: Integer; |
- | 325 | temp: string; |
|
- | 326 | anzahlEinheiten: integer; |
|
325 | begin |
327 | begin |
326 | li1a.visible := false; |
328 | li1a.visible := false; |
327 | li2a.visible := false; |
329 | li2a.visible := false; |
328 | li3a.visible := false; |
330 | li3a.visible := false; |
329 | li1b.visible := false; |
331 | li1b.visible := false; |
Line 338... | Line 340... | ||
338 | liw.visible := true; |
340 | liw.visible := true; |
339 | exit; |
341 | exit; |
340 | end; |
342 | end; |
341 | temp := LevelListBox.Items.strings[LevelListBox.itemindex]; |
343 | temp := LevelListBox.Items.strings[LevelListBox.itemindex]; |
342 | SpinEdit.Position := strtoint(RightStr(temp, length(temp)-6)); |
344 | SpinEdit.Position := strtoint(RightStr(temp, length(temp)-6)); |
- | 345 | ||
343 | AssignFile(SavGame, FDirectory+'Levels\'+ |
346 | LevelData := TLevelData.Create; |
344 | LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
- | |
345 | Reset(SavGame); |
347 | try |
346 | ReadLN(SavGame, Ergebnis); |
348 | try |
347 | if Ergebnis <> '; SpaceMission '+FCompVersion then |
349 | LevelData.Load(FDirectory+'Levels\'+LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev'); |
348 | begin |
350 | except |
349 | liu.visible := true; |
351 | liu.visible := true; |
350 | LadenBtn.enabled := false; |
352 | LadenBtn.enabled := false; |
351 | CloseFile(SavGame); |
- | |
352 | exit; |
- | |
353 | end; |
353 | end; |
- | 354 | ||
354 | ReadLN(SavGame, Ergebnis); |
355 | boss := false; |
- | 356 | anzahlEinheiten := Length(LevelData.EnemyAdventTable); |
|
355 | if Ergebnis <> '; LEV-File' then |
357 | for i := 0 to anzahlEinheiten - 1 do |
356 | begin |
358 | begin |
357 | liu.visible := true; |
- | |
358 | LadenBtn.enabled := false; |
359 | if LevelData.EnemyAdventTable[i].enemyType = etEnemyBoss then |
359 | CloseFile(SavGame); |
360 | begin |
360 | exit; |
361 | boss := true; |
361 | end; |
362 | end; |
362 | ReadLN(SavGame, l); |
- | |
363 | x := 0; |
- | |
364 | a := 0; |
- | |
365 | boss := 'Nein'; |
- | |
366 | while not SeekEOF(SavGame) do |
- | |
367 | begin |
- | |
368 | ReadLN(SavGame, Ergebnis); |
- | |
369 | inc(a); |
- | |
370 | if a = 5 then a := 1; |
- | |
371 | if (a = 1) and (Ergebnis = '7') then boss := 'Ja'; |
- | |
372 | inc(x); |
- | |
373 | end; |
363 | end; |
374 | CloseFile(SavGame); |
- | |
375 | if a <> 4 then |
- | |
376 | begin |
- | |
377 | liu.visible := true; |
- | |
378 | LadenBtn.enabled := false; |
- | |
379 | end |
364 | |
380 | else |
- | |
381 | begin |
- | |
382 | li1a.visible := true; |
365 | li1a.visible := true; |
383 | li2a.visible := true; |
366 | li2a.visible := true; |
384 | li3a.visible := true; |
367 | li3a.visible := true; |
385 | li1b.visible := true; |
368 | li1b.visible := true; |
386 | li2b.visible := true; |
369 | li2b.visible := true; |
387 | li3b.visible := true; |
370 | li3b.visible := true; |
388 | LadenBtn.enabled := true; |
371 | LadenBtn.enabled := true; |
389 | LoeschenBtn.enabled := true; |
372 | LoeschenBtn.enabled := true; |
390 | li1b.caption := inttostr(trunc(x / 4)); |
373 | li1b.caption := inttostr(anzahlEinheiten); |
- | 374 | if boss then |
|
391 | li2b.caption := boss; |
375 | li2b.caption := 'Ja' |
- | 376 | else |
|
392 | li3b.caption := l + ' Felder'; |
377 | li2b.caption := 'Nein'; |
- | 378 | li3b.caption := IntToStr(LevelData.LevelEditorLength) + ' Felder'; |
|
- | 379 | finally |
|
- | 380 | FreeAndNil(LevelData); |
|
393 | end; |
381 | end; |
394 | end; |
382 | end; |
395 | 383 | ||
396 | procedure TSpeicherungForm.Button4Click(Sender: TObject); |
384 | procedure TSpeicherungForm.Button4Click(Sender: TObject); |
397 | begin |
385 | begin |