erstens wer sich fragt was eine "*.tmx"-Datei ist:
Das ist eine Tilemap-Datei die man mit dem Programm "Tiled" erstellen und verarbeiten kann.
So eine Datei lässt sich sehr gut über die XML-Funktionen parsen.
Die Daten-Sektionen können hierbei in base64 oder csv erstellt werden.
Ein Decodieren von CSV ist hierbei kein Problem, aber wie decodiere ich das "base64" richtig ?
So geht es eigentlich:
(Ausschnitt)
Code: Alles auswählen
Procedure DecodeMap(encoding.s, bdata.s)
If encoding = "base64"
*bmap = AllocateMemory(2048)
Base64Decoder(bdata, *bmap, MemorySize(*bmap))
pstring.s = ""
For j = 0 To (tmap\width * tmap\height)-1
pstring = pstring + Str(PeekB(*bmap)) + ","
*bmap + 4
Next j
Debug pstring
EndIf
EndProcedure
(Es werden aber genau so viele Bytes ausgelesen wie auch bei CSV.
Der Anfang der Bytes(tilenummern) ist auch korrekt, aber nach einigen 100 Bytes(Tilenummern) stimmen die ausgelesenen Tilenummern nicht mehr.)
Warum ?
Was ist die korrekte Länge ?
Da diese Frage für Außenstehende (oder generell Alle) wohl sehr schwer nachvollziehbar ist kommt hier eine Anleitung.
Download/Installation von "Tiled" -> Erstelle eine Map (mit CSV-Darstellung) und die selbe Map (mit Base64 (uncompress)).
Decodiere nun die Base64-Darstellung und vergleiche diese mit der CSV-Darstellung.
Kennt sich hier jemand aus ?