1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-31 00:11:54 +08:00

feat(游戏模式): 添加游戏模式选择功能并优化UI状态管理

实现游戏模式选择功能,包括无尽波次、Boss Rush和割草模式
添加游戏模式与波次数据的映射关系
优化UI状态管理,新增selectingFeed状态控制UI元素显示
重构Starter面板布局,添加游戏模式选项
为EnergyBlock添加掉落物品配置
This commit is contained in:
2026-05-03 16:03:02 +08:00
parent be151c5317
commit 2a602b0be2
10 changed files with 119 additions and 71 deletions
+12 -21
View File
@@ -22,6 +22,8 @@ func duplicate() -> Wave:
wave.per = per
return wave
static var GAME_BOSSES = ["Chick", "Deepsea", "KukeMC", "CyberCat", "Kernyr", "EnergyBlock", "Bear"]
static var WAVE_NORMAL = [
Wave.create("Hen", 1, 3, false, 2, INF, 1),
Wave.create("Cat", 1, 5, false, 0, INF, 1),
@@ -31,19 +33,7 @@ static var WAVE_NORMAL = [
Wave.create("KukeMC", 0, 0, true, 19, INF, 20),
Wave.create("Bear", 0, 0, true, 29, INF, 23),
]
static var WAVE_TESTBOSS = [
Wave.create("Deepsea", 0, 0, true, 0, INF, 6),
Wave.create("Kernyr", 0, 0, true, 1, INF, 6),
Wave.create("CyberCat", 0, 0, true, 2, INF, 6),
Wave.create("Chick", 0, 0, true, 3, INF, 6),
Wave.create("KukeMC", 0, 0, true, 4, INF, 6),
Wave.create("Bear", 0, 0, true, 5, INF, 6),
]
static var WAVE_JUSTJOKE = [
Wave.create("Kernyr", 0, 0, true, 0, INF, 1),
Wave.create("CyberCat", 0, 0, true, 0, INF, 1),
Wave.create("Deepsea", 0, 0, true, 0, INF, 1)
]
static var WAVE_BOSSRUSH = ArrayTool.betterMap(GAME_BOSSES, func(x: String, i: int, _arr: Array): return Wave.create(x, 0, 0, true, i, INF, len(GAME_BOSSES)))
static var WAVE_MOWING = [
Wave.create("Hen", 15, 30, false, 0, INF, 1),
Wave.create("Cat", 15, 30, false, 0, INF, 1),
@@ -51,16 +41,17 @@ static var WAVE_MOWING = [
Wave.create("MTY", 0, 2, false, 0, INF, 1),
Wave.create("EnergyBlock", 0, 1, true, 0, INF, 1),
]
static var WAVE_TESTMOB = [
Wave.create("EnergyBlock", 1, 1, true, 0, INF, 1),
# Wave.create("MTY", 1, 1, false, 0, INF, 1),
static var WAVE_TESTBOSS = [
Wave.create("EnergyBlock", 0, 0, true, 0, INF, 1),
]
static var WAVE_TESTMOB = []
static var WAVE_EMPTY = []
static var waveReleaseConfig = [WAVE_TESTBOSS, 1]
static var waveDebugConfig = [WAVE_TESTMOB, 1]
static var current: int = startWith(waveReleaseConfig[1]) if WorldManager.isRelease() else startWith(waveDebugConfig[1])
static var data = waveReleaseConfig[0] if WorldManager.isRelease() else waveDebugConfig[0]
static var usingWaveData = waveReleaseConfig[0] if WorldManager.isRelease() else waveDebugConfig[0]
static func create(
entity_: String,
@@ -81,7 +72,7 @@ static func create(
wave.per = per_
return wave
static func hasBoss() -> bool:
for wave in data:
for wave in usingWaveData:
if canSpawn(wave):
if wave.isBoss:
return true
@@ -98,7 +89,7 @@ static func entityCountOf(wave: Wave) -> int:
static func getNextBossInfo() -> Array:
var nextBossName = ""
var minWavesLeft = INF
for wave in data:
for wave in usingWaveData:
if wave.isBoss:
var wavesLeft = wave.from - current
if wavesLeft > 0 and wavesLeft < minWavesLeft:
@@ -109,8 +100,8 @@ static func getNextBossInfo() -> Array:
return []
static func spawn(center: Vector2) -> Array:
var result: Array = []
for i in range(len(data)):
var wave: Wave = data[i]
for i in range(len(usingWaveData)):
var wave: Wave = usingWaveData[i]
for j in range(entityCountOf(wave)):
var currentWave = wave.duplicate()
currentWave.entityPosition = MathTool.sampleInRing(400, 800) + center