Fixed UI system

This commit is contained in:
2025-05-06 16:08:46 -05:00
parent b0d9106772
commit 85a7ed99bf
44 changed files with 158 additions and 87 deletions

View File

@@ -1,5 +1,5 @@
class_name OverworldEntityEvent extends "res://scripts/Cutscene/CutsceneEvent.gd"
const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd");
const OverworldEntity = preload("res://scripts/Entity/OverworldEntity.gd");
var entity:OverworldEntity;

View File

@@ -1,5 +1,5 @@
class_name OverworldConversationEvent extends "res://scripts/Cutscene/Cutscene.gd"
const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd");
const OverworldEntity = preload("res://scripts/Entity/OverworldEntity.gd");
const TextboxEvent = preload("res://scripts/Cutscene/Event/VisualNovel/TextboxEvent.gd");
const PauseEvent = preload("res://scripts/Cutscene/Event/CutscenePauseEvent.gd");
const OverworldChangeDirectionEvent = preload("res://scripts/Cutscene/Event/Entity/OverworldChangeDirectionEvent.gd");

View File

@@ -1,5 +1,5 @@
class_name BasicNPCEntity extends "res://scripts/Entities/OverworldEntity.gd"
const Event = preload("res://scripts/Events/Event.gd");
class_name BasicNPCEntity extends "res://scripts/Entity/OverworldEntity.gd"
const Event = preload("res://scripts/Event/Event.gd");
enum BasicNPCMoveType {
STILL,

View File

@@ -1,4 +1,4 @@
class_name RosaController extends "res://scripts/Entities/OverworldEntity.gd"
class_name RosaController extends "res://scripts/Entity/OverworldEntity.gd"
var interactRange = 0.7;

View File

@@ -1,4 +1,4 @@
class_name EventEntityTurn extends "res://scripts/Events/Event.gd"
class_name EventEntityTurn extends "res://scripts/Event/Event.gd"
@export var entity:OverworldEntity = null
@export var direction:OverworldEntity.Direction = OverworldEntity.Direction.SOUTH

View File

@@ -1,6 +1,6 @@
class_name Event extends Node
const OverworldEntity = preload("res://scripts/Entities/OverworldEntity.gd");
const OverworldEntity = preload("res://scripts/Entity/OverworldEntity.gd");
var started:bool = false;

View File

@@ -1,4 +1,4 @@
class_name EventConversation extends "res://scripts/Events/Flow/EventGroup.gd"
class_name EventConversation extends "res://scripts/Event/Flow/EventGroup.gd"
@export var startPauseType:PauseSystem.PauseType = PauseSystem.PauseType.ENTITY_PAUSED
@export var endPauseType:PauseSystem.PauseType = PauseSystem.PauseType.NOT_PAUSED

View File

@@ -1,4 +1,4 @@
class_name EventPause extends "res://scripts/Events/Event.gd"
class_name EventPause extends "res://scripts/Event/Event.gd"
const PauseSystem = preload("res://scripts/Singletons/Pause.gd")

View File

@@ -1,4 +1,4 @@
class_name EventTextbox extends "res://scripts/Events/Event.gd"
class_name EventTextbox extends "res://scripts/Event/Event.gd"
# @export var text:Array[String] = [ "Hello Text" ];
@export_multiline var text:String = "Hello Text"
@@ -8,4 +8,4 @@ func start() -> void:
VN.getTextbox().setText(self.text);
func isDone() -> bool:
return super.isDone() && VN.getTextbox().isClosed;
return super.isDone() && VN.getTextbox().isClosed;

View File

@@ -1,4 +1,4 @@
class_name EventGroup extends "res://scripts/Events/Flow/EventWithChildren.gd"
class_name EventGroup extends "res://scripts/Event/Flow/EventWithChildren.gd"
enum ProcessType {
SEQUENTIAL,

View File

@@ -1,34 +1,12 @@
class_name EventWithChildren extends "res://scripts/Events/Event.gd"
class_name EventWithChildren extends "res://scripts/Event/Event.gd"
var childEvents:Array[Event] = []
var extraEvents:Array[Event] = []
func _init() -> void:
super._init()
# _updateChildEvents()
# self.child_entered_tree.connect(onChildEntered)
# self.child_exiting_tree.connect(onChildExited)
# self.child_order_changed.connect(onChildOrderChanged)
func start():
super.start()
_updateChildEvents()
func _updateChildEvents() -> void:
childEvents = []
for child in get_children():
if child is Event:
childEvents.append(child)
func onChildEntered(child:Node) -> void:
_updateChildEvents()
func onChildExited(child:Node) -> void:
_updateChildEvents()
func onChildOrderChanged() -> void:
_updateChildEvents()
func reset() -> void:
super.reset()
_cleanupExtraEvents()
@@ -37,6 +15,12 @@ func end() -> void:
super.end()
_cleanupExtraEvents()
func _updateChildEvents() -> void:
childEvents = []
for child in get_children():
if child is Event:
childEvents.append(child)
func _cleanupExtraEvents():
for event in extraEvents:
remove_child(event)

View File

@@ -3,7 +3,7 @@ extends Node
var debugMenu:DebugMenu
func _ready() -> void:
debugMenu = $UI/DebugMenu;
debugMenu = $SubsceneUI/DebugMenu;
debugMenu.hide()
func _process(delta: float) -> void:
@@ -16,8 +16,7 @@ func _process(delta: float) -> void:
func showMenu() -> void:
debugMenu.show()
self.get_parent().move_child(self, self.get_parent().get_child_count() - 1)
print("Debug menu shown")
func hideMenu() -> void:
debugMenu.hide()
self.get_parent().move_child(self, 0)

View File

@@ -1,7 +1 @@
class_name QuestSystem extends Node
static var QUEST_EXAMPLE = preload("res://scripts/Quest/QuestExample.gd").new();
static var ALL_QUESTS = [
QUEST_EXAMPLE
]
class_name QuestSystem extends Node

View File

@@ -1,4 +1,4 @@
extends Node
class_name SceneManager extends Node
const MainMenu = preload("res://scenes/MainMenu.tscn");
const OverworldScene = preload("res://scenes/Overworld.tscn");

25
scripts/Singletons/UI.gd Normal file
View File

@@ -0,0 +1,25 @@
class_name UISystem extends Control
enum Layer {
Game,
VN,
Test,
Debug
}
func addSubscene(subscene:Control, layer:Layer) -> void:
subscene.originalParent.remove_child.call_deferred(subscene)
match layer:
Layer.Game:
$LayerGame.add_child.call_deferred(subscene)
Layer.Debug:
$LayerDebug.add_child.call_deferred(subscene)
Layer.VN:
$LayerVN.add_child.call_deferred(subscene)
_:
push_error("Invalid layer: " + str(layer))
return
func removeSubscene(subscene:Control) -> void:
subscene.get_parent().remove_child(subscene)

View File

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

View File

@@ -1,5 +1,10 @@
class_name VNSystem extends Node
const VNTextbox = preload("res://scripts/UI/VNTextbox.gd")
var vnTextbox:VNTextbox = null
func _ready() -> void:
vnTextbox = $SubsceneUI/VNTextbox
func getTextbox() -> VNTextbox:
return $UI/VNTextbox;
return vnTextbox

15
scripts/UI/SubsceneUI.gd Normal file
View File

@@ -0,0 +1,15 @@
class_name SubsceneUI extends Control
@export var layer:UISystem.Layer = UISystem.Layer.Game;
var originalParent:Node = null
func _ready() -> void:
originalParent = self.get_parent()
originalParent.tree_exiting.connect(onParentExiting)
UI.addSubscene(self, layer)
func onParentExiting() -> void:
if originalParent:
originalParent.tree_exiting.disconnect(onParentExiting)
UI.removeSubscene(self)
originalParent = null

View File

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