Skip to content

Commit

Permalink
mobile ui fixes
Browse files Browse the repository at this point in the history
discover banner resize fixed
chat shows on messages, and line edit for sending messages shows when the virtual keyboard appears
fix focus issues with menu
  • Loading branch information
kuruk-mm committed Aug 19, 2024
1 parent bbcff1f commit 779a5f8
Show file tree
Hide file tree
Showing 11 changed files with 114 additions and 46 deletions.
8 changes: 8 additions & 0 deletions godot/src/global.gd
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,14 @@ func explorer_grab_focus() -> void:
explorer.ui_root.grab_focus.call_deferred()


func explorer_release_focus() -> void:
var explorer = get_explorer()
if explorer == null:
return

explorer.ui_root.release_focus.call_deferred()


func capture_mouse():
var explorer = get_node_or_null("/root/explorer")
if is_instance_valid(explorer):
Expand Down
2 changes: 1 addition & 1 deletion godot/src/logic/player/player_desktop_input.gd
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func _input(event):

# Toggle first or third person camera
if event is InputEventMouseButton:
if !_player.camera_mode_change_blocked:
if !_player.camera_mode_change_blocked and Global.explorer_has_focus():
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
if _player.camera.get_camera_mode() == Global.CameraMode.FIRST_PERSON:
_player.set_camera_mode(Global.CameraMode.THIRD_PERSON)
Expand Down
2 changes: 1 addition & 1 deletion godot/src/logic/player/player_mobile_input.gd
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func _input(event):
# Receives touchscreen motion
if Global.is_mobile() and (event is InputEventScreenTouch or event is InputEventScreenDrag):
var input_dir := Input.get_vector("ia_left", "ia_right", "ia_forward", "ia_backward")
if input_dir == Vector2.ZERO and event.index < 2: # Not walking
if input_dir == Vector2.ZERO and event.index < 2 and Global.explorer_has_focus(): # Not walking
if event is InputEventScreenTouch:
_positions[event.index] = event.position
if event.index == 1:
Expand Down
66 changes: 50 additions & 16 deletions godot/src/ui/components/chat/chat.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ const EMOTE: String = "␐"
const REQUEST_PING: String = "␑"
const ACK: String = "␆"

@onready var rich_text_label_chat = $MarginContainer/VBoxContainer/RichTextLabel_Chat
@onready
var line_edit_command = $MarginContainer/VBoxContainer/HBoxContainer_LineEdit/LineEdit_Command
var hide_tween = null

@onready var rich_text_label_chat = %RichTextLabel_Chat
@onready var h_box_container_line_edit = %HBoxContainer_LineEdit
@onready var line_edit_command = %LineEdit_Command

@onready var timer_hide = %Timer_Hide


func _ready():
Expand All @@ -20,15 +24,26 @@ func _ready():

submit_message.connect(self._on_submit_message)

h_box_container_line_edit.hide()

func _on_submit_message():

func _on_submit_message(_message: String):
UiSounds.play_sound("widget_chat_message_private_send")
if Global.is_mobile():
line_edit_command.grab_focus()
else:
_set_open_chat(false)


func add_chat_message(bb_text: String) -> void:
rich_text_label_chat.append_text(bb_text)
rich_text_label_chat.newline()

if hide_tween != null:
hide_tween.stop()
modulate = Color.WHITE
timer_hide.start()


func on_chats_arrived(chats: Array):
for chat in chats:
Expand Down Expand Up @@ -68,7 +83,6 @@ func on_chats_arrived(chats: Array):
func _on_button_send_pressed():
submit_message.emit(line_edit_command.text)
line_edit_command.text = ""
line_edit_command.grab_focus()


func _on_line_edit_command_text_submitted(new_text):
Expand All @@ -82,16 +96,36 @@ func finish():
line_edit_command.text = ""


func _on_visibility_changed():
if is_instance_valid(line_edit_command):
line_edit_command.text = ""
if visible:
line_edit_command.grab_focus()
UiSounds.play_sound("widget_chat_open")
else:
Global.explorer_grab_focus()
UiSounds.play_sound("widget_chat_close")
func _on_line_edit_command_focus_exited():
_set_open_chat(false)


func _on_line_edit_command_focus_exited():
self.hide()
func toggle_open_chat():
_set_open_chat(not h_box_container_line_edit.visible)


func _set_open_chat(value: bool):
h_box_container_line_edit.visible = value

if hide_tween != null:
hide_tween.stop()

if value:
line_edit_command.grab_focus()
UiSounds.play_sound("widget_chat_open")
timer_hide.stop()
modulate = Color.WHITE
else:
Global.explorer_grab_focus()
UiSounds.play_sound("widget_chat_close")
timer_hide.start()
modulate = Color.WHITE


func _on_timer_hide_timeout():
if hide_tween != null:
hide_tween.stop()

hide_tween = get_tree().create_tween()
modulate = Color.WHITE
hide_tween.tween_property(self, "modulate", Color.TRANSPARENT, 0.5)
23 changes: 16 additions & 7 deletions godot/src/ui/components/chat/chat.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,13 @@ theme_override_constants/margin_bottom = 8
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2

[node name="RichTextLabel_Chat" type="RichTextLabel" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
bbcode_enabled = true
scroll_following = true

[node name="HBoxContainer_LineEdit" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2

[node name="LineEdit_Command" type="LineEdit" parent="MarginContainer/VBoxContainer/HBoxContainer_LineEdit"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 0
Expand All @@ -58,7 +55,19 @@ icon = ExtResource("3_umu3q")
icon_alignment = 1
expand_icon = true

[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
[node name="RichTextLabel_Chat" type="RichTextLabel" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
bbcode_enabled = true
scroll_following = true

[node name="Timer_Hide" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 3.0
one_shot = true

[connection signal="focus_exited" from="MarginContainer/VBoxContainer/HBoxContainer_LineEdit/LineEdit_Command" to="." method="_on_line_edit_command_focus_exited"]
[connection signal="text_submitted" from="MarginContainer/VBoxContainer/HBoxContainer_LineEdit/LineEdit_Command" to="." method="_on_line_edit_command_text_submitted"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer_LineEdit/Button_Send" to="." method="_on_button_send_pressed"]
[connection signal="timeout" from="Timer_Hide" to="." method="_on_timer_hide_timeout"]
50 changes: 33 additions & 17 deletions godot/src/ui/components/discover/discover.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position")
tracks/0/path = NodePath(".:position:y")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 14, 15, 29),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [Vector2(0, 0), Vector2(0, 0), Vector2(0, -121), Vector2(0, -121)]
"values": [0.0, 0.0, -121.0, -121.0]
}

[sub_resource type="AnimationLibrary" id="AnimationLibrary_5pduq"]
Expand Down Expand Up @@ -123,44 +123,60 @@ theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 30
theme_override_constants/margin_bottom = 0

[node name="Control" type="Control" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer"]
[node name="ViewportContainer" type="SubViewportContainer" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer"]
clip_contents = true
custom_minimum_size = Vector2(0, 121)
layout_mode = 2
stretch = true

[node name="Content" type="Control" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/Control"]
layout_mode = 1
anchors_preset = 10
[node name="SubViewport" type="SubViewport" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/ViewportContainer"]
disable_3d = true
transparent_bg = true
handle_input_locally = false
gui_disable_input = true
size = Vector2i(1220, 121)
render_target_update_mode = 4

[node name="Content" type="Control" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/ViewportContainer/SubViewport"]
clip_children = 2
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
offset_right = 4874.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2

[node name="TextureRect_GenesisCity" type="TextureRect" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/Control/Content"]
[node name="TextureRect_GenesisCity" type="TextureRect" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/ViewportContainer/SubViewport/Content"]
custom_minimum_size = Vector2(0, 121)
layout_mode = 2
offset_right = 1214.0
offset_bottom = 121.0
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource("4_2pq8h")
expand_mode = 2
stretch_mode = 5

[node name="TextureRect_Worlds" type="TextureRect" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/Control/Content"]
[node name="TextureRect_Worlds" type="TextureRect" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/ViewportContainer/SubViewport/Content"]
custom_minimum_size = Vector2(0, 121)
layout_mode = 2
offset_top = 121.0
offset_right = 1214.0
offset_bottom = 242.0
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 125.0
offset_bottom = 125.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
texture = ExtResource("5_1hjun")
expand_mode = 2
stretch_mode = 5

[node name="AnimationPlayer" type="AnimationPlayer" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/Control/Content"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="TextureRect/ScrollContainer/VBoxContainer/MarginContainer/ViewportContainer/SubViewport/Content"]
libraries = {
"": SubResource("AnimationLibrary_5pduq")
}
Expand Down
2 changes: 1 addition & 1 deletion godot/src/ui/components/emotes/emote_wheel.gd
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func _gui_input(event):


func _physics_process(_delta):
if Input.is_action_just_pressed("ia_open_emote_wheel"):
if Input.is_action_just_pressed("ia_open_emote_wheel") and Global.explorer_has_focus():
if not is_visible_in_tree():
UiSounds.play_sound("widget_emotes_open")
show()
Expand Down
1 change: 1 addition & 0 deletions godot/src/ui/components/menu/menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ func _on_visibility_changed():
if is_visible_in_tree():
UiSounds.play_sound("mainmenu_widget_open")
grab_focus()
Global.explorer_release_focus()
else:
UiSounds.play_sound("mainmenu_widget_close")

Expand Down
1 change: 1 addition & 0 deletions godot/src/ui/components/menu/menu.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_force_pass_scroll_events = false
script = ExtResource("2_cgghr")

[node name="VBoxContainer" type="VBoxContainer" parent="."]
Expand Down
4 changes: 2 additions & 2 deletions godot/src/ui/explorer.gd
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ func _unhandled_input(event):
release_mouse()

if event.pressed and event.keycode == KEY_ENTER:
panel_chat.show()
panel_chat.toggle_open_chat()


func _on_control_minimap_request_open_map():
Expand Down Expand Up @@ -432,7 +432,7 @@ func _on_button_jump_gui_input(event):


func _on_button_open_chat_pressed():
panel_chat.visible = not panel_chat.visible
panel_chat.toggle_open_chat()


func set_cursor_position(position: Vector2):
Expand Down
1 change: 0 additions & 1 deletion godot/src/ui/explorer.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ expand_icon = true
layout_mode = 1

[node name="Panel_Chat" parent="UI/SafeMarginContainer/InteractableHUD" instance=ExtResource("9_4ktln")]
visible = false
layout_mode = 0
offset_left = 20.0
offset_top = 90.0
Expand Down

0 comments on commit 779a5f8

Please sign in to comment.