ai and game menu

This commit was merged in pull request #23.
This commit is contained in:
2026-05-30 14:56:28 +00:00
parent 6cb5104729
commit 55aea7bdc4
92 changed files with 32771 additions and 118 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dldg826x1kkoe"
path="res://.godot/imported/weather_test.png-b32f5910d510365f593b180d50dbe815.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://core/main_scene_ui/assets/weather_test.png"
dest_files=["res://.godot/imported/weather_test.png-b32f5910d510365f593b180d50dbe815.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -0,0 +1,43 @@
extends Control
@export var radio: Radio
@onready var track_label: Label = $%TrackLabel
func _ready() -> void:
if radio:
radio.track_changed.connect(_on_radio_track_changed)
if radio.stream and radio.stream.resource_path:
track_label.text = radio.stream.resource_path.get_file().get_basename().capitalize()
else:
track_label.text = "Unknown Track"
func _on_radio_track_changed(track_name: String) -> void:
track_label.text = track_name
func _on_prev_track_icon_button_on_pressed() -> void:
if radio:
radio.prev_track()
func _on_play_pause_icon_button_on_pressed() -> void:
radio.toggle_pause()
#if radio.stream_paused:
#button_pause_resume.text = "Resume"
#else:
#button_pause_resume.text = "Pause"
func _on_next_track_icon_button_on_pressed() -> void:
if radio:
radio.next_track()
func _on_increase_volume_icon_button_on_pressed() -> void:
var current_vol = AudioManager.get_audio_bus_volume("Music", 1.0)
AudioManager.set_audio_bus_volume("Music", current_vol + 0.1)
func _on_decrease_volume_icon_button_on_pressed() -> void:
var current_vol = AudioManager.get_audio_bus_volume("Music", 1.0)
AudioManager.set_audio_bus_volume("Music", current_vol - 0.1)

View File

@@ -0,0 +1 @@
uid://c4kekqicrv4m8

View File

@@ -0,0 +1,135 @@
[gd_scene format=3 uid="uid://dg4f3v0ukpmay"]
[ext_resource type="Script" uid="uid://c4kekqicrv4m8" path="res://core/main_scene_ui/audio_player.gd" id="1_i2mrl"]
[ext_resource type="PackedScene" uid="uid://2tqofxxxnvhv" path="res://core/main_scene_ui/icon_button.tscn" id="1_ucnyb"]
[node name="AudioPlayer" type="Control" unique_id=425192018]
layout_mode = 3
anchor_right = 0.15208334
anchor_bottom = 0.10925926
script = ExtResource("1_i2mrl")
metadata/_edit_use_anchors_ = true
[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1300382168]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
metadata/_edit_use_anchors_ = true
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer" unique_id=1923985665]
layout_mode = 2
metadata/_edit_use_anchors_ = true
[node name="TrackLabel" type="Label" parent="HBoxContainer/VBoxContainer" unique_id=1430240022]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
theme_override_font_sizes/font_size = 24
text = "Test Test"
horizontal_alignment = 1
vertical_alignment = 1
[node name="IconButtonsRow" type="HBoxContainer" parent="HBoxContainer/VBoxContainer" unique_id=1734127019]
layout_mode = 2
alignment = 1
[node name="PrevTrackIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=1750448019 instance=ExtResource("1_ucnyb")]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 80)
layout_mode = 2
[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/PrevTrackIconButton" index="0" unique_id=1071359322]
custom_minimum_size = Vector2(80, 80)
anchor_left = 0.0
anchor_top = 0.11538447
anchor_right = 1.0
anchor_bottom = 0.88461524
offset_left = 116.66667
offset_top = 122.14813
offset_right = -116.666664
offset_bottom = -122.14813
[node name="PlayPauseIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=1533336956 instance=ExtResource("1_ucnyb")]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 80)
layout_mode = 2
[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/PlayPauseIconButton" index="0" unique_id=1071359322]
custom_minimum_size = Vector2(80, 80)
anchor_left = 0.0
anchor_top = 0.11538447
anchor_right = 1.0
anchor_bottom = 0.88461524
offset_left = 116.66667
offset_top = 122.14813
offset_right = -116.666664
offset_bottom = -122.14813
[node name="NextTrackIconButton" parent="HBoxContainer/VBoxContainer/IconButtonsRow" unique_id=2108379455 instance=ExtResource("1_ucnyb")]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 80)
layout_mode = 2
[node name="Texture" parent="HBoxContainer/VBoxContainer/IconButtonsRow/NextTrackIconButton" index="0" unique_id=1071359322]
custom_minimum_size = Vector2(80, 80)
anchor_left = 0.0
anchor_top = 0.11538447
anchor_right = 1.0
anchor_bottom = 0.88461524
offset_left = 116.66667
offset_top = 122.14813
offset_right = -116.666664
offset_bottom = -122.14813
[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer" unique_id=1843266535]
layout_mode = 2
size_flags_vertical = 4
[node name="IncreaseVolumeIconButton" parent="HBoxContainer/VBoxContainer2" unique_id=1788399963 instance=ExtResource("1_ucnyb")]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="Texture" parent="HBoxContainer/VBoxContainer2/IncreaseVolumeIconButton" index="0" unique_id=1071359322]
custom_minimum_size = Vector2(40, 40)
anchor_left = 0.25
anchor_top = 0.35915482
anchor_right = 0.75
anchor_bottom = 0.64084494
offset_left = 96.66667
offset_top = 92.64813
offset_right = -96.666664
offset_bottom = -92.64813
[node name="DecreaseVolumeIconButton" parent="HBoxContainer/VBoxContainer2" unique_id=399629327 instance=ExtResource("1_ucnyb")]
custom_minimum_size = Vector2(40, 40)
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="Texture" parent="HBoxContainer/VBoxContainer2/DecreaseVolumeIconButton" index="0" unique_id=1071359322]
custom_minimum_size = Vector2(40, 40)
anchor_left = 0.25
anchor_top = 0.35915482
anchor_right = 0.75
anchor_bottom = 0.64084494
offset_left = 96.66667
offset_top = 92.64813
offset_right = -96.666664
offset_bottom = -92.64813
[connection signal="on_pressed" from="HBoxContainer/VBoxContainer/IconButtonsRow/PrevTrackIconButton" to="." method="_on_prev_track_icon_button_on_pressed"]
[connection signal="on_pressed" from="HBoxContainer/VBoxContainer/IconButtonsRow/PlayPauseIconButton" to="." method="_on_play_pause_icon_button_on_pressed"]
[connection signal="on_pressed" from="HBoxContainer/VBoxContainer/IconButtonsRow/NextTrackIconButton" to="." method="_on_next_track_icon_button_on_pressed"]
[connection signal="on_pressed" from="HBoxContainer/VBoxContainer2/IncreaseVolumeIconButton" to="." method="_on_increase_volume_icon_button_on_pressed"]
[connection signal="on_pressed" from="HBoxContainer/VBoxContainer2/DecreaseVolumeIconButton" to="." method="_on_decrease_volume_icon_button_on_pressed"]
[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/PrevTrackIconButton"]
[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/PlayPauseIconButton"]
[editable path="HBoxContainer/VBoxContainer/IconButtonsRow/NextTrackIconButton"]
[editable path="HBoxContainer/VBoxContainer2/IncreaseVolumeIconButton"]
[editable path="HBoxContainer/VBoxContainer2/DecreaseVolumeIconButton"]

View File

@@ -0,0 +1,23 @@
@tool
extends Control
class_name IconButton
signal on_pressed
@export var data: String
@export var image: Texture:
set(value):
image = value
if is_inside_tree() and has_node("%Texture"):
$%Texture.texture = image
func _ready():
if image != null and has_node("%Texture"):
$%Texture.texture = image
func _on_gui_input(event: InputEvent) -> void:
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
on_pressed.emit()

View File

@@ -0,0 +1 @@
uid://bpbgecvan0a5k

View File

@@ -0,0 +1,36 @@
[gd_scene format=3 uid="uid://2tqofxxxnvhv"]
[ext_resource type="Script" uid="uid://bpbgecvan0a5k" path="res://core/main_scene_ui/icon_button.gd" id="1_r8gxt"]
[ext_resource type="Texture2D" uid="uid://dldg826x1kkoe" path="res://core/main_scene_ui/assets/weather_test.png" id="1_upldh"]
[node name="IconButton" type="Control" unique_id=1750448019]
custom_minimum_size = Vector2(160, 160)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_r8gxt")
image = ExtResource("1_upldh")
[node name="Texture" type="TextureRect" parent="." unique_id=1071359322]
unique_name_in_owner = true
custom_minimum_size = Vector2(160, 160)
layout_mode = 1
anchors_preset = -1
anchor_left = 0.45833334
anchor_top = 0.42592594
anchor_right = 0.5416667
anchor_bottom = 0.5740741
offset_left = 80.0
offset_top = 79.99997
offset_right = -80.0
offset_bottom = -80.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("1_upldh")
expand_mode = 1
metadata/_edit_use_anchors_ = true
[connection signal="gui_input" from="." to="." method="_on_gui_input"]

View File

@@ -0,0 +1,48 @@
extends HBoxContainer
signal on_option_changed(data: String)
@onready var current_icon_button: IconButton
@onready var icon_buttons_options: Array[IconButton]
var is_menu_open: bool = false
func _ready() -> void:
for i in range(get_child_count()):
var icon_button: IconButton = get_child(i)
if i == 0:
current_icon_button = icon_button
icon_button.on_pressed.connect(on_current_icon_button_pressed)
else:
icon_buttons_options.append(icon_button)
icon_button.on_pressed.connect(_on_icon_pressed_changed.bind(icon_button))
func _on_icon_pressed_changed(in_icon_button: IconButton):
for icon_button in icon_buttons_options:
if icon_button == in_icon_button:
current_icon_button.image = in_icon_button.image
current_icon_button.data = in_icon_button.data
on_option_changed.emit(icon_button.data)
break
hide_options()
func on_current_icon_button_pressed() -> void:
if is_menu_open:
hide_options()
else:
show_options()
func show_options() -> void:
for icon_button in icon_buttons_options:
icon_button.show()
is_menu_open = true
func hide_options() -> void:
for icon_button in icon_buttons_options:
icon_button.hide()
is_menu_open = false

View File

@@ -0,0 +1 @@
uid://cpf5rwmd0kaa6

View File

@@ -0,0 +1,43 @@
[gd_scene format=3 uid="uid://ir8nke8o6ssm"]
[ext_resource type="PackedScene" uid="uid://2tqofxxxnvhv" path="res://core/main_scene_ui/icon_button.tscn" id="1_lnxme"]
[ext_resource type="Script" uid="uid://cpf5rwmd0kaa6" path="res://core/main_scene_ui/icon_buttons_row.gd" id="1_xq3mw"]
[node name="IconButtonsRow" type="HBoxContainer" unique_id=1734127019]
custom_minimum_size = Vector2(800, 0)
size_flags_vertical = 3
script = ExtResource("1_xq3mw")
[node name="IconButton" parent="." unique_id=1750448019 instance=ExtResource("1_lnxme")]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="IconButton2" parent="." unique_id=638856991 instance=ExtResource("1_lnxme")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="IconButton3" parent="." unique_id=1662483962 instance=ExtResource("1_lnxme")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="IconButton4" parent="." unique_id=1375190490 instance=ExtResource("1_lnxme")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
[node name="IconButton5" parent="." unique_id=315412403 instance=ExtResource("1_lnxme")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3

View File

@@ -0,0 +1,49 @@
extends Control
enum Weather {RAIN, SNOW}
@onready var game_menu: Control = $%GameMenu
func _on_menu_icon_button_on_pressed() -> void:
GameState.pause_game()
game_menu.show()
func _on_photo_icon_button_on_pressed() -> void:
GameState.on_enable_photo_mode_request.emit()
func _on_collectible_icon_button_on_pressed() -> void:
GameState.pause_game()
game_menu.on_tab_pressed(1, true)
game_menu.show()
func _on_time_of_day_row_on_option_changed(data: String) -> void:
match data:
"Sunrise":
UIEvents.time_option_item_changed.emit(0)
"Day":
UIEvents.time_option_item_changed.emit(1)
"Sunset":
UIEvents.time_option_item_changed.emit(2)
"Night":
UIEvents.time_option_item_changed.emit(3)
_:
pass
func _on_weather_row_on_option_changed(data: String) -> void:
match data:
"Snow":
UIEvents.toggle_snow.emit(true)
"Rain":
UIEvents.toggle_rain.emit(true)
"Storm":
UIEvents.toggle_storm.emit(true)
"Wind":
UIEvents.toggle_wind.emit(true)
"Random":
pass
_:
pass

View File

@@ -0,0 +1 @@
uid://bhad1id8jr8jw

View File

@@ -0,0 +1,127 @@
[gd_scene format=3 uid="uid://bei7fscn77p1p"]
[ext_resource type="PackedScene" uid="uid://ir8nke8o6ssm" path="res://core/main_scene_ui/icon_buttons_row.tscn" id="1_87dkt"]
[ext_resource type="Script" uid="uid://bhad1id8jr8jw" path="res://core/main_scene_ui/main_menu_ui.gd" id="1_aurcl"]
[ext_resource type="PackedScene" uid="uid://2tqofxxxnvhv" path="res://core/main_scene_ui/icon_button.tscn" id="1_fjauj"]
[ext_resource type="PackedScene" uid="uid://dqqm4o8j45tr6" path="res://core/game_menu/game_menu.tscn" id="4_7q818"]
[ext_resource type="PackedScene" uid="uid://cpeyt1dgrtglc" path="res://core/radio/radio.tscn" id="5_21kh1"]
[ext_resource type="PackedScene" uid="uid://dg4f3v0ukpmay" path="res://core/main_scene_ui/audio_player.tscn" id="6_1h1a0"]
[ext_resource type="AudioStream" uid="uid://70cc8she43re" path="res://docs/gyms/radio/lofi_01.ogg" id="6_vhlrw"]
[node name="MainMenuUi" type="Control" unique_id=1359391222]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_aurcl")
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=2071886807]
custom_minimum_size = Vector2(160, 320)
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -320.0
offset_right = 160.0
grow_vertical = 0
[node name="TimeOfDayRow" parent="VBoxContainer" unique_id=1734127019 instance=ExtResource("1_87dkt")]
layout_mode = 2
[node name="IconButton2" parent="VBoxContainer/TimeOfDayRow" index="1" unique_id=638856991]
data = "Sunrise"
[node name="IconButton3" parent="VBoxContainer/TimeOfDayRow" index="2" unique_id=1662483962]
data = "Day"
[node name="IconButton4" parent="VBoxContainer/TimeOfDayRow" index="3" unique_id=1375190490]
data = "Sunset"
[node name="IconButton5" parent="VBoxContainer/TimeOfDayRow" index="4" unique_id=315412403]
data = "Night"
[node name="WeatherRow" parent="VBoxContainer" unique_id=1803637359 instance=ExtResource("1_87dkt")]
layout_mode = 2
[node name="IconButton2" parent="VBoxContainer/WeatherRow" index="1" unique_id=638856991]
data = "Snow"
[node name="IconButton3" parent="VBoxContainer/WeatherRow" index="2" unique_id=1662483962]
data = "Rain"
[node name="IconButton4" parent="VBoxContainer/WeatherRow" index="3" unique_id=1375190490]
data = "Storm"
[node name="IconButton5" parent="VBoxContainer/WeatherRow" index="4" unique_id=315412403]
data = "Wind"
[node name="IconButton6" parent="VBoxContainer/WeatherRow" unique_id=218253485 instance=ExtResource("1_fjauj")]
unique_name_in_owner = true
visible = false
layout_mode = 2
size_flags_horizontal = 0
size_flags_vertical = 3
data = "Random"
[node name="MenuIconButton" parent="." unique_id=707872474 instance=ExtResource("1_fjauj")]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_bottom = 0.0
offset_left = -160.0
offset_bottom = 160.0
grow_horizontal = 0
grow_vertical = 1
[node name="CollectionOptions" type="VBoxContainer" parent="." unique_id=542153805]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -40.0
offset_top = -20.0
offset_bottom = 20.0
grow_horizontal = 0
grow_vertical = 2
[node name="PhotoIconButton" parent="CollectionOptions" unique_id=1863476241 instance=ExtResource("1_fjauj")]
layout_mode = 2
[node name="CollectibleIconButton" parent="CollectionOptions" unique_id=520235552 instance=ExtResource("1_fjauj")]
layout_mode = 2
[node name="GameMenu" parent="." unique_id=2124096517 instance=ExtResource("4_7q818")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="Radio" parent="." unique_id=1234112225 instance=ExtResource("5_21kh1")]
playlist = Array[AudioStream]([ExtResource("6_vhlrw")])
[node name="AudioPlayer" parent="." unique_id=425192018 node_paths=PackedStringArray("radio") instance=ExtResource("6_1h1a0")]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -146.0
offset_top = -57.0
offset_right = -146.0
offset_bottom = -57.0
grow_horizontal = 0
grow_vertical = 0
radio = NodePath("../Radio")
[connection signal="on_option_changed" from="VBoxContainer/TimeOfDayRow" to="." method="_on_time_of_day_row_on_option_changed"]
[connection signal="on_option_changed" from="VBoxContainer/WeatherRow" to="." method="_on_weather_row_on_option_changed"]
[connection signal="on_pressed" from="MenuIconButton" to="." method="_on_menu_icon_button_on_pressed"]
[connection signal="on_pressed" from="CollectionOptions/PhotoIconButton" to="." method="_on_photo_icon_button_on_pressed"]
[connection signal="on_pressed" from="CollectionOptions/CollectibleIconButton" to="." method="_on_collectible_icon_button_on_pressed"]
[editable path="VBoxContainer/TimeOfDayRow"]
[editable path="VBoxContainer/WeatherRow"]