AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte RPGEditor - Ladeprobleme
Thema durchsuchen
Ansicht
Themen-Optionen

RPGEditor - Ladeprobleme

Ein Thema von Neutral General · begonnen am 12. Nov 2005 · letzter Beitrag vom 15. Nov 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Neutral General
Neutral General
Registriert seit: 16. Jan 2004
Hi,

Ich habe einen Editor für mein Rollenspiel programmiert. Das Laden und speichern klappt eigentlich soweit - bei kleinen Maps. Wenn die Maps etwas größer sind werden die Maps nicht richtig geladen.. Abgespeichert werden sie glaube ich richtig...

Neue Map:

Delphi-Quellcode:
procedure TEditWorld.New(Width:Integer; Height:Integer); //TEditWorld = class(TWorld)
var x,y,i : Integer;
begin
 i:= 0;
 Textures.Clear; // TTextureList = class(TObjectlist)
 World.Engine.Engine.Clear; //Engine = TDXSpriteEngine
 World.LWidth := Width;
 World.LHeight:= Height;
 if FLevel <> nil then FLevel.Free; //FLevel = TBiginifile
 DeleteFile(ExtractFilePath(Application.Exename) + 'Default.rpm');
 FLevel := TBigIniFile.Create(ExtractFilePath(Application.Exename) + 'Default.rpm');
 FLevel.WriteInteger('Count','Count',Width*Height); //Anzahl der Tiles
 for y:= 0 to Height-1 do begin
  for x:= 0 to Width-1 do begin
    inc(i);
    FLevel.WriteString('Tex' + IntToStr(i),'Tex','Wasser'); //Textur
    FLevel.WriteInteger('Tex' + IntToStr(i),'x',x); //x-
    FLevel.WriteInteger('Tex' + IntToStr(i),'y',y); //y-Wert Schreiben
  end;
 end;
 FLevel.FlushFile; //Ini speichern
 LoadFromFile(ExtractFilePath(Application.Exename)+ 'Default.rpm'); //Level laden
end;
Map laden:
Delphi-Quellcode:
procedure TWorld.LoadFromFile(Filename: String);
var i: Integer;
    Count: Integer;
    Tex: TTexture;
    xW,yW: Integer; //Breite und Länge der Welt
begin
  xW:= 0;
  yW:= 0;
  Textures.Clear;
  Engine.Engine.Clear;
  FLevel := TBigIniFile.Create(Filename);
  Count := FLevel.ReadInteger('Count','Count',0);
  for i:= 1 to Count do begin
   Tex:= TTexture.Create(Engine.Engine,ImageList.Items.Find(FLevel.ReadString('Tex' + IntToStr(i),'Tex','')));
   with Tex do begin
    x:= FLevel.ReadInteger('Tex' + IntToStr(i),'x',0) *32; // x, y Koordinaten auslesen
    y:= FLevel.ReadInteger('Tex' + IntToStr(i),'y',0) *32;
    xW:= (Round(x) div 32)+1; //Länge
    yW:= (Round(y) div 32)+1; // Breite
   end;
   Textures.Add(Tex); //Textur zur Texturliste adden
  end;
  LWidth:= xW;
  LHeight:= yW;
end;
end.
Texturen "malen" :

Delphi-Quellcode:
procedure TEditWorld.DXDrawClick(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var Sprite: TImageSprite;
    x1,y1,i: Integer;
    Tex: TTexture;
begin
  if ((x div 32) < World.LWidth) and ((y div 32) < World.LHeight) then begin // Wenn man nicht außerhalb klickt
   Sprite:= TImageSprite(World.Engine.Engine.GetSpriteAt(x,y));
   i:= GetTexNum(Sprite); // Position in der Texturenliste
   Sprite.Free;
   x1:= x;
   y1:= y;
   Tex := TTexture.Create(World.Engine.Engine,World.ImageList.Items.Find(World.Texture));
   with Tex do begin
    x:= (x1 div 32) * 32;
    y:= (y1 div 32) * 32;
    x1:= Round(x) div 32;
    y1:= Round(y) div 32;
   end;
   FLevel.WriteInteger('Tex' + IntToStr(i),'x',x1);
   FLevel.WriteInteger('Tex' + IntToStr(i),'y',y1);
   FLevel.WriteString('Tex' + IntToStr(i),'Tex',World.Texture);
   FLevel.FlushFile; //Änderungen in Ini schreiben
  end;
end;
Speichern:

Delphi-Quellcode:
procedure TForm1.Mapspeichern1Click(Sender: TObject);
var SL: TStringlist;
begin
  if SaveDialog1.Execute then begin // dürfte sich alles von selbst erklären hier
   SL:= TStringList.Create;
   SL.LoadFromFile(ExtractFilePath(Application.Exename) + 'Default.rpm');
   if pos('.rpm',SaveDialog1.Filename) > 0 then begin
   SL.SaveToFile(SaveDialog1.FileName);
   World.Filename:= SaveDialog1.FileName;
   end
   else begin
   SL.SaveToFile(SaveDialog1.FileName + '.rpm');
   World.Filename:= SaveDialog1.FileName + '.rpm';
   end;
   SL.Free;
  end;
end;
Laden:

Delphi-Quellcode:
procedure TForm1.Mapffnen1Click(Sender: TObject);
begin
  if Opendialog1.Execute then
  World.LoadFromFile(Opendialog1.Filename);
end;
Ok das war jetzt viel Code. Ich habe noch den Editor selber angehangen damit ihr den Fehler nachvollziehen könnt und nicht nur einen Haufen Quelltext habt

Ach ja: Ich hoffe das hier ist die richtige Sparte.. Oder hätte das auch in Multimedia gehört ?
Angehängte Dateien
Dateityp: rar editor_453.rar (223,7 KB, 30x aufgerufen)
 
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#11
  Alt 13. Nov 2005, 13:41
Sag mal hast du dir eigentlich auch mal meinen Quellcode angeguckt ?? Das hier war kein Freeware-Bug-Bericht Thread -.- Das war ne Frage warum das Laden nicht funktioniert.. Und wie du meinem Quelltext entnehmen kannst hab ich (Big)IniFiles benutzt
Michael
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

 
Turbo Delphi für Win32
 
#12
  Alt 13. Nov 2005, 14:06
Nein, den habe ich wirklich nicht angesehen. Tut mir leid. Habe ich ganz übersehen. Aber BigInis sind ja auch furchtbar laaaangsam und nicht für solche Zwecke vorgesehen.

Und entschuldige wenn ich dir ein paar Bugs gemeldet habe, wenn sie dich nicht interessieren musst du es nur sagen.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#13
  Alt 13. Nov 2005, 15:45
Du musst dich nicht dafür entschuldigen aber danach war halt nicht gefragt
Michael
  Mit Zitat antworten Zitat
Xcessive_
 
#14
  Alt 13. Nov 2005, 21:50
Zitat von Neutral General:
Und du konntest wirklich auch größere Maps speichern und ohne probleme laden ??
Ja konnte ich ohne Probleme. Aber das hat sich ja wohl erledigt wenn du das jetzt 'nem FileStream gelöst hast.

Poste mal eine neue Version damit wir nochmal ein Blick drauf werfen können
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#15
  Alt 14. Nov 2005, 11:35
Gut dann hänge ich hier mal die aktuelle Version an.
Achja: wenn das ein Moderator liest: verschiebt das doch bitte mal in Freeware ^^
Das ist jetzt offiziell mein Editor Thread

Neue Features:

EditMode: Wie gehabt, es lassen sich Texturen malen. (Der komische bunte Button^^)
RotateMode: Texturen lassen sich drehen. (Der Button daneben - selbsterklärend)
Ausgewählte Textur wird eingedrückt
Übergangstexturen hinzugefügt
Rechtsklick auf Textur -> Eigenschaften: AlphaWert kann editiert werden.
(Bei den bloßen Texturen noch weniger sinnvoll, das wird erst gut wenn es Objekte gibt)

Bekannte Bugs:

Manchmal erscheinen schwarze Felder statt der Textur
Beim Laden werden manche Texturen nicht geladen -> schwarzes Feld

Preview:

Scrollbalken, damit man bei größeren Levels auch alles sieht (hab schon angefangen gibt aber noch Probs)
Vielleicht noch ein paar mehr Texturen, vielleicht erste Objekte wie Büsche oder Sonstiges..
Entfernung der bekannten Bugs (Ich hasse es -.- Ich kann mir das mit den schwarzen Feldern nicht erklären -.-)
mal sehn...
Miniaturansicht angehängter Grafiken
screenshot_646.jpg  
Angehängte Dateien
Dateityp: rar editor_173.rar (246,4 KB, 15x aufgerufen)
Michael
  Mit Zitat antworten Zitat
14. Nov 2005, 11:35
Dieses Thema wurde von "Daniel" von "Sonstige Fragen zu Delphi" nach "Freeware" verschoben.
Auf Wunsch des Autors nach Freeware verschoben
Xcessive_
 
#17
  Alt 15. Nov 2005, 07:53
Okay, hab' die neue Version gerade mal angetestet.

Hier meine Verbesserungsvorschläge:

- Kein Vollbild sondern ein Fenster (hatte ich ja bereits erwähnt)
- Sobald man das Programm startet wird direkt ein neues Level mit einer Standardgröße erstellt, damit man nicht jedes mal auf den Neu-Button klicken muss (ich bin ein fauler Mensch )
- Die Combobox kannst du ja auch als DropDown-List machen, da man ja sowieso nichts eingeben kann
- Tooltips für die Speedbuttons

Kleinere Designmängel:

- Die Icons auf den SpeedButtons sehen etwas merkwürdig aus und werden an manchen Stellen geclippt
- Die Schriftart des Neu-Dialogs solltest du auf eine Standardschriftart stellen wie z.B. Arial, MS Sans Serif, Verdana, etc.
- Ein Icon für die Echse wäre nicht schlecht

Ein Bug den ich durch Zufall rausgefunden habe:

Wenn man versucht den RPGEditor mit Parameter zu starten, zum Beispiel im Windows Explorer per Drag & Drop, wechselt auf einmal die Bildwiederholfrequenz und dann startet der RPGEditor mit eine Exception (siehe Attachment).
Miniaturansicht angehängter Grafiken
bug_294.gif  
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#18
  Alt 15. Nov 2005, 17:26
Ok neue Version ist da.

Alle geforderten Veränderungen erfolgreich durchgeführt
Dann gebt mir noch ein bisschen Zeit dann kommen Scrollbars, Objekte etc..

Also im Detail:

Tooltips bei Speedbuttons hinzugefügt
Icon vom Editiermodus geändert
Icon der Exe verändert
Schrift auf Standardschrift eingestellt
Kein Vollbild
"Bug" behoben. Das Programm kann nun mit Parametern geladen werden
Beim Programmstart gibts eine 10*10 große Erd Map
Angehängte Dateien
Dateityp: rar editor_358.rar (242,3 KB, 6x aufgerufen)
Michael
  Mit Zitat antworten Zitat
Xcessive_
 
#19
  Alt 15. Nov 2005, 22:20
Hab' gerade wieder die neueste Version getestet. Muss sagen wird immer besser

Bugs:
- Sobald ich das Popup per rechte Maustaste auf dem Spielfeld öffnen will, erscheint es an einer völlig anderen Stelle. (Liegt warscheinlich daran, dass du von Vollbild nun auf Fenster umgestellt hast)
- Wenn ich den Editor nun mit Parameter starte (so wie im letzten Post beschrieben), startet das Programm, friet aber augenblicklich ein und die CPU-Auslastung steigt auf 99%

Kleinere Designmängel:
- Der Fenstertitel in der Windows Startleiste ist "RPG-Editor" aber im Fenster "Karten-Editor"
- Eigener Ordner für die Texturen
- Mehrere Instanzen verhindern
- Die Texturen-Übergange erzeugen noch nicht einen sauberen Übergang
- Speichern-Abfrage vor dem Beenden
- Splash-Screen

Persönliche Wünsche
- Rückgängig-Funktion
- Shortcuts für den Rotate- und Editiermodus
- Wäre gut wenn man nicht immer jeden einzelnen Block anklicken muss um eine Textur zuzuweisen, sondern einfach die Maustaste gedrückt halten könnte
- Ich würde den Datei -> Neu Dialog anders gestalten (siehe Attachment). Halte mich normalerweise an die Standards. Ist nicht nur einfacher, sieht obendrein auch noch professionell aus

Hoffe das ist nicht zu viel
Miniaturansicht angehängter Grafiken
datei-neu_119.gif  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz