```
feat(fight): 实现主动切换宠物逻辑并优化相关结构体字段 - 在 `ActiveSwitchAction` 中新增 `Cid` 字段用于标识要切换的宠物 ID - 调整 `ChangePet` 方法逻辑,移除旧有输入处理,改为在 loop 中统一处理 - 更新 `collectPlayerActions` 方法以正确设置当前宠物及发送指令 - 优化 `PetInfo` 结构体字段标签,去除冗余描述,并重命名部分字段提升可读性 - 增加 `ExtSkin` 字段支持记录可用皮肤信息 - 移除玩家信息中的 `LastResetTime` 注释字段 ```
This commit is contained in:
@@ -62,13 +62,9 @@ func (f *FightC) ChangePet(c common.PlayerI, id uint32) {
|
|||||||
//todo 待实现无法切精灵的情况
|
//todo 待实现无法切精灵的情况
|
||||||
ret := &action.ActiveSwitchAction{
|
ret := &action.ActiveSwitchAction{
|
||||||
BaseAction: action.NewBaseAction(c.GetInfo().UserID),
|
BaseAction: action.NewBaseAction(c.GetInfo().UserID),
|
||||||
|
Cid: id,
|
||||||
}
|
}
|
||||||
|
|
||||||
selfinput := f.GetInputByPlayer(c, false)
|
|
||||||
|
|
||||||
selfinput.CurrentPet, ret.Reason = selfinput.GetPet(id)
|
|
||||||
c.SendPackCmd(2407, &ret.Reason)
|
|
||||||
|
|
||||||
f.actionChan <- ret
|
f.actionChan <- ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ func (a *BaseAction) GetPlayerID() uint32 {
|
|||||||
// ActiveSwitchAction 主动切换宠物的战斗动作
|
// ActiveSwitchAction 主动切换宠物的战斗动作
|
||||||
type ActiveSwitchAction struct {
|
type ActiveSwitchAction struct {
|
||||||
BaseAction
|
BaseAction
|
||||||
|
Cid uint32
|
||||||
|
|
||||||
Reason info.ChangePetInfo
|
Reason info.ChangePetInfo
|
||||||
// CurrentPet BattlePetEntity // 当前在场宠物
|
// CurrentPet BattlePetEntity // 当前在场宠物
|
||||||
|
|||||||
@@ -151,6 +151,8 @@ func (f *FightC) collectPlayerActions(ourID, oppID uint32) map[uint32]action.Bat
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selfinput.CurrentPet, ret.Reason = selfinput.GetPet(ret.Cid)
|
||||||
|
selfinput.Player.SendPackCmd(2407, &ret.Reason)
|
||||||
InitAttackValue := *selfinput.AttackValue
|
InitAttackValue := *selfinput.AttackValue
|
||||||
oldpet := selfinput.CurrentPet
|
oldpet := selfinput.CurrentPet
|
||||||
f.Switch[selfinput.UserID] = ret
|
f.Switch[selfinput.UserID] = ret
|
||||||
|
|||||||
@@ -64,16 +64,16 @@ type PetInfo struct {
|
|||||||
Level uint32 `fieldDesc:"等级" `
|
Level uint32 `fieldDesc:"等级" `
|
||||||
|
|
||||||
// 当前等级已获得经验(@UInt long → uint32)
|
// 当前等级已获得经验(@UInt long → uint32)
|
||||||
Exp uint32 `fieldDesc:"当前等级已经获得的经验 2538" `
|
Exp uint32
|
||||||
|
|
||||||
// 当前等级所需经验(@UInt long → uint32)
|
// 当前等级所需经验(@UInt long → uint32)
|
||||||
LvExp uint32 `fieldDesc:"当前等级所需的经验" `
|
LvExp uint32
|
||||||
|
|
||||||
// 升到下一级的经验(@UInt long → uint32)
|
// 升到下一级的经验(@UInt long → uint32)
|
||||||
NextLvExp uint32 `fieldDesc:"升到下一级的经验" `
|
NextLvExp uint32
|
||||||
|
|
||||||
// 当前生命(@UInt long → uint32)
|
// 当前生命(@UInt long → uint32)
|
||||||
Hp uint32 `fieldDesc:"当前生命" `
|
Hp uint32
|
||||||
|
|
||||||
// 最大生命(@UInt long → uint32)
|
// 最大生命(@UInt long → uint32)
|
||||||
MaxHp uint32 `fieldDesc:"最大生命" `
|
MaxHp uint32 `fieldDesc:"最大生命" `
|
||||||
@@ -108,12 +108,12 @@ type PetInfo struct {
|
|||||||
SkinID uint32 `fieldDesc:"皮肤id默认为0" `
|
SkinID uint32 `fieldDesc:"皮肤id默认为0" `
|
||||||
|
|
||||||
// 是否闪光(@UInt long → uint32,0=否,1=是)
|
// 是否闪光(@UInt long → uint32,0=否,1=是)
|
||||||
ShinyLen uint32 `struc:"sizeof=Shiny"`
|
ShinyLen uint32 `json:"ShinyLen,omitempty" struc:"sizeof=ShinyInfo"`
|
||||||
Shiny []GlowFilter
|
ShinyInfo []GlowFilter `json:"ShinyInfo,omitempty"`
|
||||||
|
|
||||||
//时间轮转,然后effect根据type同时只共存一个,特性是1 特质是1,柱子是两种,魂印是一个,然后异色字段,然后特训技能字段
|
//时间轮转,然后effect根据type同时只共存一个,特性是1 特质是1,柱子是两种,魂印是一个,然后异色字段,然后特训技能字段
|
||||||
ExtSKill []uint32 `struc:"skip"` //特训技能
|
ExtSKill []uint32 `struc:"skip"` //特训技能
|
||||||
|
ExtSkin []uint32 `struc:"skip"` //可用皮肤
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定义常量,提升可维护性(避免魔法数字)
|
// 定义常量,提升可维护性(避免魔法数字)
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ func (m *PlayerInfo) GetTask(i int) TaskStatus {
|
|||||||
|
|
||||||
type PlayerInfo struct {
|
type PlayerInfo struct {
|
||||||
ExpPool uint32 `struc:"skip" json:"exp_pool"` // 累计经验池
|
ExpPool uint32 `struc:"skip" json:"exp_pool"` // 累计经验池
|
||||||
//LastResetTime time.Time `struc:"skip" json:"last_reset_time"` // 重置时间,比如电池和每日任务
|
|
||||||
OnlineTime uint32 `struc:"skip" json:"online_time"` //在线分钟数
|
OnlineTime uint32 `struc:"skip" json:"online_time"` //在线分钟数
|
||||||
// OutInfo 字段
|
// OutInfo 字段
|
||||||
UserID uint32 `struc:"uint32" json:"user_id"` // 米米号 通过sid拿到
|
UserID uint32 `struc:"uint32" json:"user_id"` // 米米号 通过sid拿到
|
||||||
|
|||||||
Reference in New Issue
Block a user