diff options
Diffstat (limited to 'client/game.gd')
-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 |