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,166 @@
class_name NineVerbCommands
extends PopochiuCommands
## Defines the commands and fallback methods for the 9 Verbs GUI.
##
## In this GUI, players can use one of four commands to interact with objects: Walk, Open, Pick up,
## Push, Close, Look at, Pull, Give, Talk to, and Use. This behavior is based on games like The
## Secret of Monkey Island, Day of the Tentacle and Thimbleweed Park.
enum Commands { ## Defines the commands of the GUI.
WALK_TO, ## Used when players want to make the PC to walk.
OPEN, ## Used when players want to make the PC to open an object.
PICK_UP, ## Used when players want to make the PC to pick up an object.
PUSH, ## Used when players want to make the PC to push an object.
CLOSE, ## Used when players want to make the PC to close an object.
LOOK_AT, ## Used when players want to make the PC to look an object.
PULL, ## Used when players want to make the PC to pull an object.
GIVE, ## Used when players want to make the PC to give an object.
TALK_TO, ## Used when players want to make the PC to talk to an object.
USE ## Used when players want to make the PC to use an object.
}
#region Godot ######################################################################################
func _init() -> void:
super()
PopochiuUtils.e.register_command(Commands.WALK_TO, "Walk to", walk_to)
PopochiuUtils.e.register_command(Commands.OPEN, "Open", open)
PopochiuUtils.e.register_command(Commands.PICK_UP, "Pick up", pick_up)
PopochiuUtils.e.register_command(Commands.PUSH, "Push", push)
PopochiuUtils.e.register_command(Commands.CLOSE, "Close", close)
PopochiuUtils.e.register_command(Commands.LOOK_AT, "Look at", look_at)
PopochiuUtils.e.register_command(Commands.PULL, "Pull", pull)
PopochiuUtils.e.register_command(Commands.GIVE, "Give", give)
PopochiuUtils.e.register_command(Commands.TALK_TO, "Talk to", talk_to)
PopochiuUtils.e.register_command(Commands.USE, "Use", use)
#endregion
#region Public #####################################################################################
static func get_script_name() -> String:
return "NineVerbCommands"
## Called by [Popochiu] when a command doesn't have an associated [Callable]. By default this calls
## [method walk_to].
func fallback() -> void:
walk_to()
## Called when [code]E.current_command == Commands.WALK_TO[/code] and
## [code]E.command_fallback()[/code] is triggered.[br][br]
## By default makes the character walk to the clicked [code]PopochiuClickable[/code].
func walk_to() -> void:
if PopochiuUtils.i.active:
PopochiuUtils.i.active = null
return
PopochiuUtils.c.player.walk_to_clicked()
await PopochiuUtils.c.player.move_ended
if (
PopochiuUtils.e.clicked and PopochiuUtils.e.clicked.get("suggested_command")
and PopochiuUtils.e.clicked.last_click_button == MOUSE_BUTTON_RIGHT
):
PopochiuUtils.e.current_command = PopochiuUtils.e.clicked.suggested_command
PopochiuUtils.e.clicked.handle_command(MOUSE_BUTTON_LEFT)
## Called when [code]E.current_command == Commands.OPEN[/code] and [code]E.command_fallback()[/code]
## is triggered.
func open() -> void:
await PopochiuUtils.c.player.say("Can't open that")
## Called when [code]E.current_command == Commands.PICK_UP[/code] and
## [code]E.command_fallback()[/code] is triggered.
func pick_up() -> void:
await PopochiuUtils.c.player.say("Not picking that up")
## Called when [code]E.current_command == Commands.PUSH[/code] and [code]E.command_fallback()[/code]
## is triggered.
func push() -> void:
await PopochiuUtils.c.player.say("I don't want to push that")
## Called when [code]E.current_command == Commands.CLOSE[/code] and
## [code]E.command_fallback()[/code] is triggered.
func close() -> void:
await PopochiuUtils.c.player.say("Can't close that")
## Called when [code]E.current_command == Commands.LOOK_AT[/code] and
## [code]E.command_fallback()[/code] is triggered.
func look_at() -> void:
if PopochiuUtils.e.clicked:
await PopochiuUtils.c.player.face_clicked()
await PopochiuUtils.c.player.say("I have nothing to say about that")
## Called when [code]E.current_command == Commands.PULL[/code] and [code]E.command_fallback()[/code]
## is triggered.
func pull() -> void:
await PopochiuUtils.c.player.say("I don't want to pull that")
## Called when [code]E.current_command == Commands.GIVE[/code] and [code]E.command_fallback()[/code]
## is triggered.
func give() -> void:
await _give_or_use(give_item_to)
## Called when [code]E.current_command == Commands.USE[/code] and [code]E.command_fallback()[/code]
## is triggered.
func use() -> void:
await _give_or_use(use_item_on)
func _give_or_use(callback: Callable) -> void:
if PopochiuUtils.i.active and PopochiuUtils.e.clicked:
callback.call(PopochiuUtils.i.active, PopochiuUtils.e.clicked)
elif (
PopochiuUtils.i.active
and PopochiuUtils.i.clicked
and PopochiuUtils.i.active != PopochiuUtils.i.clicked
):
callback.call(PopochiuUtils.i.active, PopochiuUtils.i.clicked)
elif PopochiuUtils.i.clicked:
match PopochiuUtils.i.clicked.last_click_button:
MOUSE_BUTTON_LEFT:
PopochiuUtils.i.clicked.set_active(true)
MOUSE_BUTTON_RIGHT:
# TODO: I'm not sure this is the right way to do this. Maybe GUIs should capture
# click inputs on clickables and inventory items. ----------------------------
PopochiuUtils.e.current_command = (
PopochiuUtils.i.clicked.suggested_command
if PopochiuUtils.i.clicked.get("suggested_command")
else Commands.LOOK_AT
)
PopochiuUtils.i.clicked.handle_command(MOUSE_BUTTON_LEFT)
# ----------------------------------------------------------------------------------
else:
await PopochiuUtils.c.player.say("What?")
## Called when [code]E.current_command == Commands.TALK_TO[/code] and
## [code]E.command_fallback()[/code] is triggered.
func talk_to() -> void:
await PopochiuUtils.c.player.say("Emmmm...")
func use_item_on(_item: PopochiuInventoryItem, _target: Node) -> void:
PopochiuUtils.i.active = null
await PopochiuUtils.c.player.say("I don't want to do that")
func give_item_to(_item: PopochiuInventoryItem, _target: Node) -> void:
PopochiuUtils.i.active = null
await PopochiuUtils.c.player.say("I don't want to do that")
#endregion

View file

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

View file

@ -0,0 +1,258 @@
class_name NineVerbGUI
extends PopochiuGraphicInterface
## Defines the behavior of the 9 Verbs GUI.
##
## In this GUI players interact with objects based on the active command, which can be changed by
## clicking one of the nine buttons in the bottom panel. The inventory is always visible in the
## bottom right corner of the screen, and the settings popup can be opened using the button in the
## top right corner of the screen.
signal settings_requested
# Used to go back to the WALK_TO command when hovering an inventory item without a verb selected
var _return_to_walk_to := false
## Used to access the [b]9VerbPanel[/b] component (the one at the bottom containing the verbs,
## the inventory, and the button to open the [b]9VerbSettingsPopup[/b].
@onready var _9_verb_panel: Control = %"9VerbPanel"
@onready var hover_text_cursor: Control = %HoverTextCursor
## Used to access the [b]9VerbSettingsPopup[/b] node.
@onready var settings_popup: Control = %"9VerbSettingsPopup"
@onready var save_and_load_popup: Control = %SaveAndLoadPopup
@onready var history_popup: Control = %HistoryPopup
## Used to access the [b]9VerbQuitPopup[/b] node.
@onready var quit_popup: Control = %"9VerbQuitPopup"
#region Godot ######################################################################################
func _ready() -> void:
super()
PopochiuUtils.cursor.replace_frames($Cursor)
PopochiuUtils.cursor.show_cursor()
$Cursor.hide()
# Connect to own signals
settings_requested.connect(_on_settings_requested)
# Connect to children's signals
settings_popup.classic_sentence_toggled.connect(_on_classic_sentence_toggled)
settings_popup.option_selected.connect(_on_settings_option_selected)
# Connect to singletons signals
PopochiuUtils.e.ready.connect(_on_popochiu_ready)
func _unhandled_input(event: InputEvent) -> void:
# Make the PC move to the clicked point on RIGHT CLICK
if PopochiuUtils.get_click_or_touch_index(event) == MOUSE_BUTTON_RIGHT:
PopochiuUtils.c.player.walk(PopochiuUtils.r.current.get_local_mouse_position())
#endregion
#region Virtual ####################################################################################
## Called when the GUI is blocked. Makes the [member E.current_command] to be none of the available
## commands, hides the bottom panel and makes the GUI to stop processing unhandled input.
func _on_blocked(props := { blocking = true }) -> void:
PopochiuUtils.e.current_command = -1
PopochiuUtils.g.show_hover_text()
_9_verb_panel.hide()
set_process_unhandled_input(false)
## Called when the GUI is unblocked. Makes the [member E.current_command] to be
## [constant NineVerbCommands.WALK_TO], shows the bottom panel and makes the GUI to start processing
## unhandled input.
func _on_unblocked() -> void:
if PopochiuUtils.d.current_dialog:
await get_tree().process_frame
PopochiuUtils.g.block()
return
PopochiuUtils.e.current_command = NineVerbCommands.Commands.WALK_TO
PopochiuUtils.g.show_hover_text()
_9_verb_panel.show()
# Make all commands to look as no pressed
_9_verb_panel.unpress_commands()
set_process_unhandled_input(true)
## Called when [method G.show_system_text] is executed. Shows the [code]"wait"[/code] cursor.
func _on_system_text_shown(_msg: String) -> void:
PopochiuUtils.cursor.show_cursor("wait")
## Called when [method G.show_system_text] is executed. Shows the [code]"normal"[/code] cursor.
func _on_system_text_hidden() -> void:
PopochiuUtils.cursor.show_cursor()
## Called when the mouse enters (hovers) [param clickable]. It displays a text with the
## [member PopochiuClickable.description] in the [HoverText] component and shows the
## [code]"active"[/code] cursor.
func _on_mouse_entered_clickable(clickable: PopochiuClickable) -> void:
if PopochiuUtils.g.is_blocked: return
if clickable.get("suggested_command"):
_9_verb_panel.highlight_command(clickable.suggested_command)
if PopochiuUtils.i.active:
_show_command_on(PopochiuUtils.i.active.description, clickable.description)
else:
PopochiuUtils.g.show_hover_text(clickable.description)
## Called when the mouse exits [param clickable]. Clears the text in the [HoverText] component and
## shows the [code]"normal"[/code] cursor.
func _on_mouse_exited_clickable(clickable: PopochiuClickable) -> void:
if PopochiuUtils.g.is_blocked: return
if clickable.get("suggested_command"):
_9_verb_panel.highlight_command(clickable.suggested_command, false)
PopochiuUtils.cursor.show_cursor()
if PopochiuUtils.i.active:
_show_command_on(PopochiuUtils.i.active.description)
return
PopochiuUtils.g.show_hover_text()
## Called when the mouse enters (hovers) [param inventory_item]. It displays a text with the
## [member PopochiuInventoryItem.description] in the [HoverText] component and shows the
## [code]"active"[/code] cursor.
func _on_mouse_entered_inventory_item(inventory_item: PopochiuInventoryItem) -> void:
if PopochiuUtils.e.current_command == NineVerbCommands.Commands.WALK_TO:
_return_to_walk_to = true
PopochiuUtils.e.current_command = NineVerbCommands.Commands.USE
_9_verb_panel.highlight_command(NineVerbCommands.Commands.LOOK_AT)
PopochiuUtils.cursor.show_cursor()
if PopochiuUtils.i.active:
_show_command_on(PopochiuUtils.i.active.description, inventory_item.description)
else:
PopochiuUtils.g.show_hover_text(inventory_item.description)
## Called when the mouse exits [param inventory_item]. Clears the text in the [HoverText] component
## and shows the [code]"normal"[/code] cursor.
func _on_mouse_exited_inventory_item(inventory_item: PopochiuInventoryItem) -> void:
if not PopochiuUtils.i.active and _return_to_walk_to:
PopochiuUtils.e.current_command = NineVerbCommands.Commands.WALK_TO
_return_to_walk_to = false
_9_verb_panel.highlight_command(NineVerbCommands.Commands.LOOK_AT, false)
PopochiuUtils.cursor.show_cursor()
if PopochiuUtils.i.active:
_show_command_on(PopochiuUtils.i.active.description)
return
PopochiuUtils.g.show_hover_text()
## Called when a dialogue line starts. It shows the [code]"wait"[/code] cursor.
func _on_dialog_line_started() -> void:
PopochiuUtils.cursor.show_cursor("wait")
## Called when a dialogue line finishes. It shows the [code]"gui"[/code] cursor if there is an
## active [PopochiuDialog], otherwise it shows the [code]"normal"[/code] cursor.
func _on_dialog_line_finished() -> void:
PopochiuUtils.cursor.show_cursor("gui" if PopochiuUtils.d.current_dialog else "normal")
## Called when a [PopochiuDialog] starts. It shows the [code]"gui"[/code] cursor.
func _on_dialog_started(_dialog: PopochiuDialog) -> void:
PopochiuUtils.cursor.show_cursor("gui")
## Called when the running [PopochiuDialog] shows its options on screen. It shows the
## [code]"gui"[/code] cursor.
func _on_dialog_options_shown() -> void:
PopochiuUtils.cursor.unblock()
PopochiuUtils.cursor.show_cursor("gui")
## Called when a [PopochiuDialog] finishes. It shows the [code]"normal"[/code] cursor.
func _on_dialog_finished(_dialog: PopochiuDialog) -> void:
PopochiuUtils.cursor.show_cursor()
## Called when [param item] is selected in the inventory (i.e. by clicking it). For this GUI, this
## will only occur when the current command is [constant NineVerbCommands.USE].
func _on_inventory_item_selected(item: PopochiuInventoryItem) -> void:
if not item:
PopochiuUtils.e.current_command = NineVerbCommands.Commands.WALK_TO
PopochiuUtils.g.show_hover_text()
else:
_show_command_on(item.description)
## Called when the game is saved. By default, it shows [code]Game saved[/code] in the SystemText
## component.
func _on_game_saved() -> void:
PopochiuUtils.g.show_system_text("Game saved")
## Called when a game is loaded. [param loaded_game] has the loaded data. By default, it shows
## [code]Game loaded[/code] in the SystemText component.
func _on_game_loaded(loaded_game: Dictionary) -> void:
await PopochiuUtils.g.show_system_text("Game loaded")
super(loaded_game)
#endregion
#region Private ####################################################################################
func _on_popochiu_ready() -> void:
if is_instance_valid(PopochiuUtils.c.player):
PopochiuUtils.c.player.started_walk_to.connect(_on_player_started_walk)
func _on_settings_requested() -> void:
settings_popup.open()
func _on_player_started_walk(
_character: PopochiuCharacter, _start_position: Vector2, _end_position: Vector2
) -> void:
_on_unblocked()
func _on_classic_sentence_toggled(button_pressed: bool) -> void:
hover_text_cursor.visible = not button_pressed
_9_verb_panel.hover_text_centered.visible = button_pressed
func _on_settings_option_selected(option_name: String) -> void:
match option_name:
"save":
save_and_load_popup.open_save()
"load":
save_and_load_popup.open_load()
"history":
history_popup.open()
"quit":
quit_popup.open()
func _show_command_on(item_1_name: String, item_2_name := "") -> void:
var preposition = "on"
if PopochiuUtils.e.current_command == NineVerbCommands.Commands.GIVE:
preposition = "to"
PopochiuUtils.g.show_hover_text("%s %s %s %s" % [
PopochiuUtils.e.get_current_command_name(), item_1_name, preposition, item_2_name
])
#endregion

View file

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

View file

@ -0,0 +1,159 @@
[gd_scene load_steps=22 format=3 uid="uid://bd0fika4hyhvw"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_5somw"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/9_verb_gui.gd" id="2_6nea2"]
[ext_resource type="Texture2D" uid="uid://d0fwvj88bhggm" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_cursor.png" id="3_fpt6m"]
[ext_resource type="PackedScene" uid="uid://bn7o13nv11ka1" path="res://addons/popochiu/engine/objects/gui/components/dialog_text/dialog_overhead/dialog_overhead.tscn" id="5_gejku"]
[ext_resource type="PackedScene" uid="uid://bdgs3xsbq3gdd" path="res://addons/popochiu/engine/objects/gui/components/system_text/system_text.tscn" id="5_ygb3y"]
[ext_resource type="PackedScene" uid="uid://cuokybjvunmhq" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_panel/9_verb_panel.tscn" id="6_tiq5g"]
[ext_resource type="PackedScene" uid="uid://dhsfl8ot4j5fj" path="res://addons/popochiu/engine/objects/gui/components/dialog_menu/dialog_menu.tscn" id="7_ypv20"]
[ext_resource type="PackedScene" uid="uid://esorelppu4hw" path="res://addons/popochiu/engine/objects/gui/components/hover_text/hover_text.tscn" id="9_pfhkt"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_hover_text/9_verb_hover_text.gd" id="10_kg6cq"]
[ext_resource type="PackedScene" uid="uid://crla6to4mm0p7" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/settings_popup/9_verb_settings_popup.tscn" id="11_etexu"]
[ext_resource type="PackedScene" uid="uid://cndputybyj57n" path="res://addons/popochiu/engine/objects/gui/components/popups/save_and_load_popup/save_and_load_popup.tscn" id="12_q44n2"]
[ext_resource type="PackedScene" uid="uid://dfrsiyyqncspo" path="res://addons/popochiu/engine/objects/gui/components/popups/history_popup/history_popup.tscn" id="13_780pa"]
[ext_resource type="PackedScene" uid="uid://dv1gec8q4h6b7" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/quit_popup/9_verb_quit_popup.tscn" id="14_0vlip"]
[sub_resource type="AtlasTexture" id="AtlasTexture_0ckh2"]
atlas = ExtResource("3_fpt6m")
region = Rect2(32, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jysoy"]
atlas = ExtResource("3_fpt6m")
region = Rect2(64, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_m2brv"]
atlas = ExtResource("3_fpt6m")
region = Rect2(96, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_flm5d"]
atlas = ExtResource("3_fpt6m")
region = Rect2(160, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_wwabf"]
atlas = ExtResource("3_fpt6m")
region = Rect2(0, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vpmp7"]
atlas = ExtResource("3_fpt6m")
region = Rect2(128, 0, 32, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0twu0"]
atlas = ExtResource("3_fpt6m")
region = Rect2(0, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_xtf0b"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0ckh2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jysoy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m2brv")
}],
"loop": true,
"name": &"active",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_flm5d")
}],
"loop": true,
"name": &"gui",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wwabf")
}],
"loop": true,
"name": &"normal",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_vpmp7")
}],
"loop": true,
"name": &"wait",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_0twu0")
}],
"loop": true,
"name": &"walk_to",
"speed": 5.0
}]
[node name="9VerbGUI" type="Control"]
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_5somw")
script = ExtResource("2_6nea2")
[node name="Cursor" type="AnimatedSprite2D" parent="."]
texture_filter = 1
sprite_frames = SubResource("SpriteFrames_xtf0b")
animation = &"active"
[node name="9VerbPanel" parent="." instance=ExtResource("6_tiq5g")]
unique_name_in_owner = true
layout_mode = 1
[node name="DialogOverhead" parent="." instance=ExtResource("5_gejku")]
layout_mode = 1
[node name="DialogMenu" parent="." instance=ExtResource("7_ypv20")]
visible = false
layout_mode = 1
[node name="HoverTextCursor" parent="." instance=ExtResource("9_pfhkt")]
unique_name_in_owner = true
layout_mode = 1
size_flags_vertical = 3
script = ExtResource("10_kg6cq")
follows_cursor = true
[node name="SystemText" parent="." instance=ExtResource("5_ygb3y")]
layout_mode = 1
[node name="Popups" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
metadata/_edit_lock_ = true
[node name="9VerbSettingsPopup" parent="Popups" instance=ExtResource("11_etexu")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="SaveAndLoadPopup" parent="Popups" instance=ExtResource("12_q44n2")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="HistoryPopup" parent="Popups" instance=ExtResource("13_780pa")]
unique_name_in_owner = true
visible = false
layout_mode = 1
[node name="9VerbQuitPopup" parent="Popups" instance=ExtResource("14_0vlip")]
unique_name_in_owner = true
visible = false
layout_mode = 1

View file

@ -0,0 +1,15 @@
[gd_resource type="Resource" script_class="PopochiuGUIInfo" load_steps=3 format=3 uid="uid://ecktw1j2mpea"]
[ext_resource type="Texture2D" uid="uid://brnmaiifdxwm" path="res://addons/popochiu/icons/ico_9verb.png" id="1_4efef"]
[ext_resource type="Script" path="res://addons/popochiu/engine/others/popochiu_gui_info.gd" id="1_pkhv6"]
[resource]
script = ExtResource("1_pkhv6")
title = "9 Verb (LucasArts)"
description = "- Uses the 9 Verbs (commands) of LucasArts games: [b]Open[/b], [b]Pick Up[/b], [b]Push[/b], [b]Close[/b], [b]Look At[/b], [b]Pull[/b], [b]Give[/b], [b]Talk To[/b], [b]Use[/b].
- [b]Right click[/b] to trigger the suggested command or walk.
- [b]Inventory grid[/b] on the bottom.
- [b]Settings popup[/b] that opens with a button in the top-right corner.
Like in games such as Day of the Tentacle, Thimbleweed Park, The Secret of Monkey Island."
icon = ExtResource("1_4efef")

View file

@ -0,0 +1,86 @@
extends PopochiuHoverText
@export var follows_cursor := false
var _gui_width := 0.0
var _gui_height := 0.0
# Used to fix a warning shown by Godot related to the anchors of the node and changing its size
# during a _ready() execution
var _can_change_size := false
#region Godot ######################################################################################
func _ready() -> void:
super()
_gui_width = PopochiuUtils.e.width
_gui_height = PopochiuUtils.e.height
if PopochiuUtils.e.settings.scale_gui:
_gui_width /= PopochiuUtils.e.scale.x
_gui_height /= PopochiuUtils.e.scale.y
PopochiuUtils.e.current_command = NineVerbCommands.Commands.WALK_TO
set_process(follows_cursor)
label.autowrap_mode = (
TextServer.AUTOWRAP_OFF if follows_cursor else TextServer.AUTOWRAP_WORD_SMART
)
_show_text()
PopochiuUtils.e.ready.connect(set.bind("_can_change_size", true))
func _process(_delta: float) -> void:
label.position = get_viewport().get_mouse_position()
if PopochiuUtils.e.settings.scale_gui:
label.position /= PopochiuUtils.e.scale
label.position -= label.size / 2.0
label.position.y -= PopochiuUtils.cursor.get_cursor_height() / 2
# Check viewport limits
if label.position.x < 0.0:
label.position.x = 0.0
elif label.position.x + label.size.x > _gui_width:
label.position.x = _gui_width - label.size.x
if label.position.y < 0.0:
label.position.y = 0.0
elif label.position.y + label.size.y > _gui_height:
label.position.y = _gui_height - label.size.y
#endregion
#region Private ####################################################################################
func _show_text(txt := "") -> void:
label.text = ""
if follows_cursor and _can_change_size:
label.size = Vector2.ZERO
if txt.is_empty():
if (
PopochiuUtils.e.current_command == NineVerbCommands.Commands.WALK_TO
and is_instance_valid(PopochiuUtils.e.get_hovered())
):
super("%s %s" % [
PopochiuUtils.e.get_current_command_name(),
PopochiuUtils.e.get_hovered().description
])
elif PopochiuUtils.e.current_command != NineVerbCommands.Commands.WALK_TO:
super(PopochiuUtils.e.get_current_command_name())
elif not txt.is_empty() and not PopochiuUtils.i.active:
super("%s %s" % [PopochiuUtils.e.get_current_command_name(), txt])
elif PopochiuUtils.i.active:
super(txt)
if follows_cursor and _can_change_size:
label.size += Vector2.ONE * (PopochiuUtils.cursor.get_cursor_height() / 2)
# Adding 2.0 fixes a visual bug that was showing the first character of the text cut
label.size.x += 2.0
#endregion

View file

@ -0,0 +1,22 @@
@tool
extends PopochiuInventoryGrid
@onready var settings: TextureButton = %Settings
#region Godot ######################################################################################
func _ready():
super()
# Connect to child signals
settings.pressed.connect(_on_settings_pressed)
#endregion
#region Private ####################################################################################
func _on_settings_pressed() -> void:
PopochiuUtils.g.gui.settings_requested.emit()
#endregion

View file

@ -0,0 +1,132 @@
[gd_scene load_steps=18 format=3 uid="uid://djan6vy0xq8dq"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_7ovtr"]
[ext_resource type="PackedScene" uid="uid://b4juyi6em7wja" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_slot.tscn" id="2_goalc"]
[ext_resource type="Texture2D" uid="uid://k5k85xjvtqwc" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_up.png" id="2_i17ns"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_grid.gd" id="2_vgmo0"]
[ext_resource type="Texture2D" uid="uid://co5fkuv4jgfbc" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_down.png" id="3_uqfpl"]
[ext_resource type="Texture2D" uid="uid://dcl6wrqgsdqa1" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_ico_settings.png" id="5_npkld"]
[sub_resource type="AtlasTexture" id="AtlasTexture_5xjfw"]
atlas = ExtResource("2_i17ns")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_mq4sk"]
atlas = ExtResource("2_i17ns")
region = Rect2(32, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_2rabq"]
atlas = ExtResource("2_i17ns")
region = Rect2(16, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_hw2h8"]
atlas = ExtResource("2_i17ns")
region = Rect2(48, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_tx0je"]
atlas = ExtResource("5_npkld")
region = Rect2(0, 0, 16, 15)
[sub_resource type="AtlasTexture" id="AtlasTexture_4olg0"]
atlas = ExtResource("5_npkld")
region = Rect2(32, 0, 16, 15)
[sub_resource type="AtlasTexture" id="AtlasTexture_xswvt"]
atlas = ExtResource("5_npkld")
region = Rect2(16, 0, 16, 15)
[sub_resource type="AtlasTexture" id="AtlasTexture_6237a"]
atlas = ExtResource("3_uqfpl")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_obc06"]
atlas = ExtResource("3_uqfpl")
region = Rect2(32, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_dt380"]
atlas = ExtResource("3_uqfpl")
region = Rect2(16, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_jgd5d"]
atlas = ExtResource("3_uqfpl")
region = Rect2(48, 0, 16, 16)
[node name="9VerbInventoryGrid" type="HBoxContainer"]
custom_minimum_size = Vector2(191, 49)
offset_right = 191.0
offset_bottom = 49.0
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_filter = 0
theme = ExtResource("1_7ovtr")
theme_override_constants/separation = 1
script = ExtResource("2_vgmo0")
slot_scene = ExtResource("2_goalc")
h_separation = 1
v_separation = 1
[node name="ScrollButtons" type="VBoxContainer" parent="."]
custom_minimum_size = Vector2(24, 0)
layout_mode = 2
theme_override_constants/separation = 1
[node name="UpContainer" type="PanelContainer" parent="ScrollButtons"]
layout_mode = 2
size_flags_vertical = 3
[node name="Up" type="TextureButton" parent="ScrollButtons/UpContainer"]
unique_name_in_owner = true
texture_filter = 1
layout_mode = 2
size_flags_vertical = 3
texture_normal = SubResource("AtlasTexture_5xjfw")
texture_pressed = SubResource("AtlasTexture_mq4sk")
texture_hover = SubResource("AtlasTexture_2rabq")
texture_disabled = SubResource("AtlasTexture_hw2h8")
stretch_mode = 3
[node name="SettingsContainer" type="PanelContainer" parent="ScrollButtons"]
layout_mode = 2
[node name="Settings" type="TextureButton" parent="ScrollButtons/SettingsContainer"]
unique_name_in_owner = true
texture_filter = 1
custom_minimum_size = Vector2(24, 15)
layout_mode = 2
texture_normal = SubResource("AtlasTexture_tx0je")
texture_pressed = SubResource("AtlasTexture_4olg0")
texture_hover = SubResource("AtlasTexture_xswvt")
ignore_texture_size = true
stretch_mode = 5
[node name="DownContainer" type="PanelContainer" parent="ScrollButtons"]
layout_mode = 2
size_flags_vertical = 3
[node name="Down" type="TextureButton" parent="ScrollButtons/DownContainer"]
unique_name_in_owner = true
texture_filter = 1
layout_mode = 2
size_flags_vertical = 3
texture_normal = SubResource("AtlasTexture_6237a")
texture_pressed = SubResource("AtlasTexture_obc06")
texture_hover = SubResource("AtlasTexture_dt380")
texture_disabled = SubResource("AtlasTexture_jgd5d")
stretch_mode = 3
[node name="ScrollContainer" type="ScrollContainer" parent="."]
custom_minimum_size = Vector2(99, 49)
layout_mode = 2
size_flags_horizontal = 3
scroll_vertical_custom_step = 27.0
horizontal_scroll_mode = 3
vertical_scroll_mode = 3
[node name="Box" type="GridContainer" parent="ScrollContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/h_separation = 1
theme_override_constants/v_separation = 1
columns = 4

View file

@ -0,0 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://b4juyi6em7wja"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_xvh2s"]
[node name="9VerbInventorySlot" type="PanelContainer"]
custom_minimum_size = Vector2(40, 24)
offset_right = 40.0
offset_bottom = 24.0
size_flags_horizontal = 3
size_flags_vertical = 3
theme = ExtResource("1_xvh2s")

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://co5fkuv4jgfbc"
path="res://.godot/imported/9verb_inventory_down.png-c2063bc18f3852e55efd1be63481c340.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_down.png"
dest_files=["res://.godot/imported/9verb_inventory_down.png-c2063bc18f3852e55efd1be63481c340.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,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://k5k85xjvtqwc"
path="res://.godot/imported/9verb_inventory_up.png-65c99e0daf5ad91d8211f30b267d1e5e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/images/9verb_inventory_up.png"
dest_files=["res://.godot/imported/9verb_inventory_up.png-65c99e0daf5ad91d8211f30b267d1e5e.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,23 @@
extends Control
@onready var hover_text_centered: Control = %HoverTextCentered
@onready var commands_container: BoxContainer = %CommandsContainer
#region Godot ######################################################################################
func _ready() -> void:
hover_text_centered.hide()
#endregion
#region Public #####################################################################################
func unpress_commands() -> void:
commands_container.unpress_commands()
func highlight_command(command_id: int, highlighted := true) -> void:
commands_container.highlight_command(command_id, highlighted)
#endregion

View file

@ -0,0 +1,177 @@
[gd_scene load_steps=11 format=3 uid="uid://cuokybjvunmhq"]
[ext_resource type="PackedScene" uid="uid://esorelppu4hw" path="res://addons/popochiu/engine/objects/gui/components/hover_text/hover_text.tscn" id="1_8t0fs"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_o0fnb"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_panel/9_verb_panel.gd" id="2_55o6l"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_hover_text/9_verb_hover_text.gd" id="2_qt1af"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_commands_container.gd" id="3_q8l3d"]
[ext_resource type="ButtonGroup" uid="uid://y1thfsxxjowe" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/resources/9_verb_button_group.tres" id="4_6lnif"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/commands_container/9_verb_command_button.gd" id="5_bpewk"]
[ext_resource type="PackedScene" uid="uid://djan6vy0xq8dq" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/9_verb_inventory_grid/9_verb_inventory_grid.tscn" id="6_r1cmu"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_b57cn"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mksfu"]
[node name="9VerbPanel" 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_o0fnb")
script = ExtResource("2_55o6l")
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -64.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_b57cn")
metadata/_edit_group_ = true
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
layout_mode = 2
theme_override_constants/separation = 1
alignment = 2
[node name="HoverTextCentered" parent="PanelContainer/VBoxContainer" instance=ExtResource("1_8t0fs")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
theme = null
script = ExtResource("2_qt1af")
follows_cursor = false
[node name="Verbs&InventoryContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer"]
layout_mode = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_mksfu")
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer"]
layout_mode = 2
size_flags_vertical = 8
theme_override_constants/separation = 1
[node name="CommandsContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 1
script = ExtResource("3_q8l3d")
[node name="Row1" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer"]
custom_minimum_size = Vector2(0, 16)
layout_mode = 2
theme_override_constants/separation = 1
[node name="Open" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row1"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Open"
script = ExtResource("5_bpewk")
command = 1
[node name="PickUp" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row1"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Pick Up"
script = ExtResource("5_bpewk")
command = 2
[node name="Push" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row1"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Push"
script = ExtResource("5_bpewk")
command = 3
[node name="Row2" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer"]
custom_minimum_size = Vector2(0, 15)
layout_mode = 2
theme_override_constants/separation = 1
[node name="Close" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row2"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Close"
script = ExtResource("5_bpewk")
command = 4
[node name="LookAt" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row2"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Look At"
script = ExtResource("5_bpewk")
command = 5
[node name="Pull" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row2"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Pull"
script = ExtResource("5_bpewk")
command = 6
[node name="Row3" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer"]
custom_minimum_size = Vector2(0, 16)
layout_mode = 2
theme_override_constants/separation = 1
[node name="Give" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row3"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Give"
script = ExtResource("5_bpewk")
command = 7
[node name="TalkTo" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row3"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Talk To"
script = ExtResource("5_bpewk")
command = 8
[node name="Use" type="Button" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer/CommandsContainer/Row3"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
toggle_mode = true
button_group = ExtResource("4_6lnif")
text = "Use"
script = ExtResource("5_bpewk")
command = 9
[node name="9VerbInventoryGrid" parent="PanelContainer/VBoxContainer/Verbs&InventoryContainer/HBoxContainer" instance=ExtResource("6_r1cmu")]
layout_mode = 2
size_flags_horizontal = 1
theme = null

View file

@ -0,0 +1,19 @@
extends Button
@export var command: NineVerbCommands.Commands = NineVerbCommands.Commands.WALK_TO
#region Godot ######################################################################################
func _ready() -> void:
pressed.connect(_on_pressed)
#endregion
#region Private ####################################################################################
func _on_pressed() -> void:
PopochiuUtils.e.current_command = command
PopochiuUtils.g.show_hover_text()
#endregion

View file

@ -0,0 +1,28 @@
extends BoxContainer
#region Public #####################################################################################
func press_command(command: int) -> void:
var btn: BaseButton = find_child(PopochiuUtils.e.get_command_name(command).to_pascal_case())
if btn:
btn.button_pressed = true
func unpress_commands() -> void:
for btn in find_children("*", "BaseButton") as Array[BaseButton]:
btn.set_pressed_no_signal(false)
if btn.has_focus():
btn.release_focus()
func highlight_command(command: int, highlighted := true) -> void:
var btn: BaseButton = find_child(PopochiuUtils.e.get_command_name(command).to_pascal_case())
if btn:
@warning_ignore("standalone_ternary")
btn.grab_focus() if highlighted else btn.release_focus()
#endregion

View file

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://dv1gec8q4h6b7"]
[ext_resource type="PackedScene" uid="uid://bnjo044fkdcq7" path="res://addons/popochiu/engine/objects/gui/components/popups/quit_popup/quit_popup.tscn" id="1_8vq27"]
[node name="9VerbQuitPopup" instance=ExtResource("1_8vq27")]
script_name = &"9VerbQuitPopup"

View file

@ -0,0 +1,43 @@
@tool
extends PopochiuPopup
signal option_selected(option_name: String)
signal classic_sentence_toggled(pressed: bool)
@onready var classic_sentence: CheckButton = %ClassicSentence
@onready var save_btn: Button = %Save
@onready var load_btn: Button = %Load
@onready var history_btn: Button = %History
@onready var quit_btn: Button = %Quit
#region Godot ######################################################################################
func _ready() -> void:
super()
if Engine.is_editor_hint(): return
# Connect to child signals
save_btn.pressed.connect(option_selected.emit.bind("save"))
load_btn.pressed.connect(option_selected.emit.bind("load"))
history_btn.pressed.connect(option_selected.emit.bind("history"))
quit_btn.pressed.connect(option_selected.emit.bind("quit"))
classic_sentence.toggled.connect(_on_classic_sentence_toggled)
# Connect to autoloads signals
# Fix #219: Close the popup whenever a slot is selected for saving or loading
PopochiuUtils.e.game_saved.connect(close)
PopochiuUtils.e.game_load_started.connect(close)
if OS.has_feature("web"):
quit_btn.hide()
#endregion
#region Private ####################################################################################
func _on_classic_sentence_toggled(button_pressed: bool) -> void:
classic_sentence_toggled.emit(button_pressed)
#endregion

View file

@ -0,0 +1,120 @@
[gd_scene load_steps=8 format=3 uid="uid://crla6to4mm0p7"]
[ext_resource type="Theme" uid="uid://dpequqav4rjaf" path="res://addons/popochiu/engine/objects/gui/resources/base_gui_theme.tres" id="1_iqhqs"]
[ext_resource type="Script" path="res://addons/popochiu/engine/objects/gui/templates/9_verb/components/settings_popup/9_verb_settings_popup.gd" id="2_fpv5p"]
[ext_resource type="Texture2D" uid="uid://cmxrewai8t2lm" path="res://addons/popochiu/engine/objects/gui/resources/images/close.png" id="3_4d6ih"]
[ext_resource type="StyleBox" uid="uid://dbajakvkltfaj" path="res://addons/popochiu/engine/objects/gui/components/popups/popochiu_popup_panel_container.tres" id="3_biwat"]
[ext_resource type="Texture2D" uid="uid://p32i25numi5e" path="res://addons/popochiu/engine/objects/gui/resources/images/close_highlight.png" id="4_duspy"]
[ext_resource type="PackedScene" uid="uid://drx0r8w00ivck" path="res://addons/popochiu/engine/objects/gui/components/sound_volumes/sound_volumes.tscn" id="5_k2hr6"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_4bri7"]
[node name="9VerbSettingsPopup" type="Control" groups=["popochiu_gui_popup"]]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_iqhqs")
script = ExtResource("2_fpv5p")
script_name = &"9VerbSettingsPopup"
title = "Settings"
[node name="Overlay" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxEmpty_4bri7")
[node name="PanelContainer" type="PanelContainer" parent="Overlay"]
custom_minimum_size = Vector2(264, 0)
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme_override_styles/panel = ExtResource("3_biwat")
[node name="VBoxContainer" type="VBoxContainer" parent="Overlay/PanelContainer"]
layout_mode = 2
[node name="HeaderContainer" type="HBoxContainer" parent="Overlay/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="Title" type="Label" parent="Overlay/PanelContainer/VBoxContainer/HeaderContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "Settings"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Close" type="TextureButton" parent="Overlay/PanelContainer/VBoxContainer/HeaderContainer"]
unique_name_in_owner = true
texture_filter = 1
layout_mode = 2
size_flags_vertical = 4
texture_normal = ExtResource("3_4d6ih")
texture_pressed = ExtResource("4_duspy")
texture_hover = ExtResource("4_duspy")
[node name="OptionsContainer" type="HBoxContainer" parent="Overlay/PanelContainer/VBoxContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer"]
layout_mode = 2
[node name="SoundVolumes" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/VBoxContainer" instance=ExtResource("5_k2hr6")]
layout_mode = 2
[node name="ClassicSentence" type="CheckButton" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/VBoxContainer"]
unique_name_in_owner = true
texture_filter = 1
layout_mode = 2
tooltip_text = "Show hover text centered"
text = "Classic sentence"
[node name="Buttons" type="VBoxContainer" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(96, 0)
layout_mode = 2
[node name="Save" type="Button" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = "Save"
[node name="Load" type="Button" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = "Load"
[node name="History" type="Button" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/Buttons"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "History"
[node name="Quit" type="Button" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = "Quit game"
[node name="Cancel" type="Button" parent="Overlay/PanelContainer/VBoxContainer/OptionsContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
text = "Resume game"
[node name="FooterContainer" type="HBoxContainer" parent="Overlay/PanelContainer/VBoxContainer"]
visible = false
layout_mode = 2
size_flags_vertical = 10
alignment = 2
[node name="Ok" type="Button" parent="Overlay/PanelContainer/VBoxContainer/FooterContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "ok"

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d0fwvj88bhggm"
path="res://.godot/imported/9verb_cursor.png-30129414d11ed7d1ed7ef281b7adc46c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_cursor.png"
dest_files=["res://.godot/imported/9verb_cursor.png-30129414d11ed7d1ed7ef281b7adc46c.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: 253 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcl6wrqgsdqa1"
path="res://.godot/imported/9verb_ico_settings.png-bdd21653f4156bde0b5c01c0675b7fb1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/popochiu/engine/objects/gui/templates/9_verb/images/9verb_ico_settings.png"
dest_files=["res://.godot/imported/9verb_ico_settings.png-bdd21653f4156bde0b5c01c0675b7fb1.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 @@
[gd_resource type="ButtonGroup" format=3 uid="uid://y1thfsxxjowe"]
[resource]
resource_local_to_scene = false
resource_name = "9VerbButtonGroup"