新增 PlayerExp 控制器方法,用于返回玩家的累计经验值。同时调整了经验池字段类型为 uint32 并修复相关使用逻辑。 feat(pet): 实现宠物经验增加与升级逻辑 在 Player 结构体中新增 AddPetExp 方法,支持宠物经验增长、自动升级及进化判断。升级后会重新计算面板属性并推送更新包。 feat(fight): 重构战斗伤害计算与效果系统 引入 DamageZone 和 EnumDamageType 类型,统一红伤处理流程;移除旧有的 Pet/Skill/Prop 属性获取临时修改机制,改为直接访问真实属性。更新多个技能效果实现以适配新结构。 refactor(effect): 优化技能效果初始化和生命周期方法 统一技能效果初始化方式,明确各阶段回调函数职责,如 PreActionStart、PreAttacked 等。删除已废弃的属性修改钩子函数,并更新状态类效果实现。 refactor(input): 移除 deepcopy 依赖并替换为 go-deepcopy 将原先使用的 mohae/deepcopy 替换为 barkimedes/go-deepcopy,用于战斗节点中的 effect 拷贝逻辑,提升性能和安全性。 refactor(model): 调整玩家信息字段类型 将 PlayerInfo 中的 GoldBean 字段由 int32 改为 uint32,ExpPool 字段由 int64 改为 uint32,确保数据类型一致性与合理性。 feat(nono): 增加 Nono 跟随/收回协议结构定义 新增 NonoFollowOrHomeInInfo 和 NonoFollowOutInfo 结构体,用于处理 Nono 宠物的跟随与收回操作指令。 chore(deps): 添加 go-deepcopy 依赖 在 go.mod 中引入 github.com/barkimedes/go-deepcopy 依赖库,用于替代原有的 deepcopy 工具。
88 lines
2.7 KiB
Go
88 lines
2.7 KiB
Go
package nono
|
||
|
||
import "blazing/logic/service/player"
|
||
|
||
// NonoOutboundInfo 用于表示Nono相关的出站信息
|
||
type NonoOutboundInfo struct {
|
||
// UserID: 米米号,对应uint32类型,无符号
|
||
UserID uint32
|
||
|
||
// Num: 未知,对应uint32类型,无符号
|
||
Num uint32
|
||
|
||
// Flying: 飞行状态 0为不飞行 大于0为飞行模式,对应uint32类型,无符号
|
||
Flying uint32
|
||
|
||
// Nick: 16字节,固定长度16字节字符串
|
||
Nick string `struc:"[16]byte"`
|
||
|
||
// SuperNono: 是不是超能nono,对应uint32类型,无符号
|
||
SuperNono uint32
|
||
|
||
// Color: nono颜色 00 rgb,对应uint32类型,无符号
|
||
Color uint32
|
||
|
||
// Power: 未知, 返回的实际数值要*1000,对应uint32类型,无符号
|
||
Power uint32
|
||
|
||
// Mate: 未知, 返回的实际数值要*1000,对应uint32类型,无符号
|
||
Mate uint32
|
||
|
||
// IQ: 未知,对应uint32类型,无符号
|
||
IQ uint32
|
||
|
||
// AI: 未知,对应uint16类型,无符号短整数
|
||
AI uint16
|
||
|
||
// Birth: 未知, 返回的实际数值要除以1000,对应uint32类型,无符号
|
||
Birth uint32
|
||
|
||
// ChargeTime: 充电时间,对应uint32类型,无符号
|
||
ChargeTime uint32
|
||
|
||
// Func: 20字节,固定长度20字节数组
|
||
Func [20]byte
|
||
|
||
// SuperEnergy: 超能nono能力,对应uint32类型,无符号
|
||
SuperEnergy uint32
|
||
|
||
// SuperLevel: 超能nono等级,对应uint32类型,无符号
|
||
SuperLevel uint32
|
||
|
||
// SuperStage: 超能nono阶段,对应uint32类型,无符号
|
||
SuperStage uint32
|
||
}
|
||
|
||
type NonoInboundInfo struct {
|
||
Head player.TomeeHeader `cmd:"9003" struc:"[0]pad"`
|
||
|
||
// 米米号
|
||
UserID uint32
|
||
}
|
||
type NonoFollowOrHomeInInfo struct {
|
||
Head player.TomeeHeader `cmd:"9019" struc:"[0]pad"`
|
||
|
||
// Flag 1为跟随 0为收回 且如果为收回收回 那么后续结构不需要发送
|
||
// 对应Java的@UInt long类型,在Go中使用uint64
|
||
Flag uint32 `fieldDescription:"1为跟随 0为收回 且如果为收回 那么后续结构不需要发送" uint:"true"`
|
||
}
|
||
type NonoFollowOutInfo struct {
|
||
// UserID 米米号,对应Java的@UInt long,改为uint32
|
||
UserID uint32 `fieldDescription:"米米号" uint:"true"`
|
||
|
||
// SuperStage 设置的值与下面的flag变量相同,改为uint32
|
||
SuperStage uint32 `fieldDescription:"设置的值与下面的flag变量相同" uint:"true"`
|
||
|
||
// Flag 1为跟随 0为收回,不序列化,改为uint32
|
||
Flag uint32 `fieldDescription:"1为跟随 0为收回 且如果为收回 那么后续结构不需要发送, 不序列化" uint:"true" serialize:"false"`
|
||
|
||
// NonoNick nono名字 补到16字节
|
||
NonoNick string `struc:"[16]byte"`
|
||
|
||
// Color nono颜色 rpg,改为uint32
|
||
Color uint32 `fieldDescription:"nono颜色 rpg" uint:"true"`
|
||
|
||
// Power 能量值 前端显示除以1000后的值,改为uint32
|
||
Power uint32 `fieldDescription:"能量值 前端显示除以1000后的值" uint:"true"`
|
||
}
|