diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 10 | ||||
-rw-r--r-- | client/map/tiles/tile.gd | 6 | ||||
-rw-r--r-- | client/multiplayer.gd | 7 |
3 files changed, 19 insertions, 4 deletions
diff --git a/client/game.gd b/client/game.gd index 55bc9dac..27a5715b 100644 --- a/client/game.gd +++ b/client/game.gd @@ -138,12 +138,18 @@ func _ready(): p.put_item(t) ) - mp.pass_item.connect(func(from: int, to: int): + mp.pass_item_player.connect(func(from: int, to: int): var from_player: Player = players[from] var to_player: Player = players[to] from_player.pass_to(to_player) ) + mp.pass_item_tile.connect(func(from: Vector2i, to: Vector2i): + var from_tile: Tile = map.get_tile_instance(from) + var to_tile: Tile = map.get_tile_instance(to) + from_tile.pass_to(to_tile) + ) + mp.set_tile_progress.connect(func(tile: Vector2i, progress: float, warn: bool): var t: Tile = map.get_tile_instance(tile) t.progress(progress, warn) @@ -204,7 +210,7 @@ func _ready(): func _process(delta): marker.position = Global.interpolate(marker.position, marker_target, delta * 30.) - + if Global.get_setting("debug_info"): debug_label.show() debug_label.text = "%d FPS" % Engine.get_frames_per_second() diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd index 039a6c1b..220a4395 100644 --- a/client/map/tiles/tile.gd +++ b/client/map/tiles/tile.gd @@ -64,6 +64,12 @@ func put_item(i: Item): push_error("already holding an item") set_item(i) +func pass_to(tile: Tile): + var i = take_item() + if tile.item != null: + push_error("target is already holding an item") + tile.set_item(i) + func set_item(i: Item): if item != null: item.queue_free() diff --git a/client/multiplayer.gd b/client/multiplayer.gd index d4864d01..e28b6d2a 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -36,7 +36,8 @@ signal remove_player(player: int) signal position(player: int, position: Vector2, rotation: float) signal take_item(tile: Vector2i, player: int) signal put_item(player: int, tile: Vector2i, ) -signal pass_item(from: int, to: int) +signal pass_item_player(from: int, to: int) +signal pass_item_tile(from: Vector2i, to: Vector2i) signal set_tile_item(tile: Vector2i, item: int) signal remove_tile_item(tile: Vector2i) signal set_player_item(player: int, item: int) @@ -130,11 +131,13 @@ func handle_packet(bytes: PackedByteArray): var to_player = to.get("player") var to_tile = to.get("tile") if from_player != null and to_player != null: - pass_item.emit(from_player, to_player) + pass_item_player.emit(from_player, to_player) elif from_tile != null and to_player != null: take_item.emit(pos_to_vec2i(from_tile), to_player) elif from_player != null and to_tile != null: put_item.emit(from_player, pos_to_vec2i(to_tile)) + elif from_tile != null and to_tile != null: + pass_item_tile.emit(pos_to_vec2i(from_tile), pos_to_vec2i(to_tile)) "set_active": push_warning("set_active is deprecated") var tile = pos_to_vec2i(decoded["tile"]) |