summaryrefslogtreecommitdiff
path: root/Game.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Game.gd')
-rw-r--r--Game.gd76
1 files changed, 76 insertions, 0 deletions
diff --git a/Game.gd b/Game.gd
new file mode 100644
index 0000000..7a5d0a5
--- /dev/null
+++ b/Game.gd
@@ -0,0 +1,76 @@
+extends Node
+
+
+signal mode_changed
+signal path_grid_changed
+
+
+enum Mode {
+ DEFAULT,
+ BUILD,
+}
+
+var mode: Mode = Mode.DEFAULT :
+ set(value):
+ mode = value
+ mode_changed.emit()
+
+
+var selected_tower: Tower
+var selected_unit: Mob
+
+
+var path_grid: AStarGrid2D
+var map: TileMapLayer
+
+func initialize_stage(tilemap: TileMapLayer):
+ map = tilemap
+
+ path_grid = AStarGrid2D.new()
+ path_grid.region = map.get_used_rect()
+ path_grid.cell_size = map.tile_set.tile_size
+ path_grid.diagonal_mode = AStarGrid2D.DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES
+ path_grid.update()
+
+ for tower in get_tree().current_scene.get_node("Towers").get_children():
+ path_grid.set_point_solid(
+ map.local_to_map(
+ tower.global_position
+ )
+ )
+
+
+func place_tower(tower: Tower, position: Vector2):
+ var grid_position = map.local_to_map(position)
+ path_grid.set_point_solid(grid_position, true)
+
+ tower.global_position = position
+ get_tree().current_scene.get_node("Towers").add_child(tower)
+
+ path_grid_changed.emit()
+
+func remove_tower(tower: Tower):
+ var grid_position = map.local_to_map(tower.global_position)
+ path_grid.set_point_solid(grid_position, false)
+ tower.queue_free()
+
+ path_grid_changed.emit()
+
+func select_tower(tower: Tower):
+ if selected_tower != tower:
+ selected_tower = tower
+ tower.select()
+
+func deselect_tower():
+ if selected_tower:
+ get_tree().current_scene.get_node("%Tower").text = ""
+
+
+func spawn_mob(mob: Mob, spawn: Spawn):
+ mob.global_position = spawn.global_position
+ mob.target = spawn.next_node.global_position
+ mob.hp = randi_range(50, 200)
+ mob.speed = randi_range(50, 150)
+ mob.get_node("Sprite2D").modulate = Color(randf_range(0, 1), randf_range(0, 1), randf_range(0, 1))
+
+ return mob