Bladeren bron

Save tile groups for tilesets (#420)

Zaphod 7 jaren geleden
bovenliggende
commit
a991b1d86a
1 gewijzigde bestanden met toevoegingen van 31 en 2 verwijderingen
  1. 31 2
      h2d/CdbLevel.hx

+ 31 - 2
h2d/CdbLevel.hx

@@ -30,6 +30,7 @@ class LevelTileset {
 	public var tile : h2d.Tile;
 	public var tile : h2d.Tile;
 	public var tiles : Array<h2d.Tile>;
 	public var tiles : Array<h2d.Tile>;
 	public var objects : Array<LevelObject>;
 	public var objects : Array<LevelObject>;
+	public var groups : Map<String, LevelGroup>;
 	public var tilesProps(get, never) : Array<Dynamic>;
 	public var tilesProps(get, never) : Array<Dynamic>;
 	var props :	cdb.Data.TilesetProps;
 	var props :	cdb.Data.TilesetProps;
 	var tileBuilder : cdb.TileBuilder;
 	var tileBuilder : cdb.TileBuilder;
@@ -65,6 +66,29 @@ class LevelObject {
 	}
 	}
 }
 }
 
 
+class LevelGroup {
+	public var tileset : LevelTileset;
+	public var name : String;
+	public var x : Int;
+	public var y : Int;
+	public var width : Int;
+	public var height : Int;
+	public var tile : h2d.Tile;
+	public var value : Dynamic;
+
+	public function new(name, tset, x, y, w, h, val) {
+		this.tileset = tset;
+		this.x = x;
+		this.y = y;
+		this.name = name;
+		width = w;
+		height = h;
+		var sz = tileset.size;
+		tile = tileset.tile.sub(x * sz, y * sz, w * sz, h * sz);
+		value = val;
+	}
+}
+
 class LevelObjectInstance {
 class LevelObjectInstance {
 	public var x : Int;
 	public var x : Int;
 	public var y : Int;
 	public var y : Int;
@@ -364,6 +388,7 @@ class CdbLevel extends Layers {
 		t.tile = t.res.toTile();
 		t.tile = t.res.toTile();
 		t.tiles = t.tile.gridFlatten(t.size);
 		t.tiles = t.tile.gridFlatten(t.size);
 		t.objects = [];
 		t.objects = [];
+		t.groups = new Map<String, LevelGroup>();
 		var tprops = Reflect.field(levelsProps.tileSets, ldat.file);
 		var tprops = Reflect.field(levelsProps.tileSets, ldat.file);
 		@:privateAccess t.props = tprops;
 		@:privateAccess t.props = tprops;
 		if( tprops != null ) {
 		if( tprops != null ) {
@@ -374,7 +399,11 @@ class CdbLevel extends Layers {
 					var o = new LevelObject(t, s.x, s.y, s.w, s.h);
 					var o = new LevelObject(t, s.x, s.y, s.w, s.h);
 					t.objects[o.id] = o;
 					t.objects[o.id] = o;
 				case Group:
 				case Group:
-					// TODO : save props
+					var name = s.opts.name;
+					if (name != null) {
+						var g = new LevelGroup(name, t, s.x, s.y, s.w, s.h, s.opts.value);
+						t.groups.set(name, g);
+					}
 				case Ground, Border, Tile:
 				case Ground, Border, Tile:
 					// nothing
 					// nothing
 				}
 				}
@@ -459,4 +488,4 @@ class CdbLevel extends Layers {
 		}
 		}
 	}
 	}
 
 
-}
+}