diff options
Diffstat (limited to 'client/map/tile_factory.gd')
-rw-r--r-- | client/map/tile_factory.gd | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd index ba7d8ac3..57570263 100644 --- a/client/map/tile_factory.gd +++ b/client/map/tile_factory.gd @@ -16,8 +16,16 @@ class_name TileFactory extends Object + +class TileName: + var name: String + var variant #: String? + func _init(raw_name: String): + var c = Array(raw_name.split(":")) + name = c[0]; variant = c[1] if c.size() >= 2 else null # TODO Array.get throws errors + class TileCC: - var tile_name: String + var tile_name: TileName var position: Vector2i var neighbors: Array var floor_meshers: Dictionary[String, FloorMesher] @@ -29,13 +37,16 @@ var floor_meshers: Dictionary[String, FloorMesher] = { "street": FloorMesher.new(Street.floor_mesh()) } -func produce(tile_name: String, position: Vector2i, neighbors: Array) -> Tile: +func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: + var tile_name = TileName.new(raw_name) + var ctx := TileCC.new() ctx.tile_name = tile_name ctx.position = position ctx.neighbors = neighbors ctx.floor_meshers = floor_meshers - match tile_name: + + match tile_name.name: "black-hole-counter": return ItemPortal.new(ctx, false) "black-hole": return PlayerPortal.new(ctx, false) "book": return Book.new(ctx) |