-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtransaction_component.gd
56 lines (51 loc) · 1.16 KB
/
transaction_component.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@tool
class_name TransitionComponent
extends Node
enum Action {
FADE_OUT,
FADE_IN,
}
@export var instigator: Node
@export var signal_name: String = "pressed"
@export var action: Action = Action.FADE_OUT :
set(value):
action = value
notify_property_list_changed()
var fade_scene: PackedScene = null :
set(value):
fade_scene = value
if not key:
key = fade_scene.resource_name
var key: String = ""
var lvl_path: String = ""
func _ready() -> void:
if not instigator:
instigator = get_parent()
if Engine.is_editor_hint():
return
if not instigator.has_signal(signal_name):
return
match action:
Action.FADE_OUT:
if not FileAccess.file_exists(lvl_path):
return
instigator.connect(signal_name,
LvlTransitions.swap_level.bind(
lvl_path, fade_scene, key
))
Action.FADE_IN:
instigator.connect(signal_name,
LvlTransitions.set_fade_in.bind(
fade_scene, key
))
func _get_property_list() -> Array[Dictionary]:
var result: Array[Dictionary] = []
match action:
Action.FADE_OUT:
result.append({
"name": "lvl_path",
"type": TYPE_STRING,
"hint": PROPERTY_HINT_FILE,
"hint_string": "*.tscn,*.scn",
})
return result