Created
July 20, 2019 21:52
-
-
Save Zertuk/758ee4d1e9c301bb8696f305e70a11f9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extends Node2D | |
onready var player = get_node("player") | |
onready var camera = get_node("player/Camera2D") | |
onready var temp = get_node("temp") | |
onready var transition = get_node("CanvasLayer/game-ui/transition") | |
var pauseUnits = false | |
var currentLevel = "" | |
var initLoad = true | |
var isDev = true | |
var sceneSwitchTimer = 0 | |
const SCENE_SWITCH_TIME = 5 | |
var allLevels = { | |
"misc/level": preload("res://scenes/level/misc/level.tscn"), | |
"misc/level-template": preload("res://scenes/level/misc/level-template.tscn"), | |
"misc/test": preload("res://scenes/level/misc/test.tscn") | |
} | |
func _ready(): | |
if (isDev): | |
switchLevel("misc/level-template") | |
var pos = get_node("level/scene-switch-areas").get_children()[0].get_node("Sprite").global_position | |
pos.y = pos.y - 8 | |
player.global_position = pos | |
pass | |
func switchLevel(newLevel, positionAdjustment=Vector2(0, 0)): | |
if (sceneSwitchTimer > 0): | |
return | |
pauseUnits = true | |
transition.start() | |
camera.smoothing_enabled = false | |
sceneSwitchTimer = SCENE_SWITCH_TIME | |
var levelNode = get_node("level") | |
levelNode.name = "old-level" | |
clearTempObjects() | |
levelNode.queue_free() | |
var scene = allLevels[newLevel] | |
var node = scene.instance() | |
add_child(node, true) | |
camera.setupCameraForLevel() | |
if (currentLevel): | |
var levelWithoutScene = currentLevel.split("/")[1] | |
player.global_position = node.get_node("scene-switch-areas/" + levelWithoutScene + "/Sprite").global_position | |
player.global_position.y = player.global_position.y - positionAdjustment.y | |
player.global_position.x = player.global_position.x - positionAdjustment.x | |
currentLevel = newLevel | |
func clearTempObjects(): | |
for child in temp.get_children(): | |
child.queue_free() | |
func handleTimers(): | |
if (sceneSwitchTimer > 0): | |
sceneSwitchTimer = sceneSwitchTimer - 1 | |
else: | |
camera.smoothing_enabled = true | |
func _process(delta): | |
if (get_tree().paused): | |
return | |
handleTimers() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment