diff options
author | metamuffin <metamuffin@disroot.org> | 2025-09-30 01:19:01 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-09-30 01:19:09 +0200 |
commit | 5033c326094edc1ff4234b994e95d987cb937fc4 (patch) | |
tree | 5fa426a77109722df163c15ce8d647170cd8fcea /client | |
parent | 727752b87bbe7146adb0f9e9e27d6e64b785ec2f (diff) | |
download | hurrycurry-5033c326094edc1ff4234b994e95d987cb937fc4.tar hurrycurry-5033c326094edc1ff4234b994e95d987cb937fc4.tar.bz2 hurrycurry-5033c326094edc1ff4234b994e95d987cb937fc4.tar.zst |
Implement tile placeable items for server-side (#433)
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/client/game.gd b/client/game.gd index 7289eed0..e5c14fdb 100644 --- a/client/game.gd +++ b/client/game.gd @@ -46,8 +46,8 @@ var item_names: Array = [] var item_index_by_name: Dictionary = {} var tile_names: Array = [] var tile_index_by_name: Dictionary = {} -var tile_collide: Array = [] -var tile_interact: Array = [] +var tile_walkable: Dictionary = {} +var tile_placeable_items: Dictionary = {} var maps: Array = [] var bot_algos: Array var text_message_history: Array[TextMessage] = [] @@ -93,8 +93,11 @@ func handle_packet(p): "data": item_names = p["data"]["item_names"] tile_names = p["data"]["tile_names"] - tile_collide = p["data"]["tile_collide"] - tile_interact = p["data"]["tile_interact"] + tile_walkable = {} + for tile in p["data"]["tile_walkable"]: tile_walkable[int(tile)] = true + tile_placeable_items = {} + for tile in p["data"]["tile_placeable_items"]: + tile_placeable_items[int(tile)] = p["data"]["tile_placeable_items"][tile].map(func(x): return int(x)) maps = p["data"]["maps"] bot_algos = p["data"]["bot_algos"] Global.hand_count = p["data"]["hand_count"] @@ -423,14 +426,16 @@ func get_message_str(m: Dictionary) -> String: func get_tile_collision(pos: Vector2i) -> bool: var t = map.get_tile_name(pos) if t == null: return true - else: return tile_collide[tile_index_by_name[t]] + else: return not tile_walkable.has(tile_index_by_name[t]) -func get_tile_interactive(pos: Vector2i) -> bool: +func get_tile_interactive(pos: Vector2i, item = null) -> bool: var t = map.get_tile_name(pos) if t == null: return false else: if map.get_tile_instance(pos).item != null: return true - return tile_interact[tile_index_by_name[t]] + if !tile_placeable_items.has(tile_index_by_name[t]): return true + if item == null: return false # TODO change to true then always supplied + return item_index_by_name[item] in tile_placeable_items[tile_index_by_name[t]] func update_center(): $FollowCamera.autozoom = spectating_mode == SpectatingMode.CENTER and join_state == JoinState.SPECTATING |