1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/Wave.gd
T
fallingshrimp 12d2f390b6 fix(DamageLabel): 修复伤害值显示格式从字符串到整数的转换
refactor(Wave): 调整测试BOSS波的敌人生成数量并添加起始波次设置

将DamageLabel中的伤害值显示从字符串格式%s改为整数格式%d,确保数值正确显示。
在Wave中修改测试BOSS波的敌人生成数量从10减少到3,并添加startWith方法设置起始波次。
2025-11-09 10:56:13 +08:00

78 lines
2.2 KiB
GDScript

class_name Wave
var entity: String
var minCount: int = 1
var maxCount: int = 1
var isBoss: bool = false
var from: float = 0
var to: float = 0
var per: int = 0
static var current: int = startWith(1)
static var WAVE_NORMAL = [
Wave.create("Hen", 1, 5, false, 0, INF, 1),
Wave.create("Chick", 0, 0, true, 9, INF, 15),
Wave.create("Bear", 0, 0, true, 19, INF, 10),
Wave.create("KukeMC", 0, 0, true, 14, INF, 20),
]
static var WAVE_TESTBOSS_ALL = [
Wave.create("Chick", 0, 0, true, 0, INF, 3),
Wave.create("KukeMC", 0, 0, true, 1, INF, 3),
Wave.create("Bear", 0, 0, true, 2, INF, 3),
]
static var WAVE_TESTBOSS_KUKE = [
Wave.create("KukeMC", 0, 0, true, 0, INF, 10),
]
static var WAVE_TESTBOSS_BEAR = [
Wave.create("Bear", 0, 0, true, 0, INF, 10),
]
static var WAVE_TESTBOSS_CHICK = [
Wave.create("Chick", 0, 0, true, 0, INF, 10),
]
static var WAVE_EMPTY = []
static var data = WAVE_NORMAL
static func customStart():
if false:
var furryr = EntityBase.generate(ComponentManager.getCharacter("Bear"), MathTool.randv2_range(500), true, false)
var kukemc = EntityBase.generate(ComponentManager.getCharacter("KukeMC"), MathTool.randv2_range(500), true, false)
furryr.currentFocusedBoss = kukemc
kukemc.currentFocusedBoss = furryr
static func create(
entity_: String,
minCount_: int = 1,
maxCount_: int = 1,
isBoss_: bool = false,
from_: float = 0,
to_: float = 0,
per_: int = 0
) -> Wave:
var wave = Wave.new()
wave.entity = entity_
wave.minCount = minCount_
wave.maxCount = maxCount_
wave.isBoss = isBoss_
wave.from = from_
wave.to = to_
wave.per = per_
return wave
static func entityCountOf(wave: Wave) -> int:
if wave.from <= current and wave.to >= current and int(current - wave.from) % wave.per == 0:
if wave.isBoss:
return 1
else:
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
return 0
static func spawn():
for i in range(len(data)):
var wave = data[i]
for j in range(entityCountOf(wave)):
EntityBase.generate(ComponentManager.getCharacter(wave.entity), MathTool.randv2_range(500), true, wave.isBoss)
static func next():
if current == 0:
customStart()
spawn()
current += 1
static func startWith(wave: int):
return wave - 1