Hallo zusammen,
ich habe grade ein ziemlich merkwürdiges Problem und ich bin mir fast sicher,
dass der Fehler ein Dummheitsfehler auf meiner Seite ist.
Ich versuche grad einen Leveleditor für ein Spiel zu schreiben. Genauergesagt für ein Breakout.
Soweit kein Problem, ich speichere alle Bricks in eine Inidatei.
Doch jetzt kommt das Problem. Ich kann diese Datei nicht mehr lesen.
Sobald ich z.b. in jeder Ecke ein Brick platziere, dann speichere und wieder lade ist nur noch der in der rechten unteren Ecke da. Und zwar unabhängig davon ob das der letzte Stein im Level war oder nicht.
Ich stell euch einfach mal den Code hoch, ich hab keine Ahnung mehr wo der Fehler liegen könnte...
Delphi-Quellcode:
procedure TMainForm.Load;
var
Path : string;
tmpStrLst : TStringList;
i : Integer;
begin
New; //Spielfeld leeren
with TOpenDialog.Create(nil) do
begin
Filter := 'Level|*.lvl';
if Execute then
begin
Path := FileName;
with TIniFile.Create(Path) do
begin
tmpStrLst := TStringList.Create;
ReadSections(tmpStrlst);//Dektionen auslesen
for i := 0 to tmpStrLst.Count - 1 do
begin
AddBrick(ReadFloat(tmpStrLst.Strings[i], 'X', 0), ReadFloat(tmpStrLst.Strings[i], 'Y', 0), ReadInteger(tmpStrLst.Strings[i], 'Color', 0)); //Jede Sektion öffnen und den Brick hinzufügen
end;
tmpStrLst.Free;
Free;
end;
end;
Free;
end;
end;
Delphi-Quellcode:
procedure TMainForm.AddBrick(aX, aY: Double; aColor: Integer);
var
tmp : TBrickEditor;
begin
tmp := TBrickEditor.Create(AdSpriteEngine);
tmp.Image := AdImgLst.Find('brick');
tmp.Width := 90;
tmp.Height := 20;
tmp.X := aX;
tmp.Y := aY;
tmp.Color := aColor;
tmp.Free;//Auch das Weglassen hier hilft nichts...
end;
Vielleicht kann mir ja jemand helfen...
Fabian E.