summaryrefslogtreecommitdiff
path: root/Game.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Game.gd')
-rw-r--r--Game.gd52
1 files changed, 38 insertions, 14 deletions
diff --git a/Game.gd b/Game.gd
index 7a5d0a5..4f2106a 100644
--- a/Game.gd
+++ b/Game.gd
@@ -4,6 +4,7 @@ extends Node
signal mode_changed
signal path_grid_changed
+var debug = false
enum Mode {
DEFAULT,
@@ -16,8 +17,10 @@ var mode: Mode = Mode.DEFAULT :
mode_changed.emit()
-var selected_tower: Tower
-var selected_unit: Mob
+var score: int :
+ set(value):
+ score = value
+ get_tree().current_scene.get_node("%Score").text = str(score)
var path_grid: AStarGrid2D
@@ -26,49 +29,70 @@ var map: TileMapLayer
func initialize_stage(tilemap: TileMapLayer):
map = tilemap
+ var region = map.get_used_rect()
+ #region = region.grow_individual(0, 0, region.size.x, region.size.y)
+
path_grid = AStarGrid2D.new()
- path_grid.region = map.get_used_rect()
- path_grid.cell_size = map.tile_set.tile_size
+ path_grid.region = region
+ path_grid.cell_size = map.tile_set.tile_size #/ 2
+ #path_grid.offset = path_grid.cell_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
- )
- )
+ path_grid.set_point_solid(map.local_to_map(tower.global_position))
+ #var tower_region = tower.get_region().size.snapped(path_grid.cell_size)
+ #path_grid.fill_solid_region(Rect2i(
+ #map.local_to_map(tower.global_position) + Vector2i(-1,-1),
+ #tower_region / path_grid.cell_size
+ #))
func place_tower(tower: Tower, position: Vector2):
var grid_position = map.local_to_map(position)
path_grid.set_point_solid(grid_position, true)
+ #var tower_region = tower.get_region().size.snapped(path_grid.cell_size)
+ #path_grid.fill_solid_region(Rect2i(
+ #map.local_to_map(position),
+ #tower_region / path_grid.cell_size
+ #), true)
tower.global_position = position
get_tree().current_scene.get_node("Towers").add_child(tower)
+ Game.score += 1
+
path_grid_changed.emit()
func remove_tower(tower: Tower):
+ destroy_tower(tower)
+ Game.score -= 1
+
+func destroy_tower(tower: Tower):
var grid_position = map.local_to_map(tower.global_position)
path_grid.set_point_solid(grid_position, false)
+ #var tower_region = tower.get_region().size.snapped(path_grid.cell_size)
+ #path_grid.fill_solid_region(Rect2i(
+ #map.local_to_map(tower.global_position),
+ #tower_region / path_grid.cell_size,
+ #), false)
+
tower.queue_free()
path_grid_changed.emit()
func select_tower(tower: Tower):
- if selected_tower != tower:
- selected_tower = tower
- tower.select()
+ tower.is_selected = true
func deselect_tower():
- if selected_tower:
+ if Tower.selected_tower:
+ Tower.selected_tower.is_selected = false
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.target = spawn.next_node
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))