the-third-place/scenes/wave.gd

94 lines
2.5 KiB
GDScript

extends Node2D
var wave_count: int = 0
var enemy_count: int = 0
var enemy = null
@export var wave_complete: bool = false
const COLS: int = 5
const ROWS: int = 3
const CHICKEN = preload("res://scenes/enemy_chicken.tscn")
const CRT = preload("res://scenes/enemy_CRT.tscn")
func _ready():
wave_count = 0
EventBus.enemy_died.connect(_on_enemy_died)
func spawn_enemies():
if wave_count == 1: #This is for CHICKENS
print("Enemy Wave: ", wave_count)
enemy = CHICKEN
for x in range(COLS):
for y in range(ROWS):
var e = enemy.instantiate()
var pos = Vector2(x * (28 + 4) + 56, 28 * 2 + y * 38)
add_child(e)
e.start(pos)
enemy_count = ROWS * COLS
await get_tree().process_frame
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
if wave_count == 0: #This is for CRTs
print("Enemy Wave: ", wave_count)
enemy = CRT
var cols_mod = COLS - 1
var rows_mod = ROWS - 1
for x in range(cols_mod):
for y in range(rows_mod):
var pos_mod = int (randf_range(-42,32))
var e = enemy.instantiate()
var pos = Vector2(x * (36 + 12) + 56, 28 * 2 + y * 38)
add_child(e)
e.start(pos + Vector2(pos_mod, y))
enemy_count = rows_mod * cols_mod
await get_tree().process_frame
func _on_enemy_died():
enemy_count -= 1
wave_status()
func update_enemy_aggression(low,high):
var nodes = get_tree().get_nodes_in_group("enemies")
for node in nodes:
if node is Area2D:
node.enemy_move_aggression = randf_range(low,high)
node.enemy_shoot_aggression = randf_range(low,high)
node.tween_speed = min(low,high) - .75
func wave_status():
if enemy_count > 0:
enemy_aggression_check()
wave_complete = false
else:
EventBus.goose_talk.emit(1)
wave_initialize()
wave_complete = true
func wave_initialize():
await get_tree().create_timer(2).timeout
wave_count += 1
spawn_enemies()
func enemy_aggression_check():
if enemy_count == ROWS * COLS / 2:
print_debug("Enemy count is 50%")
update_enemy_aggression(2,10)
EventBus.goose_talk.emit(0)
if enemy_count == ROWS * COLS / 4:
print_debug("Enemy count is 25%")
update_enemy_aggression(1,1)