- 移除 BattleStateMachine 和 BattleUnit 相关代码 - 新增 BattleContainer 和 DamageContext 结构体 - 重构伤害计算逻辑,使用高精度 decimal 进行计算 - 更新随机数生成器,支持基于用户和时间的种子生成 - 优化战斗信息结构,增加 OwnerID 字段
62 lines
2.7 KiB
Go
62 lines
2.7 KiB
Go
package info
|
||
|
||
import (
|
||
"blazing/modules/blazing/model"
|
||
)
|
||
|
||
// NoteReadyToFightInfo 战斗准备就绪消息结构体,对应Java的NoteReadyToFightInfo
|
||
type NoteReadyToFightInfo struct {
|
||
//战斗发起者ID
|
||
OwnerID uint32 `struc:"skip"`
|
||
// 战斗类型ID(与野怪战斗为3,与人战斗为1,前端似乎未使用)
|
||
// 对应Java的@UInt long
|
||
FightId uint32 `fieldDesc:"战斗类型ID 但前端好像没有用到 与野怪战斗为3,与人战斗似乎是1" `
|
||
|
||
// 我方信息
|
||
OurInfo FightUserInfo `fieldDesc:"我方信息" serialize:"struct"`
|
||
OurPetListLen uint32 `struc:"sizeof=OurPetList"`
|
||
// 我方携带精灵的信息
|
||
// 对应Java的ArrayList<ReadyFightPetInfo>,使用切片模拟动态列表
|
||
OurPetList []ReadyFightPetInfo `fieldDesc:"我方携带精灵的信息" serialize:"lengthFirst,lengthType=uint16,type=structArray"`
|
||
|
||
// 对方信息
|
||
OpponentInfo FightUserInfo `fieldDesc:"对方信息" serialize:"struct"`
|
||
OpponentPetListLen uint32 `struc:"sizeof=OpponentPetList"`
|
||
// 敌方的精灵信息
|
||
// 野怪战斗时:客户端接收此包前已生成精灵PetInfo,将部分信息写入该列表
|
||
OpponentPetList []ReadyFightPetInfo `fieldDesc:"敌方的精灵信息 如果是野怪 那么再给客户端发送这个包体时就提前生成好了这只精灵的PetInfo,然后把从PetInfo中把部分信息写入到这个敌方的精灵信息中再发送这个包结构体" serialize:"lengthFirst,lengthType=uint16,type=structArray"`
|
||
}
|
||
|
||
// ReadyFightPetInfo 准备战斗的精灵信息结构体,对应Java的ReadyFightPetInfo类
|
||
type ReadyFightPetInfo struct {
|
||
// 精灵ID,对应Java的@UInt long
|
||
ID uint32 `fieldDesc:"精灵ID" `
|
||
|
||
// 精灵等级,对应Java的@UInt long
|
||
Level uint32 `fieldDesc:"精灵等级" `
|
||
|
||
// 精灵当前HP,对应Java的@UInt long
|
||
Hp uint32 `fieldDesc:"精灵HP" `
|
||
|
||
// 精灵最大HP,对应Java的@UInt long
|
||
MaxHp uint32 `fieldDesc:"最大HP" `
|
||
SkillListLen uint32
|
||
// 技能信息列表(固定4个元素,技能ID和剩余PP,无技能则为0)
|
||
// 对应Java的List<SkillInfo>,初始化容量为4
|
||
SkillList [4]model.SkillInfo `fieldDesc:"技能信息 技能ID跟剩余PP 固定32字节 没有给0" serialize:"fixedLength=4,type=structArray"`
|
||
|
||
// 精灵捕获时间,对应Java的@UInt long
|
||
CatchTime uint32 `fieldDesc:"精灵捕获时间" `
|
||
|
||
// 捕捉地图(固定给0),对应Java的@UInt long
|
||
CatchMap uint32 `fieldDesc:"捕捉地图 给0" `
|
||
|
||
// 固定给0,对应Java的@UInt long
|
||
CatchRect uint32 `fieldDesc:"给0" `
|
||
|
||
// 固定给0,对应Java的@UInt long
|
||
CatchLevel uint32 `fieldDesc:"给0" `
|
||
SkinID uint32 `fieldDesc:"精灵皮肤ID" `
|
||
Shiny uint32 `fieldDesc:"精灵是否闪" `
|
||
}
|