103 lines
4.3 KiB
Go
103 lines
4.3 KiB
Go
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"`
|
||
}
|