aboutsummaryrefslogtreecommitdiff
path: root/client/player
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2024-06-27 12:49:51 +0200
committertpart <tpart120@proton.me>2024-06-27 12:49:56 +0200
commit6fee504df93c8c9c9e7d01293ef8c9bee1f74f28 (patch)
treee5be4ca96140997cd4ea112d322a2d05906a21c4 /client/player
parentec6377cb004ae564a8ad2fd895f8aad09b0153c6 (diff)
downloadhurrycurry-6fee504df93c8c9c9e7d01293ef8c9bee1f74f28.tar
hurrycurry-6fee504df93c8c9c9e7d01293ef8c9bee1f74f28.tar.bz2
hurrycurry-6fee504df93c8c9c9e7d01293ef8c9bee1f74f28.tar.zst
Send chat messages
Diffstat (limited to 'client/player')
-rw-r--r--client/player/chat_bubble.gd22
-rw-r--r--client/player/chat_bubble.tscn15
-rw-r--r--client/player/controllable_player.gd15
3 files changed, 50 insertions, 2 deletions
diff --git a/client/player/chat_bubble.gd b/client/player/chat_bubble.gd
index 6b09b69b..1329e198 100644
--- a/client/player/chat_bubble.gd
+++ b/client/player/chat_bubble.gd
@@ -1,7 +1,12 @@
class_name ChatBubble
extends MeshInstance3D
+signal submit_message
+
@onready var label: Label = $SubViewport/ChatMessage/Label
+@onready var input: LineEdit = $LineEdit
+
+var editing := false
func set_text(t: String):
visible = true
@@ -10,3 +15,20 @@ func set_text(t: String):
func remove_text():
visible = false
label.text = ""
+
+func edit():
+ visible = true
+ label.text = ""
+ editing = true
+ input.grab_focus()
+
+func stop_edit():
+ visible = false
+ editing = false
+ input.release_focus()
+ if input.text != "":
+ submit_message.emit(input.text)
+ input.text = ""
+
+func _on_line_edit_text_changed(new_text):
+ label.text = new_text
diff --git a/client/player/chat_bubble.tscn b/client/player/chat_bubble.tscn
index adb68bc1..8d765156 100644
--- a/client/player/chat_bubble.tscn
+++ b/client/player/chat_bubble.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=6 format=3 uid="uid://cgi6vcfrnqp0i"]
+[gd_scene load_steps=7 format=3 uid="uid://cgi6vcfrnqp0i"]
[ext_resource type="Script" path="res://player/chat_bubble.gd" id="1_4v1cx"]
[ext_resource type="PackedScene" uid="uid://5rcfoyuiwuya" path="res://player/chat_message.tscn" id="2_lyyq0"]
@@ -17,6 +17,8 @@ shading_mode = 0
albedo_texture = SubResource("ViewportTexture_mko8a")
billboard_mode = 1
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_byl28"]
+
[node name="ChatBubble" type="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visible = false
@@ -25,7 +27,18 @@ surface_material_override/0 = SubResource("StandardMaterial3D_5iy0t")
script = ExtResource("1_4v1cx")
[node name="SubViewport" type="SubViewport" parent="."]
+disable_3d = true
transparent_bg = true
size = Vector2i(512, 128)
[node name="ChatMessage" parent="SubViewport" instance=ExtResource("2_lyyq0")]
+
+[node name="LineEdit" type="LineEdit" parent="."]
+modulate = Color(1, 1, 1, 0)
+offset_right = 67.0625
+offset_bottom = 31.0
+theme_override_styles/normal = SubResource("StyleBoxEmpty_byl28")
+theme_override_styles/focus = SubResource("StyleBoxEmpty_byl28")
+theme_override_styles/read_only = SubResource("StyleBoxEmpty_byl28")
+
+[connection signal="text_changed" from="LineEdit" to="." method="_on_line_edit_text_changed"]
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index 32fa3135..7b88debf 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -26,7 +26,8 @@ const BOOST_RESTORE = 0.5
var facing = Vector2(1, 0)
var velocity_ = Vector2(0, 0)
var stamina = 0
-var boosting = false
+var boosting := false
+var chat_open := false
var target: Vector2i = Vector2i(0, 0)
@@ -40,6 +41,15 @@ func _ready():
game.mp.send_position(position_, rotation_)
)
super()
+ bubble.submit_message.connect(submit_message)
+
+func _input(event):
+ if Input.is_action_just_pressed("chat"):
+ if chat_open:
+ bubble.stop_edit()
+ else:
+ bubble.edit()
+ chat_open = !chat_open
func _process(delta):
var input = Input.get_vector("left", "right", "forward", "backwards")
@@ -109,6 +119,9 @@ func update_position(new_position: Vector2, _new_rotation: float):
if (new_position - position_).length() > 3.:
position_ = new_position
+func submit_message(text: String):
+ game.mp.send_chat(text)
+
func interact():
var tile_idx = str(target)
var data = game.tile_by_pos.get(tile_idx)