diff options
Diffstat (limited to 'client/game.gd')
-rw-r--r-- | client/game.gd | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/client/game.gd b/client/game.gd index e7d39aa2..850d539e 100644 --- a/client/game.gd +++ b/client/game.gd @@ -128,8 +128,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 +144,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]], p.from.player[1], 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, 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, 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,7 +160,7 @@ 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, p.item.player[1]) "clear_progress": if "tile" in p.item: var t: Tile = map.get_tile_instance(p.item.tile) @@ -177,21 +178,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[G.hand_to_index(h)]) + i.position = pl.hand_base[G.hand_to_index(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() + pl.set_item(null, h) "update_map": var neighbors: Array = p["neighbors"] if p.kind != null: |