diff options
Diffstat (limited to 'client/game.gd')
-rw-r--r-- | client/game.gd | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/client/game.gd b/client/game.gd index e7d39aa2..6c152d8a 100644 --- a/client/game.gd +++ b/client/game.gd @@ -53,6 +53,7 @@ var tile_collide: Array = [] var tile_interact: Array = [] var maps: Array = [] var bot_algos: Array +var hand_count = 0 var text_message_history: Array[TextMessage] = [] var join_state: JoinState = JoinState.SPECTATING @@ -95,6 +96,7 @@ func handle_packet(p): tile_interact = p["data"]["tile_interact"] maps = p["data"]["maps"] bot_algos = p["data"]["bot_algos"] + hand_count = p["data"]["hand_count"] tile_index_by_name.clear() for id in tile_names.size(): @@ -128,8 +130,9 @@ func handle_packet(p): if p.id == player_id: set_join_state(JoinState.SPECTATING) camera.target = $Center - if player.hand != null: - player.hand.queue_free() + for h in player.hand: + if h != null: + h.queue_free() players.erase(p.id) player.queue_free() update_players.emit(players) @@ -143,13 +146,13 @@ func handle_packet(p): player_instance.position_ = last_position "move_item": if "player" in p.from and "player" in p.to: - players[p.from.player].pass_to(players[p.to.player]) + players[p.from.player[0]].pass_to(players[p.to.player[0]], int(p.from.player[1]), int(p.to.player[1])) elif "tile" in p.from and "player" in p.to: var t: Tile = map.get_tile_instance(p.from.tile) - players[p.to.player].take_item(t) + players[p.to.player[0]].take_item(t, int(p.to.player[1])) elif "player" in p.from and "tile" in p.to: var t: Tile = map.get_tile_instance(p.to.tile) - players[p.from.player].put_item(t) + players[p.from.player[0]].put_item(t, int(p.from.player[1])) elif "tile" in p.from and "tile" in p.to: var from_tile2: Tile = map.get_tile_instance(p.from.tile) var to_tile2: Tile = map.get_tile_instance(p.to.tile) @@ -159,13 +162,13 @@ func handle_packet(p): var t: Tile = map.get_tile_instance(p.item.tile) t.progress(p.position, p.speed, p.warn, players.get(p.player)) else: - players[p.item.player].progress(p.position, p.speed, p.warn) + players[p.item.player[0]].progress(p.position, p.speed, p.warn, int(p.item.player[1])) "clear_progress": if "tile" in p.item: var t: Tile = map.get_tile_instance(p.item.tile) t.finish() else: - players[p.item.player].finish() + players[p.item.player[0]].finish(int(p.item.player[1])) "set_item": var location: Dictionary = p["location"] if p.item != null: @@ -177,21 +180,23 @@ func handle_packet(p): i.name = item_names[p.item] t.set_item(i) else: - var pl: Player = players[p.location.player] - var i = ItemFactory.produce(item_names[p.item], pl.hand_base) - i.position = pl.hand_base.global_position + var pl: Player = players[p.location.player[0]] + var h = p.location.player[1] + var i = ItemFactory.produce(item_names[p.item], pl.hand_base[h]) + i.position = pl.hand_base[h].global_position add_child(i) i.name = item_names[p.item] - pl.set_item(i) + pl.set_item(i, h) else: if "tile" in p.location: var t: Tile = map.get_tile_instance(p.location.tile) t.finish() t.set_item(null) else: - var player: Player = players[p.location.player] - player.finish() - player.set_item(null) + var pl: Player = players[p.location.player[0]] + var h = p.location.player[1] + pl.finish(h) + pl.set_item(null, h) "update_map": var neighbors: Array = p["neighbors"] if p.kind != null: |