StickerClone/core/sceneInstance.gd
2024-07-29 18:35:23 +02:00

58 lines
1.6 KiB
GDScript

extends Node2D
@export var InitialPlayer :PackedScene
@export var InitialMap :PackedScene
@onready var current_scene = $CurrentScene
@onready var next_scene = $NextScene
#@onready var scene_transition = $ScreenTransition/AnimationPlayer
var player:Object
func transition_to_scene(new_scene: PackedScene, spawn_location = Transform2D.IDENTITY, spawn_direction = 1):
#screen_transition.play('FadeToBlack')
if (new_scene):
if (current_scene.get_child_count() == 0 ):
current_scene.add_child(new_scene.instantiate())
else:
next_scene.add_child(new_scene.instantiate())
else:
printerr("No New Scene")
#region Spawn Player
if (player):
player.reparent(next_scene.get_child(0))
player.teleport(spawn_location, spawn_direction)
else:
player = $CurrentScene.find_child("player",true)
if (player):
player.teleport(spawn_location, spawn_direction)
else: #Spawn the player if there is none
if (InitialPlayer):
player = InitialPlayer.instantiate()
player.set_name("player")
current_scene.get_child(0).add_child(player)
else:
printerr("No Initial player found")
#endregion
match spawn_direction:
0:
$AnimationPlayer.play("travel_left")
1:
$AnimationPlayer.play_backwards("travel_left")
2:
$AnimationPlayer.play_backwards("travel_down")
3:
$AnimationPlayer.play("travel_down")
func _on_ready():
transition_to_scene(InitialMap,Vector2(0,0),1)
func _on_animation_player_animation_finished(anim_name):
print("anim finished")
current_scene.get_child(0).queue_free()
next_scene.get_child(0).reparent(current_scene)
next_scene.get_child(0).queue_free()