aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-30 01:19:01 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-30 01:19:09 +0200
commit5033c326094edc1ff4234b994e95d987cb937fc4 (patch)
tree5fa426a77109722df163c15ce8d647170cd8fcea /client
parent727752b87bbe7146adb0f9e9e27d6e64b785ec2f (diff)
downloadhurrycurry-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.gd19
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