a game about throwing hammers made for the github game off
Diffstat (limited to 'levels/LevelManager.gd')
-rw-r--r--levels/LevelManager.gd92
1 files changed, 46 insertions, 46 deletions
diff --git a/levels/LevelManager.gd b/levels/LevelManager.gd
index 02e3816..45bf640 100644
--- a/levels/LevelManager.gd
+++ b/levels/LevelManager.gd
@@ -32,36 +32,36 @@ var t: SceneTreeTimer
var sorted := [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
func _init() -> void:
- Globals.levelmanager = self
+ Globals.levelmanager = self
func _exit_tree() -> void:
- Globals.levelmanager = null
+ Globals.levelmanager = null
func _ready() -> void:
- gen_map()
- lvl_position = size / 2
- Events.change_level.connect(go)
- print_map_pretty()
+ gen_map()
+ lvl_position = size / 2
+ Events.change_level.connect(go)
+ print_map_pretty()
## Goes to the next room in [param to] direction.
func go(to: Vector2i) -> void:
- completed_levels.append(lvl_position)
- if t and t.time_left > 0:
- print("skipping door enter")
- return
- t = get_tree().create_timer(0.1)
- lvl_position += to
- current_level.queue_free()
- current_level = map[lvl_position.y][lvl_position.x].instantiate() as TileMap
- var v := Vector2i(128, 128) # center
- player.position = Vector2(v - (v * to)).move_toward(v, 24)
- player.velocity = Vector2.ZERO
- main.call_deferred(&"add_child", current_level)
- if lvl_position in completed_levels:
- current_level.completed = true
- prints("welcome back to", current_level.name)
- else:
- prints("welcome to", current_level.name)
+ completed_levels.append(lvl_position)
+ if t and t.time_left > 0:
+ print("skipping door enter")
+ return
+ t = get_tree().create_timer(0.1)
+ lvl_position += to
+ current_level.queue_free()
+ current_level = map[lvl_position.y][lvl_position.x].instantiate() as TileMap
+ var v := Vector2i(128, 128) # center
+ player.position = Vector2(v - (v * to)).move_toward(v, 24)
+ player.velocity = Vector2.ZERO
+ main.call_deferred(&"add_child", current_level)
+ if lvl_position in completed_levels:
+ current_level.completed = true
+ prints("welcome back to", current_level.name)
+ else:
+ prints("welcome to", current_level.name)
## Prints out the map prettily.
## eg: [codeblock]
@@ -73,32 +73,32 @@ func go(to: Vector2i) -> void:
## 15 08 07 08 07 09
## [/codeblock]
func print_map_pretty() -> void:
- var string := ""
- for row in map:
- for item in row:
- string += str(item.get_state().get_node_name(0)).substr(0, 2) + " "
- string += "\n"
- print(string)
+ var string := ""
+ for row in map:
+ for item in row:
+ string += str(item.get_state().get_node_name(0)).substr(0, 2) + " "
+ string += "\n"
+ print(string)
## Split levels into [url=https://kidscancode.org/blog/img/cells_4bit.png]4bit wall[/url] groups.
func sort_levels():
- for level in levels:
- # property idx 1 is the enabled walls
- # if prop is not overriden, default to 0
- var n: int = 0 if level.get_state().get_node_property_count(0) == 1 else level.get_state().get_node_property_value(0, 1)
- sorted[n].append(level)
+ for level in levels:
+ # property idx 1 is the enabled walls
+ # if prop is not overriden, default to 0
+ var n: int = 0 if level.get_state().get_node_property_count(0) == 1 else level.get_state().get_node_property_value(0, 1)
+ sorted[n].append(level)
## Generates the maze.
func gen_map() -> void:
- sort_levels()
- maze = Maze.new(size)
- maze.image.save_png("res://maze.png")
- lvl_position = size / 2
- map.clear()
- for row in maze.maze:
- var map_row: Array[PackedScene] = []
- for i in row:
- map_row.append(sorted[i][randi() % len(sorted[i])])
- map.append(map_row)
- map[lvl_position.x][lvl_position.y] = start
- world_generated.emit(maze)
+ sort_levels()
+ maze = Maze.new(size)
+ maze.image.save_png("res://maze.png")
+ lvl_position = size / 2
+ map.clear()
+ for row in maze.maze:
+ var map_row: Array[PackedScene] = []
+ for i in row:
+ map_row.append(sorted[i][randi() % len(sorted[i])])
+ map.append(map_row)
+ map[lvl_position.x][lvl_position.y] = start
+ world_generated.emit(maze)