Started cutscene system
This commit is contained in:
39
scripts/Cutscene/Cutscene.gd
Normal file
39
scripts/Cutscene/Cutscene.gd
Normal file
@@ -0,0 +1,39 @@
|
||||
class_name Cutscene
|
||||
const CutsceneEvent = preload("res://scripts/Cutscene/CutsceneEvent.gd");
|
||||
|
||||
var queue:Array[CutsceneEvent] = [];
|
||||
|
||||
func setupCutscene() -> void:
|
||||
print_debug("Cutscene setup has not been overriden");
|
||||
pass
|
||||
|
||||
func update(delta:float) -> void:
|
||||
if queue.size() == 0:
|
||||
return
|
||||
|
||||
var item = queue[0]
|
||||
if !item.started:
|
||||
item.start()
|
||||
item.started = true
|
||||
|
||||
item.update(delta)
|
||||
|
||||
if item.isDone():
|
||||
item.end()
|
||||
queue.erase(item)
|
||||
|
||||
pass
|
||||
|
||||
func add(items:Array[CutsceneEvent]) -> void:
|
||||
queue.append_array(items)
|
||||
|
||||
func clear() -> void:
|
||||
if queue.size() == 0:
|
||||
return
|
||||
|
||||
var item = queue[0]
|
||||
if item.started:
|
||||
item.end()
|
||||
item.started = false
|
||||
|
||||
queue.clear()
|
18
scripts/Cutscene/CutsceneEvent.gd
Normal file
18
scripts/Cutscene/CutsceneEvent.gd
Normal file
@@ -0,0 +1,18 @@
|
||||
class_name CutsceneEvent
|
||||
|
||||
var started:bool = false;
|
||||
|
||||
func _init() -> void:
|
||||
pass
|
||||
|
||||
func start() -> void:
|
||||
pass
|
||||
|
||||
func update(delta:float) -> void:
|
||||
pass
|
||||
|
||||
func isDone() -> bool:
|
||||
return true
|
||||
|
||||
func end() -> void:
|
||||
pass
|
9
scripts/Cutscene/Event/CutscenePrintEvent.gd
Normal file
9
scripts/Cutscene/Event/CutscenePrintEvent.gd
Normal file
@@ -0,0 +1,9 @@
|
||||
class_name CutscenePrintEvent extends "res://scripts/Cutscene/CutsceneEvent.gd"
|
||||
|
||||
var text:String = ""
|
||||
|
||||
func _init(text:String) -> void:
|
||||
self.text = text
|
||||
|
||||
func start() -> void:
|
||||
print(self.text)
|
12
scripts/Cutscene/Event/CutsceneWaitEvent.gd
Normal file
12
scripts/Cutscene/Event/CutsceneWaitEvent.gd
Normal file
@@ -0,0 +1,12 @@
|
||||
class_name CutsceneWaitEvent extends "res://scripts/Cutscene/CutsceneEvent.gd"
|
||||
|
||||
var wait:float = 0.0
|
||||
|
||||
func _init(wait:float) -> void:
|
||||
self.wait = wait
|
||||
|
||||
func update(delta:float) -> void:
|
||||
self.wait -= delta
|
||||
|
||||
func isDone() -> bool:
|
||||
return self.wait <= 0.0
|
10
scripts/Cutscene/TestCutscene.gd
Normal file
10
scripts/Cutscene/TestCutscene.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
class_name TestCutscene extends "res://scripts/Cutscene/Cutscene.gd"
|
||||
const CutscenePrintEvent = preload("res://scripts/Cutscene/Event/CutscenePrintEvent.gd");
|
||||
const CutsceneWaitEvent = preload("res://scripts/Cutscene/Event/CutsceneWaitEvent.gd");
|
||||
|
||||
func setupCutscene() -> void:
|
||||
add([
|
||||
CutsceneWaitEvent.new(4.0),
|
||||
CutscenePrintEvent.new("Hello, World!")
|
||||
]);
|
||||
pass
|
Reference in New Issue
Block a user