mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-08 12:47:13 +08:00
feat(战斗系统): 改进敌人生成逻辑以围绕玩家位置生成
修改Wave.spawn方法以接受中心点参数,使敌人生成位置围绕玩家 在Starter和MakeFeed面板中调用spawnWave时计算玩家中心位置 重构EntityBase添加getPlayers方法获取所有玩家实体 重命名WorldManager.nextWave为doNextWave以更清晰表达意图
This commit is contained in:
@@ -50,7 +50,11 @@ func updateValue():
|
||||
countLabel.text = str(UIState.player.fields[FieldStore.Entity.FEED_COUNT_CAN_MADE] - selectedCount)
|
||||
needBB.count = refreshNeedBaseballCount
|
||||
func finish():
|
||||
WorldManager.rootNode.spawnWave()
|
||||
var center = Vector2.ZERO
|
||||
for player in EntityBase.getPlayers():
|
||||
center += player.position
|
||||
center /= len(EntityBase.getPlayers())
|
||||
WorldManager.rootNode.spawnWave(center)
|
||||
UIState.closeCurrentPanel()
|
||||
func regenerateCards():
|
||||
updateValue()
|
||||
|
||||
@@ -64,7 +64,7 @@ func startSingleplayerGame():
|
||||
MultiplayerState.isMultiplayer = false
|
||||
MultiplayerState.playerName = playerNameInput.text
|
||||
EntityBase.generatePlayer(playerNameInput.text)
|
||||
WorldManager.rootNode.spawnWave()
|
||||
WorldManager.rootNode.spawnWave(Vector2.ZERO)
|
||||
UIState.closeCurrentPanel()
|
||||
|
||||
func _ready():
|
||||
|
||||
@@ -82,13 +82,13 @@ static func entityCountOf(wave: Wave) -> int:
|
||||
elif !hasBoss():
|
||||
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
|
||||
return 0
|
||||
static func spawn() -> Array:
|
||||
static func spawn(center: Vector2) -> Array:
|
||||
var result: Array = []
|
||||
for i in range(len(data)):
|
||||
var wave: Wave = data[i]
|
||||
for j in range(entityCountOf(wave)):
|
||||
var currentWave = wave.duplicate()
|
||||
currentWave.entityPosition = MathTool.randv2_range(500)
|
||||
currentWave.entityPosition = MathTool.randv2_range(500) + center
|
||||
result.append(currentWave)
|
||||
return result
|
||||
static func next(waves: Array):
|
||||
|
||||
Reference in New Issue
Block a user