Skip to content

Instantly share code, notes, and snippets.

@Ohmnivore
Created March 9, 2014 00:25
Show Gist options
  • Save Ohmnivore/d68d73da0844afbc39fd to your computer and use it in GitHub Desktop.
Save Ohmnivore/d68d73da0844afbc39fd to your computer and use it in GitHub Desktop.
package ;
import flixel.addons.tile.FlxTilemapExt;
import flixel.addons.tile.FlxTileSpecial;
import flixel.FlxG;
import flixel.FlxObject;
import flixel.FlxState;
import flixel.tile.FlxTilemap;
import haxe.xml.Fast;
/**
* ...
* @author Ohmnivore
*/
class OgmoLoader
{
static public var tilemaps:Map<String, String>;
static public function initTilemaps():Void
{
//Initializing entities
tilemaps = new Map();
tilemaps.set("terrain", "media/images/terrain.png");
tilemaps.set("cliff", "media/images/cliff.png");
tilemaps.set("objects", "media/images/objects.png");
tilemaps.set("water", "media/images/water.png");
}
static public function loadXML(XML:String, State:PlayState):Void
{
initTilemaps();
var xml = Xml.parse(XML);
var fast = new Fast(xml.firstElement());
for (x in fast.elements)
{
if (x.has.tileset) //Tilemap
{
var map:FlxTilemapExt = new FlxTilemapExt();
map.loadMap(x.innerData, tilemaps.get(x.att.tileset), 32, 32, 0, 0, 0);
State.maps.add(map);
if (x.att.tileset == "water")
{
var special:Array<FlxTileSpecial> = new Array();
for (tile in map.getTileInstances(0))
{
trace(tile);
var t:FlxTileSpecial = new FlxTileSpecial(tile, false, false, 0);
var p:AnimParams = { flipHorizontal: false, flipVertical: false, rotate: 0 };
t.addAnimation([0, 1, 2, 3, 4, 5, 6, 7], 6,
[p, p, p, p, p, p, p, p]);
special.push(t);
}
trace(map.getTileInstances(0).length);
trace(special.length);
map.setSpecialTiles(special);
}
//map.forceComplexRender = true;
//map.
FlxG.worldBounds.set(map.x, map.y, map.width, map.height);
}
else //Entity layer
{
for (ent in x.elements)
{
Type.createInstance(Type.resolveClass("entities." + ent.name), [ent]);
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment