First commit 🎉

This commit is contained in:
Tony Bark 2025-07-17 01:49:18 -04:00
commit 43ea213f9b
728 changed files with 37080 additions and 0 deletions

View file

@ -0,0 +1,15 @@
extends PopochiuSettingsBarButton
#region Godot ######################################################################################
func _ready() -> void:
super()
PopochiuUtils.e.game_saved.connect(show)
if PopochiuUtils.e.has_save():
show()
else:
hide()
#endregion

View file

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

View file

@ -0,0 +1,11 @@
extends PopochiuSettingsBarButton
#region Godot ######################################################################################
func _ready() -> void:
super()
if OS.has_feature("web"):
hide()
#endregion

View file

@ -0,0 +1 @@
uid://7tvb4u0a2cgs

View file

@ -0,0 +1,32 @@
class_name PopochiuSettingsBarButton
extends TextureButton
@export var description := "" : get = get_description
@export var script_name := ""
#region Godot ######################################################################################
func _ready() -> void:
mouse_entered.connect(_on_mouse_entered)
mouse_exited.connect(_on_mouse_exited)
#endregion
#region SetGet #####################################################################################
func get_description() -> String:
return description
#endregion
#region Private ####################################################################################
func _on_mouse_entered() -> void:
PopochiuUtils.g.show_hover_text(self.description)
func _on_mouse_exited() -> void:
PopochiuUtils.g.show_hover_text()
#endregion

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cyvd8h2ouw8rg"
path="res://.godot/imported/btn_audio.png-0e4052f1dae1f1f9c4ac0c708f040b4f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_audio.png"
dest_files=["res://.godot/imported/btn_audio.png-0e4052f1dae1f1f9c4ac0c708f040b4f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bg1txcy1ofatq"
path="res://.godot/imported/btn_dialog_history.png-5e6b81c2188724ad496fcf8877a9452a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_dialog_history.png"
dest_files=["res://.godot/imported/btn_dialog_history.png-5e6b81c2188724ad496fcf8877a9452a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bns33w6nl2qkb"
path="res://.godot/imported/btn_load.png-ecbfe8ff6b76c734e44ba7e7e6bdcc9b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_load.png"
dest_files=["res://.godot/imported/btn_load.png-ecbfe8ff6b76c734e44ba7e7e6bdcc9b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cxpcw7xvcjcfy"
path="res://.godot/imported/btn_quit.png-38ab2b1afef2a5dae796f87d983b4a23.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_quit.png"
dest_files=["res://.godot/imported/btn_quit.png-38ab2b1afef2a5dae796f87d983b4a23.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bexxkrmqdiemq"
path="res://.godot/imported/btn_save.png-885612922cd34c7a3774c5fde51c9c48.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_save.png"
dest_files=["res://.godot/imported/btn_save.png-885612922cd34c7a3774c5fde51c9c48.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hjol4hvanbt5"
path="res://.godot/imported/btn_text.png-55ab59a0b65de9503101bf16f8b64b3f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_text.png"
dest_files=["res://.godot/imported/btn_text.png-55ab59a0b65de9503101bf16f8b64b3f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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,5 @@
extends Resource
@export var icon: Texture2D = null
@export var description := ""
@export var speed := 0.0

View file

@ -0,0 +1,143 @@
class_name PopochiuSettingsBar
extends Control
signal option_selected(option_name: String)
@export var used_in_game := true
@export var always_visible := false
@export var hide_when_gui_is_blocked := false
## Defines the height in pixels of the zone where moving the mouse in the top of the screen will
## make the bar to show. Note: This value will be affected by the Experimental Scale GUI checkbox
## in Project Settings > Popochiu > GUI.
@export var input_zone_height := 4
var is_disabled := false
var tween: Tween = null
var _can_hide := true
var _is_hidden := true
var _is_mouse_hover := false
@onready var panel_container: PanelContainer = $PanelContainer
@onready var box: BoxContainer = %Box
@onready var hidden_y := panel_container.position.y - panel_container.size.y
#region Godot ######################################################################################
func _ready() -> void:
if not always_visible:
panel_container.position.y = hidden_y
# Connect to child signals
for button: TextureButton in box.get_children():
button.mouse_entered.connect(_disable_hide)
button.mouse_exited.connect(_enable_hide)
button.pressed.connect(_on_button_clicked.bind(button))
# Connect to singletons signals
if hide_when_gui_is_blocked:
PopochiuUtils.g.blocked.connect(_on_gui_blocked)
PopochiuUtils.g.unblocked.connect(_on_gui_unblocked)
if not used_in_game:
hide()
set_process_input(not always_visible)
panel_container.size.x = box.size.x
func _input(event: InputEvent) -> void:
if not event is InputEventMouseMotion: return
var rect := panel_container.get_rect()
rect.size += Vector2(0.0, input_zone_height)
if PopochiuUtils.e.settings.scale_gui:
rect = Rect2(
panel_container.get_rect().position * PopochiuUtils.e.scale,
panel_container.get_rect().size * PopochiuUtils.e.scale
)
if rect.has_point(get_global_mouse_position()):
_is_mouse_hover = true
PopochiuUtils.cursor.show_cursor("gui")
elif _is_mouse_hover:
_is_mouse_hover = false
if PopochiuUtils.d.current_dialog:
PopochiuUtils.cursor.show_cursor("gui")
elif PopochiuUtils.g.gui.is_showing_dialog_line:
PopochiuUtils.cursor.show_cursor("wait")
else:
PopochiuUtils.cursor.show_cursor("normal")
if _is_hidden and rect.has_point(get_global_mouse_position()):
_open()
elif not _is_hidden and not rect.has_point(get_global_mouse_position()):
_close()
#endregion
#region Public #####################################################################################
func is_open() -> bool:
return _is_hidden == false
#endregion
#region Private ####################################################################################
func _open() -> void:
if always_visible: return
if not is_disabled and panel_container.position.y != hidden_y: return
if is_instance_valid(tween) and tween.is_running():
tween.kill()
tween = create_tween().set_trans(Tween.TRANS_EXPO).set_ease(Tween.EASE_OUT)
tween.tween_property(panel_container, "position:y", 0.0, 0.5).from(
hidden_y if not is_disabled else panel_container.position.y
)
_is_hidden = false
func _close() -> void:
if always_visible: return
await get_tree().process_frame
if not _can_hide: return
if is_instance_valid(tween) and tween.is_running():
tween.kill()
tween = create_tween().set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN)
tween.tween_property(
panel_container, "position:y", hidden_y if not is_disabled else hidden_y - 3.5, 0.2
).from(0.0)
_is_hidden = true
func _disable_hide() -> void:
_can_hide = false
func _enable_hide() -> void:
_can_hide = true
func _on_gui_blocked() -> void:
set_process_input(false)
hide()
func _on_gui_unblocked() -> void:
set_process_input(true)
show()
func _on_button_clicked(button: TextureButton) -> void:
option_selected.emit(button.script_name)
#endregion

View file

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

View file

@ -0,0 +1,168 @@
[gd_scene load_steps=30 format=3 uid="uid://0cqerawlxb3o"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_457q0"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/settings_bar.gd" id="2_hk0vm"]
[ext_resource type="Texture2D" uid="uid://bexxkrmqdiemq" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_save.png" id="3_b0ddg"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/buttons/settings_bar_button.gd" id="4_lqi16"]
[ext_resource type="Texture2D" uid="uid://bns33w6nl2qkb" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_load.png" id="5_8xdf1"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_load.gd" id="6_dfxoh"]
[ext_resource type="Texture2D" uid="uid://cyvd8h2ouw8rg" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_audio.png" id="11_id5s2"]
[ext_resource type="Texture2D" uid="uid://hjol4hvanbt5" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_text.png" id="12_y7pwl"]
[ext_resource type="Texture2D" uid="uid://bg1txcy1ofatq" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_dialog_history.png" id="16_7j34k"]
[ext_resource type="Texture2D" uid="uid://cxpcw7xvcjcfy" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/images/btn_quit.png" id="18_64yvb"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/components/settings_bar/buttons/btn_quit.gd" id="19_5u3hw"]
[sub_resource type="AtlasTexture" id="AtlasTexture_mnuax"]
atlas = ExtResource("3_b0ddg")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_gcwc6"]
atlas = ExtResource("3_b0ddg")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_yci17"]
atlas = ExtResource("3_b0ddg")
region = Rect2(0, 32, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_8ii6v"]
atlas = ExtResource("5_8xdf1")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_c5e8t"]
atlas = ExtResource("5_8xdf1")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_dtnbp"]
atlas = ExtResource("5_8xdf1")
region = Rect2(0, 32, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_2vddc"]
atlas = ExtResource("12_y7pwl")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_38kcs"]
atlas = ExtResource("12_y7pwl")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_ckg43"]
atlas = ExtResource("12_y7pwl")
region = Rect2(0, 32, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_unaqu"]
atlas = ExtResource("11_id5s2")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_i8n60"]
atlas = ExtResource("11_id5s2")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_kl1ek"]
atlas = ExtResource("11_id5s2")
region = Rect2(0, 32, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_vqe4x"]
atlas = ExtResource("16_7j34k")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_h0y2i"]
atlas = ExtResource("16_7j34k")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_myrqy"]
atlas = ExtResource("16_7j34k")
region = Rect2(0, 32, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_1sqfr"]
atlas = ExtResource("18_64yvb")
region = Rect2(0, 0, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_blkpg"]
atlas = ExtResource("18_64yvb")
region = Rect2(0, 16, 0, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_834us"]
atlas = ExtResource("18_64yvb")
region = Rect2(0, 32, 0, 16)
[node name="SettingsBar" type="Control" groups=["popochiu_gui_component"]]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme = ExtResource("1_457q0")
script = ExtResource("2_hk0vm")
[node name="PanelContainer" type="PanelContainer" parent="."]
texture_filter = 1
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -96.0
offset_bottom = 24.0
grow_horizontal = 0
[node name="Box" type="HBoxContainer" parent="PanelContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
alignment = 2
[node name="BtnSave" type="TextureButton" parent="PanelContainer/Box"]
layout_mode = 2
texture_normal = SubResource("AtlasTexture_mnuax")
texture_pressed = SubResource("AtlasTexture_gcwc6")
texture_hover = SubResource("AtlasTexture_yci17")
script = ExtResource("4_lqi16")
description = "Save game"
script_name = "save"
[node name="BtnLoad" type="TextureButton" parent="PanelContainer/Box"]
visible = false
layout_mode = 2
texture_normal = SubResource("AtlasTexture_8ii6v")
texture_pressed = SubResource("AtlasTexture_c5e8t")
texture_hover = SubResource("AtlasTexture_dtnbp")
script = ExtResource("6_dfxoh")
description = "Load game"
script_name = "load"
[node name="BtnTextSettings" type="TextureButton" parent="PanelContainer/Box"]
layout_mode = 2
texture_normal = SubResource("AtlasTexture_2vddc")
texture_pressed = SubResource("AtlasTexture_38kcs")
texture_hover = SubResource("AtlasTexture_ckg43")
script = ExtResource("4_lqi16")
description = "Text settings"
script_name = "text_settings"
[node name="BtnSoundSettings" type="TextureButton" parent="PanelContainer/Box"]
layout_mode = 2
texture_normal = SubResource("AtlasTexture_unaqu")
texture_pressed = SubResource("AtlasTexture_i8n60")
texture_hover = SubResource("AtlasTexture_kl1ek")
script = ExtResource("4_lqi16")
description = "Sound settings"
script_name = "sound_settings"
[node name="BtnHistory" type="TextureButton" parent="PanelContainer/Box"]
layout_mode = 2
texture_normal = SubResource("AtlasTexture_vqe4x")
texture_pressed = SubResource("AtlasTexture_h0y2i")
texture_hover = SubResource("AtlasTexture_myrqy")
script = ExtResource("4_lqi16")
description = "History"
script_name = "history"
[node name="BtnQuit" type="TextureButton" parent="PanelContainer/Box"]
layout_mode = 2
texture_normal = SubResource("AtlasTexture_1sqfr")
texture_pressed = SubResource("AtlasTexture_blkpg")
texture_hover = SubResource("AtlasTexture_834us")
script = ExtResource("19_5u3hw")
description = "Quit"
script_name = "quit"