Quellcode |
Dieser Text ist idealerweise für BlitzBasic-Codes gedacht. Kann zum Teil aber auch bei anderen Programmiersprachen in ähnlicher Weise hilfreich sein. Hinweis: Quellcodes zu anderen Programmiersprachen sind Projekte anderer Programmierer. |
Mapengine einbauen |
Die fix und fertige Mapengine befindet sich im Ordner "Source\BlitzBasic\Mapengine". Kopiere den ganzen Ordner in ein anderes Verzeichnis. Die Datei preview_bb2d.bb kann auch als Vorlage genommen werden - kopiere diese Datei ebenfalls. Wichtig ist diese Zeile: Include "mapengine\mapengine.bb" Der Code ist mit BBplus geschrieben, ist aber auch für BB2D und BB3D geeignet. Die Befehle LoadImage und LoadAnimImage haben in BBplus einen zusätzlichen Parameter am Ende. Falls das Programm in BB2D/BB3D nicht starten will, entferne einfach den letzten Parameter ",2" bei den genannten Befehlen. |
Objekt finden und manipulieren |
Nachdem eine Map-Datei mit dem der Funktion map_load() galaden wurde, können Objekte an dem Namen identifiziert werden. Benutze dazu diese Funktionen: obj.layer=layer_find("obj") oder obj.geo=geo_find("obj") Typischerweise werden wichtige Objekte nur 1x nach dem Laden gesucht, um diese eindeutig zu identifizieren. Nun kann man auf das identifizierte Objekt 'obj' zugreifen und Eigenschaften manipulieren: obj\ascii Alle Objekte: Ermittelt, ob Metadaten als Binär (0) oder Ascii (1) vorliegen. Hinweis: Ascii-Daten sollen dann noch manuell nach String konvertiert werden! obj\bank1 Layer: Memory Bank Handle zu Basisdaten. Basisdaten enthalten Tile-Werte, nach denen ein Layer gezeichnet wird. obj\bank2 Layer: Memory Bank Handle zu Datenlayer. obj\bank3 Alle Objekte: Memory Bank Handle zu Metadaten. obj\bank4 Alle Objekte: Memory Bank Handle zu Variablen. obj\code Alle Objekte: Objektart (1=Map, 2=Iso1, 3=Iso2, 4=Hex1, 5=Hex2, 6=Klon, 7=Bild, 8=Block, 9=Punkt, 10=Linie, 11=Rechteck, 12=Oval) obj\depth1 Layer: Basisdaten-Tiefe in Bit obj\depth2 Layer: Datenlayer-Tiefe in Bit obj\frame Bild oder Block: Framenummer (hartcodiert) obj\layer Klon oder Block: Layer-Handle zu einem Referenzobjekt obj\mask Map, Bild oder Block: Grafik-Maskierung aus (0) oder ein (1) obj\mode Bild oder Block: Animationsmodus (0=Std, 1=Pause, 2=Vorwärts, 3=Rückwärts) Map-Layer: Layerwiederholung (0=nein, 1=ja) obj\name$ Alle Objekte: Name eines Objekts obj\parax Block: Justage X Andere Objekte: Parallax X-Wert obj\paray Block: Justage Y Andere Objekte: Parallax Y-Wert obj\posx Block: Tilekoordinate X Andere Objekte: Pixelkoordinate X obj\posy Block: Tilekoordinate Y Andere Objekte: Pixelkoordinate Y obj\sizex Layer: Layerbreite in Tiles Linie: Endpunkt X Rechteck: Objektbreite Oval: Radius X obj\sizey Layer: Layerhöhe in Tiles Linie: Endpunkt Y Rechteck: Objekthöhe Oval: Radius Y obj\start Iso2, Hex1 oder Hex2: Tile Shift aus (0) oder ein (1) Bild oder Block: Startframe einer Animation obj\tile Layer, Bild oder Block: Tileset-Handle obj\time Bild oder Block: Letzter Millisecs-Wert bei unabhängiger Animation (TMP) obj\tmp Bild oder Block: Letzter Frame-Wert bei unabhängiger Animation (TMP) obj\visible Alle Objekte: Objekt unsichtbar (0) oder sichtbar (1) |
Hintergrund |
Hintergrund wird nicht als Objekt gespeichert. Alle Daten werden in globalen Variablen in Inklude Map gespeichert und beginnen mit dem Prefix "map_". Diese Variablen haben identische Bezeichnungen wie die Eigenschaften von Layer-Objekten. |
Anfängerschritte |
Erste Schritte 1) Benutze map_load(), um Map-Datei und Map-Grafiken zu laden 2) Überprüfe zurückgelieferten Wert auf Fehler 3) Identifiziere wichtige Objekte Hauptschleife 1) Modifiziere Objektpositionen (layer\posx, layer\posy) 2) Modifiziere Kameraposition mit map_scroll() 3) Aktualisiere Animationen mit tile_animate() 4) Benutze CLS oder zeichne Hintergrund, falls erforderlich 5) Zeichne komplette Karte mit map_draw() ein 6) Zeichne Overlay-Grafiken 7) Benutze FLIP Mauskoordinaten nach Tile-Koordinaten konvertieren 1) Bestimme Mauskoordinaten 2) Benutze layer_map_coord(), layer_iso1_coord() usw. Globale Objekt-Koordinaten nach Tile-Koordinaten konvertieren 1) Bestimme globale Objekt-Koordinaten 2) Konvertiere globale Koordinate mit map_getscreen() 2) Benutze layer_map_coord(), layer_iso1_coord() usw. Tilewert auslesen 1) Bestimme Tile-Koordinate 2) Benutze layer_getcode() und layer_getvalue(), um Tilewert auszulesen Tipp) Benutze layer_setvalue, um Tilewert zu setzen Datenwert auslesen 1) Bestimme Tile-Koordinate 2) Benutze layer_getdata(), um Datenwert auszulesen Tipp) Benutze layer_setdata, um Datenwert zu setzen |