Ich arbeite an einer Template für das speichern und laden einer Map. Dazu habe ich mir Zwei Objekte hergezaubert:
obControl
obBlock
Desweiteren habe ich ich 5 Skripte eingebracht ( ohne Argumente! ) die aufgeteilt sind:
LvInit(); ds_grid erstellen
LvGenerate(); generieren der map
LvSave(); speichern der map
LvLoad(); laden der map
LvClear(); Löschen der map ( Nicht die Datei sondern jediglich der Raum! )
Problem:
Ich führe mein Programm aus, starte mit '1' das generieren der Map. Dann weiter zu Schritt Zwei dem Speichern und drück die
Taste '2' dafür. Jetzt will ich die Map wieder laden mit Taste '3'. Gut es hat geklappt. Jetzt lösche ich sie mit LvClear();
Nun Drück ich erneut die Generierungstaste und speicher die Map. Jetzt generiere ich nochzweimal bevor ich sie lade.
Und wenn ich sie dann lade funktioniert es so als ob ich einen Schritt zurück generiert hätte. sozusagen das letzte generieren aufgehoben hätte.
Dann mach ich das nochmal und bekomme die eigentlich gespeicherte Map wieder. Nun jetzt prüfte ich das mit öfterem generieren und das Resultat:
Bei jedem laden der Map hob ich die letzte generierung auf und die darauf folgende durch erneutes laden der Map bis zum letzten Punkt wo ich gespeichert habe.
Ich bin total verwirrt?! Habe ich einen unabsichtlichen Undo Befehl erzeugt?! XD
obControl:
Skripte:
LvInit();
LvGenerate();
LvSave();
LvLoad();
Spoiler anzeigen
Alles anzeigen
LvClear();
Es ist kompliziert aber ich hoffe jemand kann mein Problem verstehen
MFG: Mar96K
obControl
obBlock
Desweiteren habe ich ich 5 Skripte eingebracht ( ohne Argumente! ) die aufgeteilt sind:
LvInit(); ds_grid erstellen
LvGenerate(); generieren der map
LvSave(); speichern der map
LvLoad(); laden der map
LvClear(); Löschen der map ( Nicht die Datei sondern jediglich der Raum! )
Problem:
Ich führe mein Programm aus, starte mit '1' das generieren der Map. Dann weiter zu Schritt Zwei dem Speichern und drück die
Taste '2' dafür. Jetzt will ich die Map wieder laden mit Taste '3'. Gut es hat geklappt. Jetzt lösche ich sie mit LvClear();
Nun Drück ich erneut die Generierungstaste und speicher die Map. Jetzt generiere ich nochzweimal bevor ich sie lade.
Und wenn ich sie dann lade funktioniert es so als ob ich einen Schritt zurück generiert hätte. sozusagen das letzte generieren aufgehoben hätte.
Dann mach ich das nochmal und bekomme die eigentlich gespeicherte Map wieder. Nun jetzt prüfte ich das mit öfterem generieren und das Resultat:
Bei jedem laden der Map hob ich die letzte generierung auf und die darauf folgende durch erneutes laden der Map bis zum letzten Punkt wo ich gespeichert habe.
Ich bin total verwirrt?! Habe ich einen unabsichtlichen Undo Befehl erzeugt?! XD
obControl:
Skripte:
LvInit();
LvGenerate();
LvSave();
LvLoad();
GML-Quellcode
- Save = file_text_open_read("Map.sav"); //<- Laden der Map
- for (Y=0; Y<room_height/16; Y+=1)
- {
- for (X=0; X<room_width/16; X+=1)
- {
- ds_grid_set(Level,X,Y,file_text_read_real(Save));
- file_text_readln(Save);
- if ds_grid_get(Level,X,Y) == 0
- {
- with instance_position(X*16,Y*16,obBlock) { instance_destroy(); }
- }
- else if ds_grid_get(Level,X,Y) == 1
- {
- instance_create(X*16,Y*16,obBlock);
- }
- }
- }
- file_text_close(Save);
LvClear();
Es ist kompliziert aber ich hoffe jemand kann mein Problem verstehen
MFG: Mar96K