aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-09-19 22:00:47 +0200
committertpart <tpart120@proton.me>2024-09-19 22:00:48 +0200
commitf241e4283c20dfedf27e4f9c5090a4533bd674d2 (patch)
treeb36aea59ddb31c046ab6cbb885ad9cc8a657e1ac
parente91afb1dce9344128ca96f0c418cdd59749e1d1e (diff)
downloadhurrycurry-f241e4283c20dfedf27e4f9c5090a4533bd674d2.tar
hurrycurry-f241e4283c20dfedf27e4f9c5090a4533bd674d2.tar.bz2
hurrycurry-f241e4283c20dfedf27e4f9c5090a4533bd674d2.tar.zst
Add tutorial queue logic
-rw-r--r--client/game.gd23
-rw-r--r--client/player/player.gd3
2 files changed, 21 insertions, 5 deletions
diff --git a/client/game.gd b/client/game.gd
index 64bdb78f..c36bc643 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -45,7 +45,8 @@ var in_lobby := false
var is_replay := false
var is_joined := false
var join_sent := false
-var tutorial_running = false
+var tutorial_running := false
+var tutorial_queue := []
var last_position := Vector2(0, 0)
var players := {}
@@ -186,9 +187,12 @@ func handle_packet(p):
var player: Player = players[p.player]
var item_name: String = item_names[p.message.item]
player.item_message(item_name, timeout_initial, timeout_remaining)
- if player.is_customer and not tutorial_running and not Global.get_profile("tutorials_played").has(item_name):
- tutorial_running = true
- mp.send_chat(player_id, "/start-tutorial %s" % item_name)
+ if player.is_customer and not Global.get_profile("tutorials_played").has(item_name):
+ if tutorial_running:
+ tutorial_queue.push_back(item_name)
+ else:
+ tutorial_running = true
+ mp.send_chat(player_id, "/start-tutorial %s" % item_name)
elif "text" in p.message:
players[p.player].text_message(p.message.text, timeout_initial, timeout_remaining)
var username: String = players[p.player].username
@@ -197,7 +201,10 @@ func handle_packet(p):
else:
push_error("neither text, item nor effect provided")
else:
- players[p.player].clear_message()
+ var player: Player = players[p.player]
+ if player.is_customer and player.current_item_message != null:
+ tutorial_queue.erase(player.current_item_message)
+ player.clear_message()
"effect":
players[p.player].effect_message(p.name)
"set_ingame":
@@ -229,6 +236,12 @@ func handle_packet(p):
played.append(p.item)
Global.set_profile("tutorials_played", played)
Global.save_profile()
+
+ tutorial_queue.erase(p.item)
+
+ if not tutorial_queue.is_empty():
+ tutorial_running = true
+ mp.send_chat(player_id, "/start-tutorial %s" % tutorial_queue.pop_front())
"menu":
match p.menu:
"book":
diff --git a/client/player/player.gd b/client/player/player.gd
index 6962744c..31a7a337 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -45,6 +45,7 @@ var hand: Item = null
var hand_base: Node3D = Node3D.new()
var character_idx: int
var is_customer: bool
+var current_item_message = null
var _anim_angle: float = 0.0
@@ -148,10 +149,12 @@ func clear_message():
item_bubble.remove_item()
chat_bubble.remove_text()
effect.clear_effect()
+ current_item_message = null
func item_message(item_name: String, timeout_initial: float, timeout_remaining: float):
item_bubble.set_item(item_name, timeout_initial, timeout_remaining)
clear_timer.start(timeout_remaining)
+ current_item_message = item_name
func text_message(m: String, _timeout_initial: float, timeout_remaining: float):
chat_bubble.set_text(m)