Started cutscene system
This commit is contained in:
@@ -1,6 +1,14 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://iibqlagufwhm"]
|
[gd_scene load_steps=4 format=3 uid="uid://iibqlagufwhm"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://scripts/Systems/Systems.gd" id="1_uen2c"]
|
[ext_resource type="Script" path="res://scripts/Systems/Systems.gd" id="1_uen2c"]
|
||||||
|
[ext_resource type="Script" path="res://scripts/Systems/CutsceneSystem.gd" id="2_sf62c"]
|
||||||
|
[ext_resource type="Script" path="res://scripts/Systems/ItemSystem.gd" id="3_nwp6i"]
|
||||||
|
|
||||||
[node name="Systems" type="Node3D"]
|
[node name="Systems" type="Node3D"]
|
||||||
script = ExtResource("1_uen2c")
|
script = ExtResource("1_uen2c")
|
||||||
|
|
||||||
|
[node name="Cutscene" type="Node3D" parent="."]
|
||||||
|
script = ExtResource("2_sf62c")
|
||||||
|
|
||||||
|
[node name="Item" type="Node3D" parent="."]
|
||||||
|
script = ExtResource("3_nwp6i")
|
||||||
|
@@ -16,8 +16,8 @@ ground_horizon_color = Color(0.59625, 0.6135, 0.6375, 1)
|
|||||||
sky_material = SubResource("ProceduralSkyMaterial_1b6it")
|
sky_material = SubResource("ProceduralSkyMaterial_1b6it")
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_18twt"]
|
[sub_resource type="Environment" id="Environment_18twt"]
|
||||||
background_mode = 2
|
|
||||||
sky = SubResource("Sky_weucl")
|
sky = SubResource("Sky_weucl")
|
||||||
|
ambient_light_source = 1
|
||||||
|
|
||||||
[node name="TestSceneRoot" type="Node3D"]
|
[node name="TestSceneRoot" type="Node3D"]
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.1432, 54.7591, -25.7675)
|
|||||||
light_energy = 15.315
|
light_energy = 15.315
|
||||||
omni_range = 281.646
|
omni_range = 281.646
|
||||||
|
|
||||||
[node name="test" parent="." instance=ExtResource("4_18e1y")]
|
[node name="Map" parent="." instance=ExtResource("4_18e1y")]
|
||||||
|
|
||||||
[node name="MapBounds" parent="." instance=ExtResource("4_gv7tl")]
|
[node name="MapBounds" parent="." instance=ExtResource("4_gv7tl")]
|
||||||
transform = Transform3D(22.0363, 0, 0, 0, 7.5201, 0, 0, 0, 19.278, 1.48402, 2.89779, 1.65935)
|
transform = Transform3D(22.0363, 0, 0, 0, 7.5201, 0, 0, 0, 19.278, 1.48402, 2.89779, 1.65935)
|
||||||
|
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
|
@@ -1,8 +1,10 @@
|
|||||||
class_name TestNPCController extends "res://scripts/Entities/OverworldEntity.gd"
|
class_name TestNPCController extends "res://scripts/Entities/OverworldEntity.gd"
|
||||||
|
const TestCutscene = preload("res://scripts/Cutscene/TestCutscene.gd")
|
||||||
|
|
||||||
func interact(interactor) -> void:
|
func interact(interactor) -> void:
|
||||||
var systems = getSystems();
|
var systems = getSystems();
|
||||||
systems.ITEM.addItem(systems.ITEM.ITEM_POTION, 1);
|
systems.CUTSCENE.setCurrentCutscene(TestCutscene.new())
|
||||||
|
#systems.ITEM.addItem(systems.ITEM.ITEM_POTION, 1);
|
||||||
#var itemSystem = (get_node("Systems") as Systems).ITEM;
|
#var itemSystem = (get_node("Systems") as Systems).ITEM;
|
||||||
#itemSystem.addItem(itemSystem.ITEM_POTION, 1);
|
#itemSystem.addItem(itemSystem.ITEM_POTION, 1);
|
||||||
#pass
|
#pass
|
||||||
|
19
scripts/Systems/CutsceneSystem.gd
Normal file
19
scripts/Systems/CutsceneSystem.gd
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
class_name CutsceneSystem extends Node
|
||||||
|
const Cutscene = preload("res://scripts/Cutscene/Cutscene.gd");
|
||||||
|
|
||||||
|
var currentCutscene:Cutscene = null;
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if currentCutscene != null:
|
||||||
|
currentCutscene.update(delta);
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
if currentCutscene != null:
|
||||||
|
currentCutscene.clear();
|
||||||
|
|
||||||
|
func setCurrentCutscene(cutscene:Cutscene) -> void:
|
||||||
|
if currentCutscene != null:
|
||||||
|
currentCutscene.clear();
|
||||||
|
|
||||||
|
currentCutscene = cutscene;
|
||||||
|
currentCutscene.setupCutscene();
|
@@ -1,4 +1,4 @@
|
|||||||
class_name ItemSystem
|
class_name ItemSystem extends Node
|
||||||
const Item = preload("res://scripts/Items/Item.gd");
|
const Item = preload("res://scripts/Items/Item.gd");
|
||||||
const ItemStack = preload("res://scripts/Items/ItemStack.gd");
|
const ItemStack = preload("res://scripts/Items/ItemStack.gd");
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ class ItemStackTypeComparator:
|
|||||||
|
|
||||||
# Constants
|
# Constants
|
||||||
const ITEM_STACK_SIZE_MAX = 99;
|
const ITEM_STACK_SIZE_MAX = 99;
|
||||||
var ITEM_POTION = preload("res://scripts/Items/Potion.gd").new()
|
var ITEM_POTION = preload("res://scripts/Items/Potion.gd").new();
|
||||||
var inventory:Array[ItemStack] = [];
|
var inventory:Array[ItemStack] = [];
|
||||||
|
|
||||||
# Methods
|
# Methods
|
||||||
|
@@ -1,3 +1,14 @@
|
|||||||
class_name Systems extends Node
|
class_name Systems extends Node
|
||||||
|
const ItemSystem = preload("res://scripts/Systems/ItemSystem.gd");
|
||||||
|
const CutsceneSystem = preload("res://scripts/Systems/CutsceneSystem.gd")
|
||||||
|
|
||||||
var ITEM = preload("res://scripts/Systems/ItemSystem.gd").new()
|
var ITEM:ItemSystem;
|
||||||
|
var CUTSCENE:CutsceneSystem;
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
ITEM = $Item;
|
||||||
|
CUTSCENE = $Cutscene;
|
||||||
|
pass
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
pass
|
||||||
|
Reference in New Issue
Block a user