mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-07-02 08:12:12 +08:00
refactor(Statemachine): 优化冷却计时器及攻击冷却管理
重构CooldownTimer类,添加初始化方法支持自定义冷却时间 将EntityBase中的单一冷却计时器改为基于攻击类型的映射管理 简化Wave类中的预设波次数据结构,移除未使用的测试波次
This commit is contained in:
+11
-14
@@ -9,20 +9,17 @@ var to: float = 0
|
|||||||
var per: int = 0
|
var per: int = 0
|
||||||
|
|
||||||
static var current: int = 0
|
static var current: int = 0
|
||||||
# entity, minCount, maxCount, isBoss, from, to, per
|
static var WAVE_NORMAL = [
|
||||||
static var presetWaves = {
|
Wave.create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1),
|
||||||
"normal": [
|
Wave.create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 9, INF, 15),
|
||||||
create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1),
|
Wave.create(preload("res://components/Characters/Bear.tscn"), 0, 0, true, 19, INF, 10),
|
||||||
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),
|
static var WAVE_TESTBOSS = [
|
||||||
],
|
# Wave.create(preload("res://components/Characters/Chick.tscn"), 1, 1, true, 0, INF, 1),
|
||||||
"testBoss": [
|
Wave.create(preload("res://components/Characters/Bear.tscn"), 1, 1, true, 0, INF, 1),
|
||||||
create(preload("res://components/Characters/Chick.tscn"), 1, 1, true, 0, INF, 1),
|
# Wave.create(preload("res://components/Characters/KukeMC.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 = WAVE_TESTBOSS
|
||||||
]
|
|
||||||
}
|
|
||||||
static var data = presetWaves["normal"]
|
|
||||||
|
|
||||||
static func create(
|
static func create(
|
||||||
entity_: PackedScene,
|
entity_: PackedScene,
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ class_name CooldownTimer
|
|||||||
var cooldown: float = 100
|
var cooldown: float = 100
|
||||||
var lastStart: int = 0
|
var lastStart: int = 0
|
||||||
|
|
||||||
|
func _init(cd: float = 100):
|
||||||
|
cooldown = cd
|
||||||
|
|
||||||
func isCooldowned():
|
func isCooldowned():
|
||||||
return timeSinceLastStart() >= cooldown
|
return timeSinceLastStart() >= cooldown
|
||||||
func start():
|
func start():
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ var fields = {
|
|||||||
var attackCooldownMap = {
|
var attackCooldownMap = {
|
||||||
0: 100
|
0: 100
|
||||||
}
|
}
|
||||||
|
var attackCooldowner = {
|
||||||
|
0: CooldownTimer.new()
|
||||||
|
}
|
||||||
var inventory = {
|
var inventory = {
|
||||||
ItemStore.ItemType.BASEBALL: 500,
|
ItemStore.ItemType.BASEBALL: 500,
|
||||||
ItemStore.ItemType.BASKETBALL: 500,
|
ItemStore.ItemType.BASKETBALL: 500,
|
||||||
@@ -88,7 +91,6 @@ var trailing: bool = false
|
|||||||
var lastDirection: int = 1
|
var lastDirection: int = 1
|
||||||
var currentFocusedBoss: EntityBase = null
|
var currentFocusedBoss: EntityBase = null
|
||||||
var charginup: bool = false
|
var charginup: bool = false
|
||||||
var cooldownTimer = CooldownTimer.new()
|
|
||||||
var weapons: Array[Weapon] = []
|
var weapons: Array[Weapon] = []
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
@@ -228,6 +230,10 @@ func tryAttack(type: int, needChargeUp: bool = false):
|
|||||||
if isPlayer():
|
if isPlayer():
|
||||||
state = true
|
state = true
|
||||||
else:
|
else:
|
||||||
|
var cooldownTimer: CooldownTimer
|
||||||
|
if !attackCooldowner.has(type):
|
||||||
|
attackCooldowner[type] = CooldownTimer.new()
|
||||||
|
cooldownTimer = attackCooldowner[type]
|
||||||
cooldownTimer.cooldown = attackCooldownMap.get(type, defaultCooldownUnit)
|
cooldownTimer.cooldown = attackCooldownMap.get(type, defaultCooldownUnit)
|
||||||
state = cooldownTimer.start()
|
state = cooldownTimer.start()
|
||||||
if state:
|
if state:
|
||||||
|
|||||||
Reference in New Issue
Block a user