Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- #The currently active scene
- var currentScene = null
- var resource_queue = null
- var settings_config_file = null setget , get_config_file
- var SETTINGS_CONFIG_NAME = "user://settings.cfg"
- var INTRO_SCENE_NAME = "res://scenes/intro_scene.tscn"
- var MENU_SCENE_NAME = "res://scenes/menu_scene.tscn"
- var GAME_SCENE_NAME = "res://scenes/game_scene.tscn"
- func _ready():
- #On load set the current scene to the last scene available
- currentScene = get_tree().get_root().get_child(get_tree().get_root().get_child_count() -1)
- #Demonstrate setting a global variable.
- #Globals.set("MAX_POWER_LEVEL",9000)
- resource_queue = preload("res://scripts/resource_queue.gd").new()
- resource_queue.start()
- var configFile = get_config_file()
- func queueScene(scene, is_front):
- resource_queue.queue_resource(scene, is_front)
- func cancelScene(scene):
- resource_queue.cancel_resource(scene)
- # create a function to switch between scenes
- func switchScene(scene):
- #clean up the current scene
- if "scene_name" in currentScene:
- cancelScene(currentScene.scene_name)
- currentScene.queue_free()
- #create an instance of our scene
- currentScene = resource_queue.get_resource(scene).instance()
- # add scene to root
- get_tree().get_root().add_child(currentScene)
- func get_config_file():
- var settings_config_file = ConfigFile.new()
- var err = settings_config_file.load(SETTINGS_CONFIG_NAME)
- return settings_config_file
- func calculate_tilemap_size(tilemap):
- # Get list of all positions where there is a tile
- var used_cells = tilemap.get_used_cells()
- # If there are none, return null result
- if used_cells.size() == 0:
- return {x=0, y=0, width=0, height=0}
- # Take first cell as reference
- var min_x = used_cells[0].x
- var min_y = used_cells[0].y
- var max_x = min_x
- var max_y = min_y
- # Find bounds
- for i in range(1, used_cells.size()):
- var pos = used_cells[i]
- if pos.x < min_x:
- min_x = pos.x
- elif pos.x > max_x:
- max_x = pos.x
- if pos.y < min_y:
- min_y = pos.y
- elif pos.y > max_y:
- max_y = pos.y
- # Return resulting bounds
- return {
- x = min_x,
- y = min_y,
- width = max_x - min_x + 1,
- height = max_y - min_y + 1
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement