Files
bl/logic/service/fight/info/unified_info.go

103 lines
4.3 KiB
Go
Raw Normal View History

package info
import "blazing/modules/player/model"
// FightStatePhase 表示统一战斗状态包的阶段。
type FightStatePhase string
const (
// FightStatePhaseStart 表示开战快照。
FightStatePhaseStart FightStatePhase = "start"
// FightStatePhaseSkillHurt 表示技能结算后的伤害快照。
FightStatePhaseSkillHurt FightStatePhase = "skill_hurt"
// FightStatePhaseChange 表示切宠快照。
FightStatePhaseChange FightStatePhase = "change"
// FightStatePhaseOver 表示战斗结束快照。
FightStatePhaseOver FightStatePhase = "over"
// FightStatePhaseLoad 表示加载进度快照。
FightStatePhaseLoad FightStatePhase = "load"
// FightStatePhaseChat 表示战斗内聊天快照。
FightStatePhaseChat FightStatePhase = "chat"
)
// FighterState 是统一的战位快照。
// position 表示该 side 下的槽位编号actorIndex/targetIndex 与其一一对应。
type FighterState struct {
// Side 阵营标识1=我方2=敌方。
Side int `json:"side"`
// Position 战位下标;在各自 side 内部从 0 开始编号。
Position int `json:"position"`
// UserID 当前战位所属玩家 ID野怪/NPC 通常为 0。
UserID uint32 `json:"userId"`
// ControllerUserID 当前上场精灵的实际操作者 ID组队时可与 UserID 联合定位操作者和战位归属。
ControllerUserID uint32 `json:"controllerUserId"`
// PetID 当前上场精灵的物种/配置 ID。
PetID uint32 `json:"petId"`
// CatchTime 当前上场精灵的唯一实例 ID可理解为这只精灵在玩家背包中的唯一标识。
CatchTime uint32 `json:"catchTime"`
// Name 当前上场精灵名字。
Name string `json:"name,omitempty"`
// HP 当前生命值。
HP uint32 `json:"hp"`
// MaxHP 最大生命值。
MaxHP uint32 `json:"maxHp"`
// Level 当前等级。
Level uint32 `json:"level"`
// Anger 怒气值;当前服务端主链路暂未实际填充时默认为 0先为协议对齐预留。
Anger uint32 `json:"anger"`
// Status 当前异常/增益状态回合数组;下标语义沿用现有战斗状态定义。
Status [20]int8 `json:"status"`
// Prop 当前能力等级变化数组:攻击、防御、特攻、特防、速度、命中。
Prop [6]int8 `json:"prop"`
// Skills 当前可见技能列表,包含技能 ID 和当前 PP 等信息。
Skills []model.SkillInfo `json:"skills,omitempty"`
}
// FightStateMeta 是统一状态包的公共元数据。
type FightStateMeta struct {
Round uint32 `json:"round"`
Weather uint32 `json:"weather,omitempty"`
WinnerID uint32 `json:"winnerId,omitempty"`
Reason model.EnumBattleOverReason `json:"reason,omitempty"`
LegacyCmd uint32 `json:"legacyCmd,omitempty"`
}
// FightSkillHurtState 保存技能结算后的左右两侧战报快照。
type FightSkillHurtState struct {
Left []model.AttackValue `json:"left,omitempty"`
Right []model.AttackValue `json:"right,omitempty"`
}
// FightLoadState 保存加载进度信息。
type FightLoadState struct {
UserID uint32 `json:"userId"`
Percent uint32 `json:"percent"`
}
// FightChatState 保存战斗内聊天信息。
type FightChatState struct {
SenderID uint32 `json:"senderId"`
SenderNickname string `json:"senderNickname"`
Message string `json:"message"`
}
// FightStateEnvelope 是统一出站状态结构。
type FightStateEnvelope struct {
// Phase 当前下发阶段,例如 start、skill_hurt、change、over、load、chat。
Phase FightStatePhase `json:"phase"`
// Left 我方阵营当前所有战位快照。
Left []FighterState `json:"left,omitempty"`
// Right 敌方阵营当前所有战位快照。
Right []FighterState `json:"right,omitempty"`
// Meta 当前阶段共用的元数据,如回合号、胜方、结束原因、旧协议命令号。
Meta FightStateMeta `json:"meta"`
// SkillHurt 技能结算阶段附带的详细战报;仅 phase=skill_hurt 时使用。
SkillHurt *FightSkillHurtState `json:"skillHurt,omitempty"`
// Change 切宠阶段附带的切宠详情;仅 phase=change 时使用。
Change *ChangePetInfo `json:"change,omitempty"`
// Load 加载阶段附带的进度信息;仅 phase=load 时使用。
Load *FightLoadState `json:"load,omitempty"`
// Chat 聊天阶段附带的聊天内容;仅 phase=chat 时使用。
Chat *FightChatState `json:"chat,omitempty"`
}