StickerClone/core/sceneInstance.gd

74 lines
2.1 KiB
GDScript3
Raw Normal View History

2024-07-23 15:49:31 +00:00
extends Node2D
2024-07-25 12:08:44 +00:00
2024-07-23 15:49:31 +00:00
@export var InitialPlayer :PackedScene
@export var InitialMap :PackedScene
@onready var current_scene = $CurrentScene
2024-07-29 16:35:23 +00:00
@onready var next_scene = $NextScene
2024-07-23 15:49:31 +00:00
#@onready var scene_transition = $ScreenTransition/AnimationPlayer
2024-07-29 13:25:36 +00:00
var player:Object
2024-07-23 15:49:31 +00:00
2024-07-29 20:33:21 +00:00
func _process(_delta):
if($CurrentScene.get_child_count() >0):
if($CurrentScene.get_child(0).position != Vector2(0,0)):
breakpoint
func transition_to_scene(new_scene: PackedScene, spawn_location: Vector2, spawn_direction = 1):
2024-07-23 15:49:31 +00:00
#screen_transition.play('FadeToBlack')
2024-07-29 13:25:36 +00:00
if (new_scene):
2024-07-29 16:35:23 +00:00
if (current_scene.get_child_count() == 0 ):
current_scene.add_child(new_scene.instantiate())
else:
next_scene.add_child(new_scene.instantiate())
2024-07-29 20:33:21 +00:00
#region Anim Map
if (next_scene.get_child(0) != null):
match spawn_direction:
0:
$AnimationPlayer.play("travel_left",-1,1)
1:
$AnimationPlayer.play("travel_left",-1,1)
2:
$AnimationPlayer.play("travel_up",-1,1)
3:
$AnimationPlayer.play("travel_down",-1,1)
#endregion
#region Spawn Player
2024-07-23 15:49:31 +00:00
if (player):
2024-07-29 20:33:21 +00:00
player.reparent(next_scene.get_child(0))
2024-07-23 19:50:52 +00:00
player.teleport(spawn_location, spawn_direction)
2024-07-29 20:33:21 +00:00
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
else:
printerr("No New Scene")
2024-07-23 15:49:31 +00:00
func _on_ready():
transition_to_scene(InitialMap,Vector2(0,0),1)
2024-07-25 14:36:40 +00:00
2024-07-29 20:33:21 +00:00
func on_travel_end():
player.Traveling = false
print("end travel")
2024-07-29 16:35:23 +00:00
func _on_animation_player_animation_finished(anim_name):
print("anim finished")
current_scene.get_child(0).queue_free()
2024-07-29 20:33:21 +00:00
current_scene.position = Vector2(0,0)
if (next_scene.get_child_count() > 0):
next_scene.get_child(0).reparent(current_scene)
if (next_scene.get_child_count() > 0):
next_scene.get_child(0).queue_free()
print("level unloaded")
await get_tree().create_timer(1).connect("timeout",Callable(self,"on_travel_end"))