aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-01 19:04:24 +0200
committernokoe <nokoe@mailbox.org>2024-07-01 19:05:08 +0200
commit29a2d1f64beed7eb527de4d8a1725725cdd19fba (patch)
tree0f7f07867c9fd0d58b0012e46741bf8c5f64aa59
parentb6dddafa910f096f7e627cce90ed74b04b7be281 (diff)
downloadhurrycurry-29a2d1f64beed7eb527de4d8a1725725cdd19fba.tar
hurrycurry-29a2d1f64beed7eb527de4d8a1725725cdd19fba.tar.bz2
hurrycurry-29a2d1f64beed7eb527de4d8a1725725cdd19fba.tar.zst
add time
-rw-r--r--client/game.gd3
-rw-r--r--client/menu/overlay.gd18
-rw-r--r--client/menu/overlay.tscn121
-rw-r--r--client/multiplayer.gd67
4 files changed, 141 insertions, 68 deletions
diff --git a/client/game.gd b/client/game.gd
index ca25d77a..51f593a7 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -182,7 +182,10 @@ func _ready():
await get_parent().menu_anim_exit()
)
+ mp.server_message.connect(func(text): print(text))
+
mp.score.connect($Overlay.update)
+ mp.hide_score.connect($Overlay.hide)
func _process(delta):
marker.position = lerp(marker.position, marker_target, delta * 40.0)
diff --git a/client/menu/overlay.gd b/client/menu/overlay.gd
index 0fc40f0b..92297704 100644
--- a/client/menu/overlay.gd
+++ b/client/menu/overlay.gd
@@ -7,11 +7,14 @@ var failed: int = 0
var completed: int = 0
var points: int = 0
-@onready var failed_label: Label = $Control/Paper/Margin/Lines/Line2/Failed
-@onready var completed_label: Label = $Control/Paper/Margin/Lines/Line1/Completed
-@onready var points_label: Label = $Control/Paper/Margin/Lines/Line3/Points
+@onready var failed_label: Label = $Score/Paper/Margin/Lines/Line2/Failed
+@onready var completed_label: Label = $Score/Paper/Margin/Lines/Line1/Completed
+@onready var points_label: Label = $Score/Paper/Margin/Lines/Line3/Points
+@onready var timer: Timer = $Timer
+@onready var seconds_label: Label = $Time/Paper/Line/Seconds
+@onready var decimals_label: Label = $Time/Paper/Line/Decimals
-func update(failed_: int, completed_: int, points_: int):
+func update(failed_: int, completed_: int, points_: int, time: float):
if failed_ - failed:
failed_label.text = str(failed_)
failed_label.scale = LABEL_SCALE
@@ -24,8 +27,15 @@ func update(failed_: int, completed_: int, points_: int):
points_label.text = str(points_)
points_label.scale = LABEL_SCALE
points = points_
+ timer.wait_time = time
+
+ if timer.is_stopped():
+ timer.start()
func _process(delta):
failed_label.scale = lerp(failed_label.scale, Vector2(1, 1), delta * 4.)
completed_label.scale = lerp(completed_label.scale, Vector2(1, 1), delta * 4.)
points_label.scale = lerp(points_label.scale, Vector2(1, 1), delta * 4.)
+ var seconds: float = floor(timer.time_left)
+ seconds_label.text = str(int(seconds))
+ decimals_label.text = "%01d" % int((timer.time_left - seconds) * 10)
diff --git a/client/menu/overlay.tscn b/client/menu/overlay.tscn
index 66e2a9f3..9745de5d 100644
--- a/client/menu/overlay.tscn
+++ b/client/menu/overlay.tscn
@@ -21,35 +21,40 @@ color_ramp = SubResource("Gradient_pkrjd")
noise = SubResource("FastNoiseLite_k7p6k")
[node name="Overlay" type="PanelContainer"]
-anchors_preset = 1
-anchor_left = 1.0
+anchors_preset = 15
anchor_right = 1.0
-offset_left = -290.0
-offset_bottom = 125.0
-grow_horizontal = 0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
theme = ExtResource("1_4kujw")
theme_override_styles/panel = SubResource("StyleBoxFlat_04ujj")
script = ExtResource("2_kbjds")
-[node name="Control" type="Control" parent="."]
+[node name="Timer" type="Timer" parent="."]
+wait_time = 30.0
+
+[node name="Score" type="Control" parent="."]
layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 4
+size_flags_horizontal = 8
+size_flags_vertical = 0
-[node name="Paper" type="TextureRect" parent="Control"]
+[node name="Paper" type="TextureRect" parent="Score"]
layout_mode = 1
-anchors_preset = 2
-anchor_top = 1.0
-anchor_bottom = 1.0
-offset_left = -88.0
-offset_top = -397.0
-offset_right = 424.0
-offset_bottom = 115.0
-grow_vertical = 0
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -214.0
+offset_top = -339.0
+offset_right = 298.0
+offset_bottom = 173.0
+grow_horizontal = 2
+grow_vertical = 2
rotation = 0.0610865
texture = SubResource("NoiseTexture2D_jq3d3")
-[node name="Margin" type="MarginContainer" parent="Control/Paper"]
+[node name="Margin" type="MarginContainer" parent="Score/Paper"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
@@ -60,76 +65,130 @@ grow_vertical = 0
theme_override_constants/margin_left = 10
theme_override_constants/margin_bottom = 10
-[node name="Lines" type="VBoxContainer" parent="Control/Paper/Margin"]
+[node name="Lines" type="VBoxContainer" parent="Score/Paper/Margin"]
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 8
-[node name="Line1" type="HBoxContainer" parent="Control/Paper/Margin/Lines"]
+[node name="Line1" type="HBoxContainer" parent="Score/Paper/Margin/Lines"]
layout_mode = 2
-[node name="Label" type="Label" parent="Control/Paper/Margin/Lines/Line1"]
+[node name="Label" type="Label" parent="Score/Paper/Margin/Lines/Line1"]
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 25
text = "Completed"
-[node name="Spacer" type="Control" parent="Control/Paper/Margin/Lines/Line1"]
+[node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line1"]
layout_mode = 2
size_flags_horizontal = 3
-[node name="Completed" type="Label" parent="Control/Paper/Margin/Lines/Line1"]
+[node name="Completed" type="Label" parent="Score/Paper/Margin/Lines/Line1"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
+auto_translate = false
theme_override_colors/font_color = Color(0, 0.278431, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 35
text = "0"
horizontal_alignment = 1
-[node name="Line2" type="HBoxContainer" parent="Control/Paper/Margin/Lines"]
+[node name="Line2" type="HBoxContainer" parent="Score/Paper/Margin/Lines"]
layout_mode = 2
-[node name="Label" type="Label" parent="Control/Paper/Margin/Lines/Line2"]
+[node name="Label" type="Label" parent="Score/Paper/Margin/Lines/Line2"]
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 25
text = "Failed"
-[node name="Spacer" type="Control" parent="Control/Paper/Margin/Lines/Line2"]
+[node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line2"]
layout_mode = 2
size_flags_horizontal = 3
-[node name="Failed" type="Label" parent="Control/Paper/Margin/Lines/Line2"]
+[node name="Failed" type="Label" parent="Score/Paper/Margin/Lines/Line2"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
+auto_translate = false
theme_override_colors/font_color = Color(0.505882, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 35
text = "0"
horizontal_alignment = 1
-[node name="Line3" type="HBoxContainer" parent="Control/Paper/Margin/Lines"]
+[node name="Line3" type="HBoxContainer" parent="Score/Paper/Margin/Lines"]
layout_mode = 2
-[node name="Label" type="Label" parent="Control/Paper/Margin/Lines/Line3"]
+[node name="Label" type="Label" parent="Score/Paper/Margin/Lines/Line3"]
layout_mode = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 35
text = "Points"
-[node name="Spacer" type="Control" parent="Control/Paper/Margin/Lines/Line3"]
+[node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line3"]
layout_mode = 2
size_flags_horizontal = 3
-[node name="Points" type="Label" parent="Control/Paper/Margin/Lines/Line3"]
+[node name="Points" type="Label" parent="Score/Paper/Margin/Lines/Line3"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
+auto_translate = false
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = ExtResource("3_u54fv")
theme_override_font_sizes/font_size = 45
text = "0"
horizontal_alignment = 1
+
+[node name="Time" type="Control" parent="."]
+layout_mode = 2
+size_flags_horizontal = 8
+size_flags_vertical = 8
+
+[node name="Paper" type="TextureRect" parent="Time"]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -193.0
+offset_top = -208.0
+offset_right = 319.0
+offset_bottom = 304.0
+grow_horizontal = 2
+grow_vertical = 2
+rotation = 0.0610865
+texture = SubResource("NoiseTexture2D_jq3d3")
+
+[node name="Line" type="HBoxContainer" parent="Time/Paper"]
+layout_mode = 0
+
+[node name="Seconds" type="Label" parent="Time/Paper/Line"]
+custom_minimum_size = Vector2(100, 0)
+layout_mode = 2
+auto_translate = false
+theme_override_colors/font_color = Color(0, 0, 0, 1)
+theme_override_fonts/font = ExtResource("3_u54fv")
+theme_override_font_sizes/font_size = 45
+text = "300"
+horizontal_alignment = 2
+
+[node name="Point" type="Label" parent="Time/Paper/Line"]
+layout_mode = 2
+auto_translate = false
+theme_override_colors/font_color = Color(0, 0, 0, 1)
+theme_override_fonts/font = ExtResource("3_u54fv")
+theme_override_font_sizes/font_size = 45
+text = "."
+horizontal_alignment = 1
+
+[node name="Decimals" type="Label" parent="Time/Paper/Line"]
+layout_mode = 2
+auto_translate = false
+theme_override_colors/font_color = Color(0, 0, 0, 1)
+theme_override_fonts/font = ExtResource("3_u54fv")
+theme_override_font_sizes/font_size = 45
+text = "00"
diff --git a/client/multiplayer.gd b/client/multiplayer.gd
index 68c0c0f3..eae2a7f0 100644
--- a/client/multiplayer.gd
+++ b/client/multiplayer.gd
@@ -43,7 +43,9 @@ signal remove_player_item(player: int)
signal set_progress(tile: Vector2i, progress: float, warn: bool)
signal set_finished(tile: Vector2i, warn: bool)
signal set_ingame(state: bool)
-signal score(demands_failed: int, demands_completed: int, points: int)
+signal score(demands_failed: int, demands_completed: int, points: int, time_remaining: float)
+signal hide_score()
+signal server_message(text: String)
signal connection_closed(reason: String)
@@ -71,7 +73,9 @@ func _process(_delta):
elif state == WebSocketPeer.STATE_CLOSED:
var code = socket.get_close_code()
var reason = socket.get_close_reason()
- emit_signal("connection_closed", "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1])
+ connection_closed.emit(
+ "WebSocket closed with code: %d, reason %s. Clean: %s" % [code, reason, code != -1]
+ )
self.queue_free()
func handle_packet(bytes: PackedByteArray):
@@ -84,75 +88,65 @@ func handle_packet(bytes: PackedByteArray):
match packet_type:
"init":
var player_id = decoded["id"]
- emit_signal("init", player_id)
+ init.emit(player_id)
"data":
var item_names = decoded["data"]["item_names"]
var tile_names = decoded["data"]["tile_names"]
var tile_collide = decoded["data"]["tile_collide"]
var tile_interact = decoded["data"]["tile_interact"]
- emit_signal("data",
- item_names,
- tile_names,
- tile_collide,
- tile_interact
- )
+ data.emit(item_names, tile_names, tile_collide, tile_interact)
"add_player":
var id = decoded["id"]
var player_name = decoded["name"]
var pos = decoded["position"]
var character = decoded["character"]
- emit_signal("add_player", id, player_name, pos_to_vec2(pos), character)
+ add_player.emit(id, player_name, pos_to_vec2(pos), character)
"remove_player":
var id = decoded["id"]
- emit_signal("remove_player", id)
+ remove_player.emit(id)
"position":
var player = decoded["player"]
var pos = decoded["pos"]
var rot = decoded["rot"]
- emit_signal("position", player, pos_to_vec2(pos), rot)
+ position.emit(player, pos_to_vec2(pos), rot)
"take_item":
var tile = pos_to_vec2i(decoded["tile"])
var player = decoded["player"]
- emit_signal("take_item", tile, player)
+ take_item.emit(tile, player)
"put_item":
var tile = pos_to_vec2i(decoded["tile"])
var player = decoded["player"]
- emit_signal("put_item", tile, player)
+ put_item.emit(tile, player)
"set_active":
var tile = pos_to_vec2i(decoded["tile"])
var warn = decoded["warn"]
var progress = decoded.get("progress")
if progress != null:
- emit_signal("set_progress", tile, decoded["progress"], warn)
+ set_progress.emit(tile, decoded["progress"], warn)
else:
- emit_signal("set_finished", tile, warn)
+ set_finished.emit(tile, warn)
"set_tile_item":
var tile = pos_to_vec2i(decoded["tile"])
var item = decoded.get("item")
if item != null:
- emit_signal("set_tile_item", tile, item)
+ set_tile_item.emit(tile, item)
else:
- emit_signal("remove_tile_item", tile)
+ remove_tile_item.emit(tile)
"set_player_item":
var player = decoded["player"]
var item = decoded.get("item")
if item != null:
- emit_signal("set_player_item", player, decoded["item"])
+ set_player_item.emit(player, decoded["item"])
else:
- emit_signal("remove_player_item", player)
+ remove_player_item.emit(player)
"update_map":
var tile: Vector2i = pos_to_vec2i(decoded["tile"])
var kind = decoded.get("kind")
var neighbors: Array = decoded["neighbors"]
if kind != null:
- emit_signal(
- "set_tile",
- tile,
- kind,
- neighbors,
- )
+ set_tile.emit(tile, kind, neighbors)
else:
- emit_signal("remove_tile", tile)
+ remove_tile.emit(tile)
"communicate":
var player: int = decoded["player"]
var message = decoded.get("message")
@@ -162,18 +156,18 @@ func handle_packet(bytes: PackedByteArray):
var text = message.get("text")
var effect = message.get("effect")
if item != null:
- emit_signal("item_message", player, item, persist)
+ item_message.emit(player, item, persist)
elif text != null:
- emit_signal("text_message", player, text, persist)
+ text_message.emit(player, text, persist)
elif effect != null:
- emit_signal("effect_message", player, effect, persist)
+ effect_message.emit(player, effect, persist)
else:
push_error("neither text, item nor effect provided")
else:
- emit_signal("clear_message", player)
+ clear_message.emit(player)
"set_ingame":
var state = decoded["state"]
- emit_signal("set_ingame", state)
+ set_ingame.emit(state)
"error":
var message = decoded["message"]
push_warning("server error: %s" % message)
@@ -181,7 +175,14 @@ func handle_packet(bytes: PackedByteArray):
var demands_failed: int = decoded["demands_failed"]
var demands_completed: int = decoded["demands_completed"]
var points: int = decoded["points"]
- emit_signal("score", demands_failed, demands_completed, points)
+ var time_remaining = decoded.get("time_remaining")
+ if time_remaining != null:
+ score.emit(demands_failed, demands_completed, points, time_remaining)
+ else:
+ hide_score.emit()
+ "server_message":
+ var text = decoded["text"]
+ server_message.emit(text)
_:
push_error("Unrecognized packet type: %s" % packet_type)