diff options
-rw-r--r-- | client/game.gd | 16 | ||||
-rw-r--r-- | client/menu/game.tscn | 2 | ||||
-rw-r--r-- | client/menu/popup_message/popup_message.gd (renamed from client/menu/popup_message.gd) | 34 | ||||
-rw-r--r-- | client/menu/popup_message/popup_message.tscn (renamed from client/menu/popup_message.tscn) | 42 | ||||
-rw-r--r-- | client/menu/popup_message/server_message.tscn | 48 | ||||
-rw-r--r-- | locale/en.ini | 1 |
6 files changed, 107 insertions, 36 deletions
diff --git a/client/game.gd b/client/game.gd index d286d876..80a8177c 100644 --- a/client/game.gd +++ b/client/game.gd @@ -232,6 +232,22 @@ func handle_packet(p): push_error("Server error: %s" % mstr) else: popup_message.display_server_msg(mstr) + "server_hint": + var message = p.get("message") + var position_ = p.get("position") + + if position_ == null: + # Global hint message + if message == null: + popup_message.clear_server_msg() + else: + popup_message.display_server_msg(get_message_str(message), false) + else: + # Positional hint message + if message == null: + popup_message.clear_server_msg() + else: + popup_message.display_server_msg_positional(get_message_str(message), position_, false) "environment": $Environment.update(p.effects) "replay_start": diff --git a/client/menu/game.tscn b/client/menu/game.tscn index cf596f77..23929591 100644 --- a/client/menu/game.tscn +++ b/client/menu/game.tscn @@ -4,7 +4,7 @@ [ext_resource type="PackedScene" uid="uid://c6krh36hoqfg8" path="res://game.tscn" id="2_uojcy"] [ext_resource type="PackedScene" uid="uid://bpikve6wlsjfl" path="res://menu/overlay.tscn" id="3_i0ytb"] [ext_resource type="PackedScene" uid="uid://bc50la65ntifb" path="res://menu/lobby.tscn" id="3_udxby"] -[ext_resource type="PackedScene" uid="uid://b21nrnkygiyjt" path="res://menu/popup_message.tscn" id="5_n1wy0"] +[ext_resource type="PackedScene" uid="uid://b21nrnkygiyjt" path="res://menu/popup_message/popup_message.tscn" id="5_n1wy0"] [ext_resource type="PackedScene" uid="uid://xcxbmynn8mhi" path="res://menu/chat/chat_preview.tscn" id="6_dh5lr"] [node name="GameMenu" type="Control"] diff --git a/client/menu/popup_message.gd b/client/menu/popup_message/popup_message.gd index d3e7905d..3fa8dcaf 100644 --- a/client/menu/popup_message.gd +++ b/client/menu/popup_message/popup_message.gd @@ -21,12 +21,14 @@ var is_ingame := false var is_joined := false @onready var server_msg = $VBox/ServerMessage +@onready var server_msg_positional = $ServerMessagePositional @onready var hint_msg = $VBox/HintMessage @onready var server_msg_timer: Timer = $ServerTimer @onready var hint_msg_timer: Timer = $HintTimer @onready var server_msg_label: Label = $VBox/ServerMessage/CenterContainer/Label +@onready var server_msg_positional_label: Label = $ServerMessagePositional/ServerMessage/CenterContainer/Label @onready var hint_msg_label: Label = $VBox/HintMessage/CenterContainer/Label @onready var auto_hint_timers: Node = $AutoHintTimers @@ -36,6 +38,8 @@ var is_joined := false @onready var game: Game = $"../Game" +var server_message_position := Vector2.ZERO + func _ready(): game.joined.connect( func player_joined(): @@ -48,6 +52,11 @@ func _ready(): update_state() ) +func _process(delta: float): + if server_msg_positional.visible: + var pos_3d = Vector3(server_message_position.x, 1, server_message_position.y) + server_msg_positional.position = get_viewport().get_camera_3d().unproject_position(pos_3d) + func ingame(): is_ingame = true update_state() @@ -65,17 +74,34 @@ func update_state(): else: stop_game_hints() -func display_server_msg(msg: String): +func display_server_msg(msg: String, auto_remove := true): + clear_server_msg() server_msg.show() server_msg_label.text = msg - server_msg_timer.start() + + if auto_remove: + server_msg_timer.start() -func _on_server_timer_timeout(): +func display_server_msg_positional(msg: String, pos: Vector2, auto_remove := true): + clear_server_msg() + server_msg_positional.show() + server_message_position = pos + server_msg_positional_label.text = msg + + if auto_remove: + server_msg_timer.start() + +func clear_server_msg(): + server_msg_timer.stop() server_msg.hide() + server_msg_positional.hide() + +func _on_server_timer_timeout(): + clear_server_msg() func display_hint_msg(msg: String): hint_msg.show() - hint_msg_label.text = tr("Hint") + ": %s" % msg + hint_msg_label.text = msg hint_msg_timer.start() func _on_hint_timer_timeout(): diff --git a/client/menu/popup_message.tscn b/client/menu/popup_message/popup_message.tscn index 0df38364..3669724a 100644 --- a/client/menu/popup_message.tscn +++ b/client/menu/popup_message/popup_message.tscn @@ -1,19 +1,20 @@ [gd_scene load_steps=12 format=3 uid="uid://b21nrnkygiyjt"] [ext_resource type="Theme" uid="uid://b0qmvo504e457" path="res://menu/theme/theme.tres" id="1_a1566"] -[ext_resource type="Script" path="res://menu/popup_message.gd" id="2_sbew6"] +[ext_resource type="Script" path="res://menu/popup_message/popup_message.gd" id="2_sbew6"] [ext_resource type="Shader" path="res://menu/blur_mix.gdshader" id="3_2vnom"] +[ext_resource type="PackedScene" uid="uid://dq61p3a8og2b6" path="res://menu/popup_message/server_message.tscn" id="3_m3rok"] [ext_resource type="Script" path="res://menu/blur_setup.gd" id="4_pvwmw"] [ext_resource type="FontFile" uid="uid://bk704sc5gkrb3" path="res://menu/theme/font-azaret-mono.woff2" id="4_wsrnf"] [ext_resource type="Texture2D" uid="uid://b2uv5rf0enikf" path="res://menu/hint.svg" id="5_2dxsd"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_q3bbd"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_k0m35"] shader = ExtResource("3_2vnom") shader_parameter/blur_amount = 3.5 shader_parameter/mix_amount = 0.85 -shader_parameter/mix_amount_no_blur = 0.85 -shader_parameter/color_over = Color(1, 1, 1, 1) -shader_parameter/enable_blur = true +shader_parameter/mix_amount_no_blur = 1.0 +shader_parameter/color_over = Color(0, 0, 0, 1) +shader_parameter/enable_blur = null [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vq4dg"] bg_color = Color(1, 1, 1, 0.878431) @@ -32,14 +33,6 @@ content_margin_top = 8.0 content_margin_right = 32.0 content_margin_bottom = 8.0 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_k0m35"] -shader = ExtResource("3_2vnom") -shader_parameter/blur_amount = 3.5 -shader_parameter/mix_amount = 0.85 -shader_parameter/mix_amount_no_blur = 1.0 -shader_parameter/color_over = Color(0, 0, 0, 1) -shader_parameter/enable_blur = null - [node name="PopupMessage" type="MarginContainer"] anchors_preset = 15 anchor_right = 1.0 @@ -54,25 +47,9 @@ script = ExtResource("2_sbew6") layout_mode = 2 mouse_filter = 2 -[node name="ServerMessage" type="PanelContainer" parent="VBox"] +[node name="ServerMessage" parent="VBox" instance=ExtResource("3_m3rok")] visible = false -material = SubResource("ShaderMaterial_q3bbd") layout_mode = 2 -size_flags_horizontal = 4 -size_flags_vertical = 0 -mouse_filter = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_vq4dg") -script = ExtResource("4_pvwmw") - -[node name="CenterContainer" type="CenterContainer" parent="VBox/ServerMessage"] -layout_mode = 2 - -[node name="Label" type="Label" parent="VBox/ServerMessage/CenterContainer"] -layout_mode = 2 -theme_override_colors/font_color = Color(0, 0, 0, 1) -theme_override_fonts/font = SubResource("FontVariation_qfltj") -theme_override_styles/normal = SubResource("StyleBoxEmpty_3rgop") -text = "Server message" [node name="HintMessage" type="PanelContainer" parent="VBox"] visible = false @@ -155,6 +132,11 @@ one_shot = true wait_time = 5.0 one_shot = true +[node name="ServerMessagePositional" type="Node2D" parent="."] +visible = false + +[node name="ServerMessage" parent="ServerMessagePositional" instance=ExtResource("3_m3rok")] + [connection signal="timeout" from="ServerTimer" to="." method="_on_server_timer_timeout"] [connection signal="timeout" from="HintTimer" to="." method="_on_hint_timer_timeout"] [connection signal="timeout" from="AutoHintTimers/Move" to="." method="_on_move_timeout"] diff --git a/client/menu/popup_message/server_message.tscn b/client/menu/popup_message/server_message.tscn new file mode 100644 index 00000000..35efcd3e --- /dev/null +++ b/client/menu/popup_message/server_message.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=8 format=3 uid="uid://dq61p3a8og2b6"] + +[ext_resource type="Shader" path="res://menu/blur_mix.gdshader" id="1_la056"] +[ext_resource type="Script" path="res://menu/blur_setup.gd" id="2_uinkj"] +[ext_resource type="FontFile" uid="uid://bk704sc5gkrb3" path="res://menu/theme/font-azaret-mono.woff2" id="3_7fupk"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_q3bbd"] +shader = ExtResource("1_la056") +shader_parameter/blur_amount = 3.5 +shader_parameter/mix_amount = 0.85 +shader_parameter/mix_amount_no_blur = 0.85 +shader_parameter/color_over = Color(1, 1, 1, 1) +shader_parameter/enable_blur = true + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vq4dg"] +bg_color = Color(1, 1, 1, 0.878431) +corner_radius_top_left = 16 +corner_radius_top_right = 16 +corner_radius_bottom_right = 16 +corner_radius_bottom_left = 16 + +[sub_resource type="FontVariation" id="FontVariation_qfltj"] +base_font = ExtResource("3_7fupk") +variation_embolden = 0.75 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3rgop"] +content_margin_left = 32.0 +content_margin_top = 8.0 +content_margin_right = 32.0 +content_margin_bottom = 8.0 + +[node name="ServerMessage" type="PanelContainer"] +material = SubResource("ShaderMaterial_q3bbd") +size_flags_horizontal = 4 +size_flags_vertical = 0 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_vq4dg") +script = ExtResource("2_uinkj") + +[node name="CenterContainer" type="CenterContainer" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="CenterContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_fonts/font = SubResource("FontVariation_qfltj") +theme_override_styles/normal = SubResource("StyleBoxEmpty_3rgop") +text = "Server message" diff --git a/locale/en.ini b/locale/en.ini index 81f17ae3..86a3b61c 100644 --- a/locale/en.ini +++ b/locale/en.ini @@ -20,7 +20,6 @@ c.hint.reset_camera=Press %s to reset the camera view c.hint.rotate=Use %s to rotate the camera view c.hint.username_tags=Username tags can be enabled/disabled in the settings c.hint.zoom_camera=Use %s to zoom in/out -c.hint=Hint c.map.difficulty.0=Easy c.map.difficulty.1=Hard c.map.difficulty.2=Moderate |