diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 3 | ||||
-rw-r--r-- | client/menu/overlay.gd | 18 | ||||
-rw-r--r-- | client/menu/overlay.tscn | 121 | ||||
-rw-r--r-- | client/multiplayer.gd | 67 |
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) |