aboutsummaryrefslogtreecommitdiff
path: root/client/game.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/game.gd')
-rw-r--r--client/game.gd24
1 files changed, 16 insertions, 8 deletions
diff --git a/client/game.gd b/client/game.gd
index e5c14fdb..c1f515fe 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -48,6 +48,7 @@ var tile_names: Array = []
var tile_index_by_name: Dictionary = {}
var tile_walkable: Dictionary = {}
var tile_placeable_items: Dictionary = {}
+var tile_interactable_empty: Dictionary = {}
var maps: Array = []
var bot_algos: Array
var text_message_history: Array[TextMessage] = []
@@ -95,6 +96,8 @@ func handle_packet(p):
tile_names = p["data"]["tile_names"]
tile_walkable = {}
for tile in p["data"]["tile_walkable"]: tile_walkable[int(tile)] = true
+ tile_interactable_empty = {}
+ for tile in p["data"]["tile_interactable_empty"]: tile_interactable_empty[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))
@@ -428,14 +431,19 @@ func get_tile_collision(pos: Vector2i) -> bool:
if t == null: return true
else: return not tile_walkable.has(tile_index_by_name[t])
-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
- 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 get_tile_interactive(pos: Vector2i, hands: Array) -> bool:
+ var tile_name = map.get_tile_name(pos)
+ if tile_name == null: return false
+ var tile = tile_index_by_name[tile_name]
+ if map.get_tile_instance(pos).item != null: return true
+ if !tile_placeable_items.has(tile): return true
+ for hand in hands:
+ if hand == null:
+ if tile_interactable_empty.has(tile): return true
+ else:
+ if item_index_by_name[hand.item_name] in tile_placeable_items[tile]: return true
+ return false
+
func update_center():
$FollowCamera.autozoom = spectating_mode == SpectatingMode.CENTER and join_state == JoinState.SPECTATING