aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/game.gd16
-rw-r--r--client/menu/game.tscn2
-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.tscn48
-rw-r--r--locale/en.ini1
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