refactor: 重构战斗系统为统一动作包结构
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
79
logic/controller/fight_unified.go
Normal file
79
logic/controller/fight_unified.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/modules/player/model"
|
||||
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
// dispatchFightActionEnvelope 把控制器层收到的统一动作结构分发回现有 FightI 接口。
|
||||
func (h Controller) dispatchFightActionEnvelope(c *player.Player, envelope fight.FightActionEnvelope) {
|
||||
if c == nil || c.FightC == nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch envelope.ActionType {
|
||||
case fight.FightActionTypeSkill:
|
||||
go c.FightC.UseSkillAt(c, envelope.SkillID, envelope.ActorIndex, envelope.EncodedTargetIndex())
|
||||
case fight.FightActionTypeItem:
|
||||
go c.FightC.UseItemAt(c, envelope.CatchTime, envelope.ItemID, envelope.ActorIndex, envelope.EncodedTargetIndex())
|
||||
case fight.FightActionTypeChange:
|
||||
go c.FightC.ChangePetAt(c, envelope.CatchTime, envelope.ActorIndex)
|
||||
case fight.FightActionTypeEscape:
|
||||
go c.FightC.Over(c, model.BattleOverReason.PlayerEscape)
|
||||
case fight.FightActionTypeChat:
|
||||
go c.FightC.Chat(c, envelope.Chat)
|
||||
}
|
||||
}
|
||||
|
||||
// buildLegacyUseSkillEnvelope 把旧 2405 技能包映射成统一动作结构。
|
||||
func buildLegacyUseSkillEnvelope(data *UseSkillInInfo) fight.FightActionEnvelope {
|
||||
if data == nil {
|
||||
return fight.NewSkillActionEnvelope(0, 0, 0, fight.SkillTargetOpponent, 0)
|
||||
}
|
||||
return fight.NewSkillActionEnvelope(data.SkillId, 0, 0, fight.SkillTargetOpponent, 0)
|
||||
}
|
||||
|
||||
// buildIndexedUseSkillEnvelope 把 7505 多战位技能包映射成统一动作结构。
|
||||
func buildIndexedUseSkillEnvelope(data *UseSkillAtInboundInfo) fight.FightActionEnvelope {
|
||||
if data == nil {
|
||||
return fight.NewSkillActionEnvelope(0, 0, 0, fight.SkillTargetOpponent, 0)
|
||||
}
|
||||
return fight.NewSkillActionEnvelope(
|
||||
data.SkillId,
|
||||
int(data.ActorIndex),
|
||||
int(data.TargetIndex),
|
||||
data.TargetRelation,
|
||||
data.AtkType,
|
||||
)
|
||||
}
|
||||
|
||||
// buildLegacyUseItemEnvelope 把旧 2406 道具包映射成统一动作结构。
|
||||
func buildLegacyUseItemEnvelope(data *UsePetItemInboundInfo) fight.FightActionEnvelope {
|
||||
if data == nil {
|
||||
return fight.NewItemActionEnvelope(0, 0, 0, 0, fight.SkillTargetOpponent)
|
||||
}
|
||||
return fight.NewItemActionEnvelope(data.CatchTime, data.ItemId, 0, 0, fight.SkillTargetOpponent)
|
||||
}
|
||||
|
||||
// buildLegacyChangeEnvelope 把旧 2407 切宠包映射成统一动作结构。
|
||||
func buildLegacyChangeEnvelope(data *ChangePetInboundInfo) fight.FightActionEnvelope {
|
||||
if data == nil {
|
||||
return fight.NewChangeActionEnvelope(0, 0)
|
||||
}
|
||||
return fight.NewChangeActionEnvelope(data.CatchTime, 0)
|
||||
}
|
||||
|
||||
// buildLegacyEscapeEnvelope 构造旧 2410 逃跑包对应的统一动作结构。
|
||||
func buildLegacyEscapeEnvelope() fight.FightActionEnvelope {
|
||||
return fight.NewEscapeActionEnvelope()
|
||||
}
|
||||
|
||||
// buildChatEnvelope 把战斗聊天包映射成统一动作结构。
|
||||
func buildChatEnvelope(data *ChatInfo) fight.FightActionEnvelope {
|
||||
if data == nil {
|
||||
return fight.NewChatActionEnvelope("")
|
||||
}
|
||||
return fight.NewChatActionEnvelope(data.Message)
|
||||
}
|
||||
Reference in New Issue
Block a user