diff --git a/scripts/Contents/Wave.gd b/scripts/Contents/Wave.gd index 22e4b56..97ac842 100644 --- a/scripts/Contents/Wave.gd +++ b/scripts/Contents/Wave.gd @@ -9,20 +9,17 @@ var to: float = 0 var per: int = 0 static var current: int = 0 -# entity, minCount, maxCount, isBoss, from, to, per -static var presetWaves = { - "normal": [ - create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1), - create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 9, INF, 15), - create(preload("res://components/Characters/Bear.tscn"), 0, 0, true, 19, INF, 10), - ], - "testBoss": [ - create(preload("res://components/Characters/Chick.tscn"), 1, 1, true, 0, INF, 1), - create(preload("res://components/Characters/Bear.tscn"), 1, 1, true, 0, INF, 1), - create(preload("res://components/Characters/KukeMC.tscn"), 1, 1, true, 0, INF, 1), - ] -} -static var data = presetWaves["normal"] +static var WAVE_NORMAL = [ + Wave.create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1), + Wave.create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 9, INF, 15), + Wave.create(preload("res://components/Characters/Bear.tscn"), 0, 0, true, 19, INF, 10), +] +static var WAVE_TESTBOSS = [ + # Wave.create(preload("res://components/Characters/Chick.tscn"), 1, 1, true, 0, INF, 1), + Wave.create(preload("res://components/Characters/Bear.tscn"), 1, 1, true, 0, INF, 1), + # Wave.create(preload("res://components/Characters/KukeMC.tscn"), 1, 1, true, 0, INF, 1), +] +static var data = WAVE_TESTBOSS static func create( entity_: PackedScene, diff --git a/scripts/Statemachine/CooldownTimer.gd b/scripts/Statemachine/CooldownTimer.gd index 8138e4d..332bd09 100644 --- a/scripts/Statemachine/CooldownTimer.gd +++ b/scripts/Statemachine/CooldownTimer.gd @@ -3,6 +3,9 @@ class_name CooldownTimer var cooldown: float = 100 var lastStart: int = 0 +func _init(cd: float = 100): + cooldown = cd + func isCooldowned(): return timeSinceLastStart() >= cooldown func start(): diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 707999f..2964cfa 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -48,6 +48,9 @@ var fields = { var attackCooldownMap = { 0: 100 } +var attackCooldowner = { + 0: CooldownTimer.new() +} var inventory = { ItemStore.ItemType.BASEBALL: 500, ItemStore.ItemType.BASKETBALL: 500, @@ -88,7 +91,6 @@ var trailing: bool = false var lastDirection: int = 1 var currentFocusedBoss: EntityBase = null var charginup: bool = false -var cooldownTimer = CooldownTimer.new() var weapons: Array[Weapon] = [] func _ready(): @@ -228,6 +230,10 @@ func tryAttack(type: int, needChargeUp: bool = false): if isPlayer(): state = true else: + var cooldownTimer: CooldownTimer + if !attackCooldowner.has(type): + attackCooldowner[type] = CooldownTimer.new() + cooldownTimer = attackCooldowner[type] cooldownTimer.cooldown = attackCooldownMap.get(type, defaultCooldownUnit) state = cooldownTimer.start() if state: