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

115 lines
4.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 当前回合数。
Round uint32 `json:"round"`
// Weather 当前天气或场地编号;当前主链路未填充时可为 0。
Weather uint32 `json:"weather,omitempty"`
// WinnerID 当前已确定的胜者 ID未结束时通常为 0。
WinnerID uint32 `json:"winnerId,omitempty"`
// Reason 当前已确定的结束原因;未结束时通常为 0。
Reason model.EnumBattleOverReason `json:"reason,omitempty"`
// LegacyCmd 对应旧协议命令号,便于新旧包对照和过渡期调试。
LegacyCmd uint32 `json:"legacyCmd,omitempty"`
}
// FightSkillHurtState 保存技能结算阶段的详细战报。
type FightSkillHurtState struct {
// Left 我方阵营本次技能结算后的攻击值快照列表。
Left []model.AttackValue `json:"left,omitempty"`
// Right 敌方阵营本次技能结算后的攻击值快照列表。
Right []model.AttackValue `json:"right,omitempty"`
}
// FightLoadState 保存加载进度信息。
type FightLoadState struct {
// UserID 当前上报加载进度的玩家 ID。
UserID uint32 `json:"userId"`
// Percent 当前加载百分比。
Percent uint32 `json:"percent"`
}
// FightChatState 保存战斗内聊天信息。
type FightChatState struct {
// SenderID 发言玩家 ID。
SenderID uint32 `json:"senderId"`
// SenderNickname 发言玩家昵称。
SenderNickname string `json:"senderNickname"`
// Message 聊天内容。
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"`
}