QuoteEdit:
Neue version, schreibt nun 2 bytes, das sollte für maps reichen.
Intern etwas geändert, es wird alles in Array's gelistet und sortiert.
http://www.glbasic.com/showroom.php?game=tmx_2_d2ma_v3&lang=de
Sodele, ich hoffe das funktioniert ;)
Folgendes,
mit TMX 2 D2MA.exe wird die .tmx datei von tiled geladen,
dabei werden folgende dateien erstelt,
*control.txt
*.txt
*.d2ma
Die normale txt ist die einfache umwandlung der xml datei in eine txt.
Diese wird für das konvertieren benutzt.
Beim Konvertieren werden die die wichtigsten sachen in die *.control datei geschrieben.
Hier kann man nachschauen was in enteffekt in der byte datei, d2ma, steht
Also alles was mit (=byte) gekenzeichnet ist, ist der wert als Byte geschrieben.
Also sind hier keine Strings vorhanden.
Warum?
Ganz einfach, der Loadprozess soll so einfach wie möglich sein damit jeder klar kommt und die datei bleibt klein ;)
Dann kann man die Loader.exe starten und die *.d2ma datei laden und anzeigen.
Der ist aber erst mal nur simple gestrickt, er zeigt nur die felder >0 an und dann werden nur rects dort gezeichnet, ist ja nur zum testen ;)
Und es werden nur 2 layer unterstützt.
Code für den loader liegt ja dabei, muss man dann selber anpassen.
In der Zip datei ist auch ein kleines divx filmchen dabei wo man sieht wies es geht.
So ich hoffe es gibt etwas feedback und nicht zuviele Bugs ;)
http://www.deuteriumoxid.com/glbasic/testfile.zip
Edit:
Oops hab den Loader vergessen rein zu packen ;)
// --------------------------------- //
// Project: D2MA_Loader
// Start: Wednesday, January 30, 2008
// IDE Version: 5.154
// (c)Fabbio Soddu
// d2o@deuteriumoxid.com
//
// +.d2ma Loader
comein$ = FILEREQUEST$(TRUE, "D2MA|*.d2ma|All|*.*")
byte = GETFILESIZE(comein$)
map = OPENFILE(0,comein$,TRUE)
READBYTE 0,lx //Width
READBYTE 0,ly //Higth
READBYTE 0,tilex
READBYTE 0,tiley
READBYTE 0,layer
DIM field[lx][ly][layer]
FOR la = 0 TO layer - 1
FOR iy = 0 TO ly - 1
FOR ix = 0 TO lx - 1
READBYTE 0,a
field[ix][iy][la] = a
NEXT
NEXT
NEXT
CLOSEFILE 0
/// End Loader
WHILE TRUE
FOR la = 0 TO layer - 1
FOR iy = 0 TO ly - 1
FOR ix = 0 TO lx - 1
a = field[ix][iy][la]
IF a <> 0 AND la = 0
DRAWRECT 0+(tilex*ix),0+(tiley*iy),tilex,tiley,RGB(0x00, 0x80, 0xff)
ENDIF
IF a <> 0 AND la = 1
DRAWRECT 0+(tilex*ix),0+(tiley*iy),tilex,tiley,RGB(0xff, 0x00, 0x00)
ENDIF
NEXT
NEXT
NEXT
SHOWSCREEN
SLEEP 200
WEND