diff options
| author | tpart <tpart120@proton.me> | 2026-02-26 20:30:49 +0100 |
|---|---|---|
| committer | tpart <tpart120@proton.me> | 2026-02-26 20:49:54 +0100 |
| commit | 04dd47d13a8da9224e7f9ea8ccacf64129717ec1 (patch) | |
| tree | 2a88e646d1b8dfbcd5973092655bf9a0ebc1c625 /client/map/tiles | |
| parent | b91eb2a9bdf4167c69a4d82f2a44855138f58b94 (diff) | |
| download | hurrycurry-04dd47d13a8da9224e7f9ea8ccacf64129717ec1.tar hurrycurry-04dd47d13a8da9224e7f9ea8ccacf64129717ec1.tar.bz2 hurrycurry-04dd47d13a8da9224e7f9ea8ccacf64129717ec1.tar.zst | |
Implement tile stacks in client; Upgrade to Godot 4.6
Diffstat (limited to 'client/map/tiles')
| -rw-r--r-- | client/map/tiles/chair.gd | 9 | ||||
| -rw-r--r-- | client/map/tiles/conveyor.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/counter.gd | 18 | ||||
| -rw-r--r-- | client/map/tiles/door.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/generic_tile.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/grass_side.tres | 2 | ||||
| -rw-r--r-- | client/map/tiles/player_portal.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/screen/screen.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/table.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/unknown_tile.gd | 2 | ||||
| -rw-r--r-- | client/map/tiles/wall_tile.gd | 12 |
11 files changed, 26 insertions, 29 deletions
diff --git a/client/map/tiles/chair.gd b/client/map/tiles/chair.gd index 45b45638..4cd28cf7 100644 --- a/client/map/tiles/chair.gd +++ b/client/map/tiles/chair.gd @@ -14,17 +14,16 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Chair -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) var chair = preload("res://map/tiles/chair.tscn").instantiate() var facing = 0; for i in range(4): - match ctx.neighbors[i]: - "coveyor", "table", "counter": - facing = i - break + if G.has_one(ctx.neighbors[i], ["coveyor", "table", "counter"]): + facing = i + break base.add_child(chair) turn_facing(facing) diff --git a/client/map/tiles/conveyor.gd b/client/map/tiles/conveyor.gd index 60505425..8f2c6d12 100644 --- a/client/map/tiles/conveyor.gd +++ b/client/map/tiles/conveyor.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Conveyor -extends Floor +extends Tile var conveyor: ConveyorModel = preload("res://map/tiles/conveyor.tscn").instantiate() diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd index bd16c7a3..fc302694 100644 --- a/client/map/tiles/counter.gd +++ b/client/map/tiles/counter.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Counter -extends Floor +extends Tile const COUNTERS: Array = [ "counter", @@ -52,7 +52,7 @@ func _init(ctx: TileFactory.TileCC): for start in range(4): var series = 0 for i in range(4): - if Counter.is_floor(ctx.neighbors[(start + i) % 4]): + if not is_attachable(ctx.neighbors[(start + i) % 4]): series += 1 else: break @@ -64,7 +64,7 @@ func _init(ctx: TileFactory.TileCC): # backsplash facing = max_idx if max_series == 1: - if WallTile.WALLS.has(ctx.neighbors[(max_idx + 2) % 4]): + if G.has_one(WallTile.WALLS, ctx.neighbors[(max_idx + 2) % 4]): kind = CounterKind.STRAIGHT_BACKSPLASH else: kind = CounterKind.STRAIGHT @@ -73,10 +73,8 @@ func _init(ctx: TileFactory.TileCC): turn_facing(facing) -static func is_counter(tile_name_t) -> bool: - if tile_name_t == null: - return false - return tile_name_t.ends_with("crate") or COUNTERS.has(tile_name_t) - -static func is_floor(floor_name) -> bool: - return FLOORS.has(floor_name) +static func is_attachable(neighbor: Array) -> bool: + for tile: String in neighbor: + if tile.ends_with("crate"): return true + if COUNTERS.has(tile): return true + return false diff --git a/client/map/tiles/door.gd b/client/map/tiles/door.gd index 7fe23c93..0473c337 100644 --- a/client/map/tiles/door.gd +++ b/client/map/tiles/door.gd @@ -21,7 +21,7 @@ func _init(ctx: TileFactory.TileCC): var new_facing = 0 for i in range(4): - if ctx.neighbors[i] == "door": + if ctx.neighbors[i].has("door"): new_facing = i turn_facing(new_facing) add_dyed_mesh(ctx, load("res://map/tiles/door.tscn").instantiate(), "Door", 1) diff --git a/client/map/tiles/generic_tile.gd b/client/map/tiles/generic_tile.gd index abcb4d05..33c01cdb 100644 --- a/client/map/tiles/generic_tile.gd +++ b/client/map/tiles/generic_tile.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name GenericTile -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC, scene: PackedScene): super(ctx) diff --git a/client/map/tiles/grass_side.tres b/client/map/tiles/grass_side.tres index 3f29e10e..52042308 100644 --- a/client/map/tiles/grass_side.tres +++ b/client/map/tiles/grass_side.tres @@ -1,4 +1,4 @@ -[gd_resource type="ArrayMesh" load_steps=4 format=3 uid="uid://l2by4gv4wpd1"] +[gd_resource type="ArrayMesh" format=3 uid="uid://l2by4gv4wpd1"] [ext_resource type="Texture2D" uid="uid://p35o0tkyfmrl" path="res://map/tiles/grass_side.webp" id="1_d17wb"] diff --git a/client/map/tiles/player_portal.gd b/client/map/tiles/player_portal.gd index 8339a797..c78bcf0a 100644 --- a/client/map/tiles/player_portal.gd +++ b/client/map/tiles/player_portal.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name PlayerPortal -extends Floor +extends Tile var model: PortalModel = load("res://map/tiles/portal.tscn").instantiate() func _init(ctx: TileFactory.TileCC): diff --git a/client/map/tiles/screen/screen.gd b/client/map/tiles/screen/screen.gd index c1d93e03..c95f0753 100644 --- a/client/map/tiles/screen/screen.gd +++ b/client/map/tiles/screen/screen.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Screen -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) diff --git a/client/map/tiles/table.gd b/client/map/tiles/table.gd index 43e3dbea..046749d7 100644 --- a/client/map/tiles/table.gd +++ b/client/map/tiles/table.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Table -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) diff --git a/client/map/tiles/unknown_tile.gd b/client/map/tiles/unknown_tile.gd index 0a11efc6..f3524834 100644 --- a/client/map/tiles/unknown_tile.gd +++ b/client/map/tiles/unknown_tile.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name UnknownTile -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index b8109516..244b2294 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name WallTile -extends Floor +extends Tile static func create_material(color: Color): var mat = StandardMaterial3D.new() @@ -56,8 +56,8 @@ func _init(ctx: TileFactory.TileCC): for start in range(4): var series = 0 for i in range(4): - var i_name = ctx.neighbors[(start + i) % 4] - if is_wall(i_name): + var neighbor: Array = ctx.neighbors[(start + i) % 4] + if is_wall(neighbor): series += 1 else: break @@ -68,7 +68,7 @@ func _init(ctx: TileFactory.TileCC): if max_series == 1: facing = max_idx kind = WallKind.STRAIGHT - if not env.is_empty() and env.has(ctx.neighbors[(facing + 1) % 4]) or ctx.neighbors[(facing + 1) % 4] == null: + if not env.is_empty() and G.has_one(env, ctx.neighbors[(facing + 1) % 4]) or ctx.neighbors[(facing + 1) % 4].is_empty(): facing = (facing + 2) % 4 elif max_series == 2: facing = max_idx @@ -86,5 +86,5 @@ func add_dyed_mesh(ctx: TileFactory.TileCC, node: Node3D, node_name = "Mesh", su meshi.set_surface_override_material(surface, MATERIALS.get(ctx.tile_name.variant, MATERIALS["green"])) base.add_child(node) -func is_wall(tile_name_t) -> bool: - return walls.has(tile_name_t) +func is_wall(neighbor: Array) -> bool: + return G.has_one(neighbor, walls) |