Skip to content

Instantly share code, notes, and snippets.

@Zertuk
Created July 20, 2019 21:52
Show Gist options
  • Save Zertuk/758ee4d1e9c301bb8696f305e70a11f9 to your computer and use it in GitHub Desktop.
Save Zertuk/758ee4d1e9c301bb8696f305e70a11f9 to your computer and use it in GitHub Desktop.
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