From a33f108f988f6256750a8a3834a4b77e2b0fd4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Tue, 16 Sep 2025 23:58:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor(fight):=20=E9=87=8D=E6=9E=84=E6=88=98?= =?UTF-8?q?=E6=96=97=E6=A8=A1=E5=9D=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 BattleAction.Compare 方法,使其成为 FightC 类的成员方法 - 移除未使用的 action.go 文件 - 在 BattlePetEntity 中添加 Input 字段,用于处理战斗输入 - 为 Compare 方法添加 TODO 注释,提示后续需完成的速度计算逻辑 --- logic/service/fight/BattleAction.go | 8 ++++++-- logic/service/fight/fightc.go | 2 +- logic/service/fight/info/BattlePetEntity.go | 2 ++ logic/service/fight/{action.go => playeraction.go} | 0 4 files changed, 9 insertions(+), 3 deletions(-) rename logic/service/fight/{action.go => playeraction.go} (100%) diff --git a/logic/service/fight/BattleAction.go b/logic/service/fight/BattleAction.go index 0ecde835..bcfa3425 100644 --- a/logic/service/fight/BattleAction.go +++ b/logic/service/fight/BattleAction.go @@ -23,7 +23,7 @@ var PlayerOperations = enum.New[struct { }]() // Compare 比较两个1v1战斗动作的执行优先级(核心逻辑) -func Compare(a, b BattleActionI) (BattleActionI, BattleActionI) { +func (f *FightC) Compare(a, b BattleActionI) (BattleActionI, BattleActionI) { // 动作本身的优先级比较 p1 := b.Priority() - a.Priority() if p1 > 0 { // 对手优先级更高 @@ -52,7 +52,11 @@ func Compare(a, b BattleActionI) (BattleActionI, BattleActionI) { } // 比较宠物相关属性(假设Value(4)返回速度相关值) - p2 = int(bskill.PetInfo.Speed()) - int(askill.PetInfo.Speed()) + p2s := bskill.PetInfo.Info.Speed + //todo 待计算速度 + f.Opp.Exec(fn func(input.Effect) bool) + p1s := askill.PetInfo.Info.Speed + p2 = int(bskill.PetInfo.Info.Speed) - int(askill.PetInfo.Speed()) if p2 > 0 { return b, a } else if p2 < 0 { diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 8310a789..bd3d0d97 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -288,7 +288,7 @@ func (f *FightC) battleLoop() { fmt.Println("开始结算回合") var BattleActionI [2]BattleActionI - BattleActionI[0], BattleActionI[1] = Compare(p1Action, p2Action) + BattleActionI[0], BattleActionI[1] = f.Compare(p1Action, p2Action) switch faction := BattleActionI[0].(type) { case *EscapeAction: //优先逃跑 diff --git a/logic/service/fight/info/BattlePetEntity.go b/logic/service/fight/info/BattlePetEntity.go index b6accbd1..1dbe16e3 100644 --- a/logic/service/fight/info/BattlePetEntity.go +++ b/logic/service/fight/info/BattlePetEntity.go @@ -3,6 +3,7 @@ package info import ( element "blazing/common/data/Element" "blazing/common/data/xmlres" + "blazing/logic/service/fight/input" "blazing/modules/blazing/model" "fmt" "math/rand" @@ -108,6 +109,7 @@ func abs(x int8) int8 { type BattlePetEntity struct { xmlres.PetInfo Info *model.PetInfo //通过偏移赋值 + *input.Input statusConditions sync.Map // key: StatusCondition, value: int (剩余回合) Skills [4]*SkillEntity // 技能槽(最多4个技能) diff --git a/logic/service/fight/action.go b/logic/service/fight/playeraction.go similarity index 100% rename from logic/service/fight/action.go rename to logic/service/fight/playeraction.go