Subversion Repositories spacemission

Rev

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