aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-07 14:16:58 +0200
committernokoe <nokoe@mailbox.org>2024-07-07 14:16:58 +0200
commit27f93d1352e91c2b82c0d2a92dd4d92bfebf9795 (patch)
tree70e9879ef33401a7b8d77a74f10773a91b3c9022
parent8028f4083a725f2062b44925e7fa91872a6d12d2 (diff)
downloadhurrycurry-27f93d1352e91c2b82c0d2a92dd4d92bfebf9795.tar
hurrycurry-27f93d1352e91c2b82c0d2a92dd4d92bfebf9795.tar.bz2
hurrycurry-27f93d1352e91c2b82c0d2a92dd4d92bfebf9795.tar.zst
pass item from tile to tile
-rw-r--r--client/game.gd10
-rw-r--r--client/map/tiles/tile.gd6
-rw-r--r--client/multiplayer.gd7
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"])