package pet import ( "blazing/common/core/info/pet/skill" "time" ) // PetInfo 精灵信息结构体 type PetInfo struct { ID uint32 // 精灵编号 Name string `serialize:"fixed:16"` // 定长模式:16字节 // 名字 默认为全0 但要补齐到16字节 DV uint32 // 个体值 Nature uint32 // 性格 Level uint32 // 等级 Exp uint32 // 当前等级已经获得的经验 LvExp uint32 // 当前等级所需的经验 NextLvExp uint32 // 升到下一级的经验 HP uint32 // 当前生命 MaxHP uint32 // 最大生命 Attack uint32 // 攻击 Defence uint32 // 防御 SpecialAttack uint32 // 特攻 SpecialDefence uint32 // 特防 Speed uint32 // 速度 EVHP uint32 // 生命学习力 EVAttack uint32 // 攻击学习力 EVDefence uint32 // 防御学习力 EVSpecialAttack uint32 // 特攻学习力 EVSpecialDefense uint32 // 特防学习力 EVSpeed uint32 // 速度学习力 SkillSize uint32 // 技能个数 SkillList [4]skill.SkillInfo `serialize:"fixed:8"` // 32字节 技能信息 必须插入4条skillInfo,若技能信息为空则要赋值成0 CatchTime uint32 // 捕捉时间 CatchMap uint32 // 捕捉地图 CatchRect uint32 // 未知默认为0 CatchLevel uint32 // 捕获等级 默认为0 EffectInfo []PetEffectInfo `serialize:"varlen:2"` // 特性列表, 长度在头部以UShort存储 SkinID uint32 // 皮肤id默认为0 Shiny uint32 // 是不是闪 } // NewPetInfo 创建一个新的精灵信息实例 func NewPetInfo() *PetInfo { return &PetInfo{ Name: "", SkillList: [4]skill.SkillInfo{}, EffectInfo: make([]PetEffectInfo, 0), } } // GetCatchTimeAsTime 将捕捉时间转换为time.Time类型 func (p *PetInfo) GetCatchTimeAsTime() time.Time { return time.Unix(int64(p.CatchTime), 0) }