diff options
Diffstat (limited to 'Game.gd')
-rw-r--r-- | Game.gd | 52 |
1 files changed, 38 insertions, 14 deletions
@@ -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)) |