Fixed UI system
This commit is contained in:
@@ -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;
|
||||
|
||||
|
@@ -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");
|
||||
|
@@ -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,
|
@@ -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;
|
||||
|
@@ -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
|
@@ -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;
|
@@ -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
|
@@ -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")
|
||||
|
@@ -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;
|
@@ -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,
|
@@ -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)
|
@@ -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)
|
||||
|
@@ -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
|
@@ -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
25
scripts/Singletons/UI.gd
Normal 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)
|
1
scripts/Singletons/UI.gd.uid
Normal file
1
scripts/Singletons/UI.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dahhuhiu8u88b
|
@@ -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
15
scripts/UI/SubsceneUI.gd
Normal 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
|
1
scripts/UI/SubsceneUI.gd.uid
Normal file
1
scripts/UI/SubsceneUI.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://x3cc7wsnn0xd
|
Reference in New Issue
Block a user