90 lines
3.5 KiB
GDScript3
90 lines
3.5 KiB
GDScript3
extends Node
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
# var a = 2
|
|
# var b = "text"
|
|
##TODO: Should be based on screen position for starter
|
|
onready var player_start_position := Vector2(50,50)
|
|
|
|
onready var current_music_track :AudioStream
|
|
|
|
##TODO: Main can probably be derived from project properties
|
|
onready var main = get_node("/root/Main")
|
|
onready var viewport_container = get_node("/root/Main/ViewportContainer") #$ViewportContainer
|
|
onready var viewport = get_node("/root/Main/ViewportContainer/Viewport") # $ViewportContainer/Viewport
|
|
onready var camera_guide :CameraGuide = get_node("/root/Main/ViewportContainer/Viewport/CameraGuide")
|
|
|
|
func _ready():
|
|
assert(main != null, "LevelInfo: No Main Scene found.")
|
|
assert(viewport_container != null, "LevelInfo: No Viewport Container")
|
|
assert(viewport != null, "LevelInfo: No Viewport node found.")
|
|
assert(camera_guide != null, "LevelInfo: No CameraGuide node found.")
|
|
|
|
NetworkManager.connect("game_started", self, "_on_game_started")
|
|
NetworkManager.connect("game_ended", self, "_on_game_ended")
|
|
|
|
func _on_game_started():
|
|
camera_guide.enable_tracking()
|
|
|
|
func _on_game_ended():
|
|
camera_guide.disable_tracking()
|
|
camera_guide.reset_position()
|
|
|
|
func change_music_track(_music_track :AudioStream ):
|
|
if current_music_track != _music_track:
|
|
current_music_track = _music_track
|
|
var juke_box: AudioStreamPlayer = get_node("/root/Main/MusicPlayer")
|
|
if juke_box:
|
|
if juke_box.playing:
|
|
juke_box.stop()
|
|
juke_box.stream = current_music_track
|
|
juke_box.play()
|
|
else:
|
|
push_warning("Music Player '/root/Main/MusicPlayer' not found.")
|
|
|
|
func stop_music():
|
|
var juke_box: AudioStreamPlayer = get_node("/root/Main/MusicPlayer")
|
|
if juke_box:
|
|
if juke_box.playing:
|
|
juke_box.stop()
|
|
|
|
func change_level(_level_name :String, _position_name :String):
|
|
print("res://src/levels/" + _level_name + ".tscn" )
|
|
var SceneTransition = get_node("/root/Main/ViewportContainer/Viewport/SceneTransition")
|
|
#var simultaneous_scene = preload("res://levels/level2.tscn").instance()
|
|
var new_level = load("res://src/levels/" + _level_name + ".tscn" ).instance()
|
|
#print (get_tree().get_root().get_children())
|
|
|
|
for l in viewport.get_children():
|
|
#print (get_node("/root/Main").get_children())
|
|
if l is Level:
|
|
camera_guide.disable_tracking()
|
|
##TODO: Disabled signal based yield because I think it was taking too long
|
|
# No more errors but I'd like to know how to do this.
|
|
#SceneTransition.transition_dissolve("foo")
|
|
#yield(SceneTransition,"done")
|
|
yield(SceneTransition.transition_dissolve(), "completed")
|
|
print(l)
|
|
viewport.remove_child(l)
|
|
viewport.add_child(new_level)
|
|
##TODO: make this right below scene transition
|
|
viewport.move_child(new_level,2)
|
|
#get_node("/root/Main/ViewportContainer/Viewport/World").remove_child(l)
|
|
#get_node("/root/Main/ViewportContainer/Viewport/World").add_child(new_level)
|
|
#get_node("/root/Main/ViewportContainer/Viewport/World").move_child(new_level,1)
|
|
##TODO: Probably set start position
|
|
if new_level.entrances.has(_position_name):
|
|
player_start_position = new_level.entrances[_position_name].transform.origin
|
|
#print (get_node("/root/Main/ViewportContainer/Viewport").get_children())
|
|
#get_node("/root/Main/ViewportContainer/Viewport/CameraGuide").global_position = Vector2(160,90)
|
|
SceneTransition.reset()
|
|
camera_guide.transform.origin = Vector2(160,90)
|
|
camera_guide.enable_tracking()
|
|
#get_node("/root/Main").add_child_below_node(SceneTransition,new_level)
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
#func _process(delta):
|
|
# pass
|