diff options
Diffstat (limited to 'client/game.gd')
-rw-r--r-- | client/game.gd | 60 |
1 files changed, 23 insertions, 37 deletions
diff --git a/client/game.gd b/client/game.gd index 2e600d7c..d286d876 100644 --- a/client/game.gd +++ b/client/game.gd @@ -89,10 +89,9 @@ func handle_packet(p): data_updated.emit() "add_player": - var pos = pos_to_vec2(p["position"]) var player_instance: Player if p.id == player_id: - player_instance = ControllablePlayer.new(p.id, p.name, pos, p.character, self) + player_instance = ControllablePlayer.new(p.id, p.name, p.position, p.character, self) in_lobby_updated.connect(player_instance.onscreen_controls.in_lobby_updated) player_instance.onscreen_controls.in_lobby_updated(in_lobby) camera.target = player_instance.movement_base @@ -100,7 +99,7 @@ func handle_packet(p): join_sent = true joined.emit() else: - player_instance = Player.new(p.id, p.name, pos, p.character, self) + player_instance = Player.new(p.id, p.name, p.position, p.character, self) players[p.id] = player_instance add_child(player_instance) update_players.emit(players) @@ -118,12 +117,9 @@ func handle_packet(p): player.queue_free() update_players.emit(players) "movement": - var pos = pos_to_vec2(p.pos) - var dir = pos_to_vec2(p.dir) var player_instance: Player = players[p.player] - player_instance.update_position(pos, p.rot, p.boost) - if p.player == player_id: - last_position = pos + player_instance.update_position(p.pos, p.rot, p.boost) + if p.player == player_id: last_position = p.pos "movement_sync": if not players.has(player_id): return var player_instance: ControllablePlayer = players[player_id] @@ -132,60 +128,56 @@ func handle_packet(p): if "player" in p.from and "player" in p.to: players[p.from.player].pass_to(p.to.player) elif "tile" in p.from and "player" in p.to: - var t: Tile = map.get_tile_instance(pos_to_vec2i(p.from.tile)) + var t: Tile = map.get_tile_instance(p.from.tile) players[p.to.player].take_item(t) elif "player" in p.from and "tile" in p.to: - var t: Tile = map.get_tile_instance(pos_to_vec2i(p.to.tile)) + var t: Tile = map.get_tile_instance(p.to.tile) players[p.from.player].put_item(t) elif "tile" in p.from and "tile" in p.to: - var from_tile2: Tile = map.get_tile_instance(pos_to_vec2i(p.from.tile)) - var to_tile2: Tile = map.get_tile_instance(pos_to_vec2i(p.to.tile)) + var from_tile2: Tile = map.get_tile_instance(p.from.tile) + var to_tile2: Tile = map.get_tile_instance(p.to.tile) from_tile2.pass_to(to_tile2) "set_progress": if "tile" in p.item: @warning_ignore("incompatible_ternary") - var t: Tile = map.get_tile_instance(pos_to_vec2i(p.item.tile)) + var t: Tile = map.get_tile_instance(p.item.tile) t.progress(p.position, p.speed, p.warn, players.get(p.acting_player if "acting_player" in p else null)) else: players[p.item.player].progress(p.position, p.speed, p.warn) "clear_progress": if "tile" in p.item: - var t: Tile = map.get_tile_instance(pos_to_vec2i(p.item.tile)) + var t: Tile = map.get_tile_instance(p.item.tile) t.finish() else: players[p.item.player].finish() "set_item": var location: Dictionary = p["location"] - var tile = location.get("tile") - var player = location.get("player") - var item = p.get("item") - if item != null: - if tile != null: - var t: Tile = map.get_tile_instance(pos_to_vec2i(tile)) - var i = ItemFactory.produce(item_names[item], t.item_base) + if p.item != null: + if "tile" in p.location: + var t: Tile = map.get_tile_instance(p.location.tile) + var i = ItemFactory.produce(item_names[p.item], t.item_base) i.position = t.item_base.global_position add_child(i) - i.name = item_names[item] + i.name = item_names[p.item] t.set_item(i) else: - var pl: Player = players[player] - var i = ItemFactory.produce(item_names[item], pl.hand_base) + var pl: Player = players[p.location.player] + var i = ItemFactory.produce(item_names[p.item], pl.hand_base) add_child(i) - i.name = item_names[item] + i.name = item_names[p.item] pl.set_item(i) else: - if tile != null: - var t: Tile = map.get_tile_instance(pos_to_vec2i(tile)) + if "tile" in p.location: + var t: Tile = map.get_tile_instance(p.location.tile) t.set_item(null) else: - players[player].set_item(null) + players[p.location.player].set_item(null) "update_map": - var tile: Vector2i = pos_to_vec2i(p["tile"]) var neighbors: Array = p["neighbors"] if p.kind != null: if neighbors != null: neighbors = neighbors.map(func(x): return tile_names[x] if x != null else null) - map.set_tile(tile, tile_names[p.kind], neighbors) - else: map.clear_tile(tile) + map.set_tile(p.tile, tile_names[p.kind], neighbors) + else: map.clear_tile(p.tile) "communicate": var timeout_initial: float = p["timeout"]["initial"] if p["timeout"] != null else 5. var timeout_remaining: float = p["timeout"]["remaining"] if p["timeout"] != null else 5. @@ -327,9 +319,3 @@ func spectate_free(): var extents = map.extents() $Center.position.x = clamp($Center.position.x, extents[0].x, extents[1].x) $Center.position.z = clamp($Center.position.z, extents[0].y, extents[1].y) - -func pos_to_vec2(pos: Array) -> Vector2: - return Vector2(pos[0], pos[1]) - -func pos_to_vec2i(pos: Array) -> Vector2i: - return Vector2i(pos[0], pos[1]) |