Subversion Repositories spacemission

Rev

Rev 44 | Rev 56 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 44 Rev 51
Line 38... Line 38...
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 FormHide(Sender: TObject);
41
    procedure FormHide(Sender: TObject);
42
    procedure FormCreate(Sender: TObject);
42
    procedure FormCreate(Sender: TObject);
-
 
43
  private
-
 
44
    function GetListBoxSelectedLevelNumber: integer;
43
  public
45
  public
44
    procedure SearchLevels;
46
    procedure SearchLevels;
45
    function RightStr(str: string; count: integer): string;
-
 
46
  end;
47
  end;
47
 
48
 
48
var
49
var
49
  SpeicherungForm: TSpeicherungForm;
50
  SpeicherungForm: TSpeicherungForm;
50
 
51
 
Line 53... Line 54...
53
uses
54
uses
54
  Global, LevMain, ComLevelReader;
55
  Global, LevMain, ComLevelReader;
55
 
56
 
56
{$R *.DFM}
57
{$R *.DFM}
57
 
58
 
-
 
59
resourcestring
-
 
60
  SLevelListBox = 'Level %d';
-
 
61
 
58
procedure TSpeicherungForm.SearchLevels;
62
procedure TSpeicherungForm.SearchLevels;
59
var
63
var
60
  i: integer;
64
  i: integer;
-
 
65
  fil: string;
61
begin
66
begin
62
  //SpinEdit.Value := 1;
67
  //SpinEdit.Value := 1;
63
  LevelListBox.items.clear;
68
  LevelListBox.items.clear;
64
  li1a.visible := false;
69
  li1a.visible := false;
65
  li2a.visible := false;
70
  li2a.visible := false;
66
  li3a.visible := false;
71
  li3a.visible := false;
67
  li1b.visible := false;
72
  li1b.visible := false;
68
  li2b.visible := false;
73
  li2b.visible := false;
69
  li3b.visible := false;
74
  li3b.visible := false;
70
  li4.visible := false;
75
  li4.visible := false;
-
 
76
  liu.Visible := false;
71
  liw.visible := true;
77
  liw.visible := true;
72
  LadenBtn.enabled := false;
78
  LadenBtn.enabled := false;
73
  LoeschenBtn.enabled := false;
79
  LoeschenBtn.enabled := false;
74
  for i := 1 to MaxPossibleLevels do
80
  for i := 1 to MaxPossibleLevels do
75
  begin
81
  begin
76
    if fileexists(GetLevelFileName(i)) then
82
    fil := GetLevelFileName(i, false);
77
      LevelListBox.items.Add(ChangeFileExt(ExtractFileName(GetLevelFileName(i)),''));
83
    if fileexists(fil) then LevelListBox.items.Add(Format(SLevelListBox, [i]));
78
  end;
84
  end;
79
end;
85
end;
80
 
86
 
81
procedure TSpeicherungForm.LoeschenBtnClick(Sender: TObject);
87
procedure TSpeicherungForm.LoeschenBtnClick(Sender: TObject);
-
 
88
var
-
 
89
  fil: string;
82
begin
90
begin
83
  if LevelListBox.ItemIndex = -1 then exit;
91
  if LevelListBox.ItemIndex = -1 then exit;
84
 
92
 
85
  if MessageDlg('Dieses Level wirklich löschen?', mtConfirmation, mbYesNoCancel, 0) = mrYes then
93
  if MessageDlg('Dieses Level wirklich löschen?', mtConfirmation, mbYesNoCancel, 0) = mrYes then
86
  begin
94
  begin
Line 93... Line 101...
93
    li4.visible := false;
101
    li4.visible := false;
94
    liu.visible := false;
102
    liu.visible := false;
95
    liw.visible := true;
103
    liw.visible := true;
96
    LadenBtn.enabled := false;
104
    LadenBtn.enabled := false;
97
    LoeschenBtn.enabled := false;
105
    LoeschenBtn.enabled := false;
98
    deletefile(IncludeTrailingPathDelimiter(ExtractFilePath(GetLevelFileName(1)))+
106
    fil := GetLevelFileName(GetListBoxSelectedLevelNumber,false);
99
      LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
107
    if not fileexists(fil) then raise Exception.Create('Leveldatei nicht gefunden');
-
 
108
    deletefile(fil);
100
    SearchLevels;
109
    SearchLevels;
101
  end;
110
  end;
102
end;
111
end;
103
 
112
 
104
procedure TSpeicherungForm.LadenBtnClick(Sender: TObject);
113
procedure TSpeicherungForm.LadenBtnClick(Sender: TObject);
-
 
114
var
-
 
115
  fil: string;
105
begin
116
begin
106
  if LevelListBox.ItemIndex = -1 then exit;
117
  if LevelListBox.ItemIndex = -1 then exit;
107
 
118
 
108
  if MainForm.LevChanged and (MainForm.LevData.CountEnemies>0) then
119
  if MainForm.LevChanged and (MainForm.LevData.CountEnemies>0) then
109
  begin
120
  begin
Line 114... Line 125...
114
  {if liu.visible or (LevelListBox.items.count=0) then
125
  {if liu.visible or (LevelListBox.items.count=0) then
115
    exit;}
126
    exit;}
116
 
127
 
117
  MainForm.DestroyLevel;
128
  MainForm.DestroyLevel;
118
  MainForm.LevData.RasterErzwingen := true;
129
  MainForm.LevData.RasterErzwingen := true;
119
  MainForm.LevData.LoadFromFile(
130
  fil := GetLevelFileName(GetListBoxSelectedLevelNumber,false);
120
    IncludeTrailingPathDelimiter(ExtractFilePath(GetLevelFileName(1)))+
131
  if not fileexists(fil) then raise Exception.Create('Leveldatei nicht gefunden');
121
    LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
132
  MainForm.LevData.LoadFromFile(fil);
122
 
-
 
123
  MainForm.RefreshFromLevData;
133
  MainForm.RefreshFromLevData;
124
  MainForm.LevChanged := false;
134
  MainForm.LevChanged := false;
125
  MainForm.AnzeigeAct;
135
  MainForm.AnzeigeAct;
126
  close;
136
  close;
127
end;
137
end;
128
 
138
 
129
function TSpeicherungForm.RightStr(str: string; count: integer): string;
-
 
130
begin
-
 
131
  result := copy(str, length(str)-(count-1), count);
-
 
132
end;
-
 
133
 
-
 
134
procedure TSpeicherungForm.SpeichernBtnClick(Sender: TObject);
139
procedure TSpeicherungForm.SpeichernBtnClick(Sender: TObject);
135
begin
140
begin
136
  if MainForm.LevData.CountEnemies = 0 then
141
  if MainForm.LevData.CountEnemies = 0 then
137
  begin
142
  begin
138
    MessageDlg('Das Level ist leer!', mtError, [mbOK], 0);
143
    MessageDlg('Das Level ist leer!', mtError, [mbOK], 0);
Line 154... Line 159...
154
      MessageDlg('Dies ist kein gültiger Levelname!', mtError, [mbOK], 0);
159
      MessageDlg('Dies ist kein gültiger Levelname!', mtError, [mbOK], 0);
155
      LevelName.SetFocus;
160
      LevelName.SetFocus;
156
      exit;
161
      exit;
157
    end;
162
    end;
158
  end;}
163
  end;}
159
  if LevelListBox.items.IndexOf('Level ' + inttostr(LevelNumber.Value)) > -1 then
164
  if LevelListBox.items.IndexOf(Format(SLevelListBox, [LevelNumber.Value])) > -1 then
160
  begin
165
  begin
161
    if MessageDlg('Level ist bereits vorhanden. Ersetzen?', mtConfirmation, mbYesNoCancel, 0) <> mrYes then
166
    if MessageDlg('Level ist bereits vorhanden. Ersetzen?', mtConfirmation, mbYesNoCancel, 0) <> mrYes then
162
      exit;
167
      exit;
163
  end;
168
  end;
164
 
169
 
165
  // Speichern
170
  // Speichern
166
  MainForm.LevData.LevelEditorLength := MainForm.ScrollBar.Max;
171
  MainForm.LevData.LevelEditorLength := MainForm.ScrollBar.Max;
167
  MainForm.LevData.SaveToFile(GetLevelFileName(LevelNumber.Value));
172
  MainForm.LevData.SaveToFile(GetLevelFileName(LevelNumber.Value,true));
168
 
173
 
169
  // Nacharbeiten
174
  // Nacharbeiten
170
  MainForm.LevChanged := false;
175
  MainForm.LevChanged := false;
171
  MainForm.AnzeigeAct;
176
  MainForm.AnzeigeAct;
172
  SearchLevels;
177
  SearchLevels;
Line 175... Line 180...
175
procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject);
180
procedure TSpeicherungForm.LevelListBoxClick(Sender: TObject);
176
var
181
var
177
  LevelData: TLevelData;
182
  LevelData: TLevelData;
178
  boss: boolean;
183
  boss: boolean;
179
  i: Integer;
184
  i: Integer;
180
  temp: string;
-
 
181
  anzahlEinheiten: integer;
185
  anzahlEinheiten: integer;
-
 
186
  fil: string;
182
begin
187
begin
183
  li1a.visible := false;
188
  li1a.visible := false;
184
  li2a.visible := false;
189
  li2a.visible := false;
185
  li3a.visible := false;
190
  li3a.visible := false;
186
  li1b.visible := false;
191
  li1b.visible := false;
Line 194... Line 199...
194
    ladenbtn.enabled := false;
199
    ladenbtn.enabled := false;
195
    loeschenbtn.enabled := false;
200
    loeschenbtn.enabled := false;
196
    liw.visible := true;
201
    liw.visible := true;
197
    exit;
202
    exit;
198
  end;
203
  end;
199
  temp := LevelListBox.Items.strings[LevelListBox.itemindex];
-
 
200
  LevelNumber.Value := strtoint(RightStr(temp, length(temp)-Length('Level ')));
204
  LevelNumber.Value := GetListBoxSelectedLevelNumber;
201
 
205
 
202
  LevelData := TLevelData.Create;
206
  LevelData := TLevelData.Create;
203
  try
207
  try
204
    try
208
    try
205
      LevelData.RasterErzwingen := true;
209
      LevelData.RasterErzwingen := true;
-
 
210
 
206
      LevelData.LoadFromFile(IncludeTrailingPathDelimiter(ExtractFilePath(GetLevelFileName(1)))+
211
      fil := GetLevelFileName(GetListBoxSelectedLevelNumber,false);
207
        LevelListBox.Items.strings[LevelListBox.itemindex]+'.lev');
212
      if not fileexists(fil) then raise Exception.Create('Leveldatei nicht gefunden');
-
 
213
      LevelData.LoadFromFile(fil);
208
 
214
 
209
      boss := false;
215
      boss := false;
210
      anzahlEinheiten := Length(LevelData.EnemyAdventTable);
216
      anzahlEinheiten := Length(LevelData.EnemyAdventTable);
211
      for i := 0 to anzahlEinheiten - 1 do
217
      for i := 0 to anzahlEinheiten - 1 do
212
      begin
218
      begin
Line 250... Line 256...
250
begin
256
begin
251
  mainform.dxtimer.enabled := false;
257
  mainform.dxtimer.enabled := false;
252
  SearchLevels;
258
  SearchLevels;
253
end;
259
end;
254
 
260
 
-
 
261
function TSpeicherungForm.GetListBoxSelectedLevelNumber: integer;
-
 
262
var
-
 
263
  i: integer;
-
 
264
begin
-
 
265
  result := -1;
-
 
266
  if LevelListBox.itemindex = -1 then exit;
-
 
267
  for i := 1 to MaxPossibleLevels do
-
 
268
  begin
-
 
269
    if LevelListBox.Items.strings[LevelListBox.itemindex] = Format(SLevelListBox, [i]) then
-
 
270
    begin
-
 
271
      result := i;
-
 
272
      exit;
-
 
273
    end;
-
 
274
  end;
-
 
275
end;
-
 
276
 
255
procedure TSpeicherungForm.DsFancyButton2Click(Sender: TObject);
277
procedure TSpeicherungForm.DsFancyButton2Click(Sender: TObject);
256
begin
278
begin
257
  SearchLevels;
279
  SearchLevels;
258
end;
280
end;
259
 
281