Files
bl/logic/controller/pet_info.go

104 lines
3.0 KiB
Go
Raw Normal View History

package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/common"
"blazing/logic/service/pet"
2026-04-15 00:07:36 +08:00
playersvc "blazing/logic/service/player"
"blazing/modules/player/model"
)
// GetPetInfo 获取精灵信息
func (h Controller) GetPetInfo(
2026-04-05 07:24:36 +08:00
data *GetPetInfoInboundInfo,
2026-04-15 00:07:36 +08:00
player *playersvc.Player) (result *model.PetInfo,
err errorcode.ErrorCode) {
2026-04-15 00:07:36 +08:00
levelLimit := player.CurrentMapPetLevelLimit()
if slot, found := player.FindPetBagSlot(data.CatchTime); found {
if petInfo := slot.PetInfoPtr(); petInfo != nil {
2026-04-15 00:07:36 +08:00
petCopy := playersvc.ApplyPetLevelLimit(*petInfo, levelLimit)
result = &petCopy
return result, 0
}
}
2026-04-03 00:02:34 +08:00
ret := player.Service.Pet.PetInfoOneByCatchTime(data.CatchTime)
if ret == nil {
return nil, errorcode.ErrorCodes.ErrPokemonNotExists
}
2026-04-03 00:02:34 +08:00
2026-04-15 00:07:36 +08:00
petData := ret.Data
petData = playersvc.ApplyPetLevelLimit(petData, levelLimit)
result = &petData
return result, 0
}
``` feat(game): 实现扭蛋系统批量物品添加功能并优化地图逻辑 - 新增ItemAddBatch方法用于批量添加物品,支持普通道具和特殊道具的分别处理 - 优化扭蛋游戏玩法中的物品添加逻辑,使用新的批量接口提升性能 - 在扭蛋机器人命令中实现完整的物品检查和批量添加流程 refactor(map): 重构地图控制器代码结构并添加注释 - 为EnterMap、LeaveMap、GetMapPlayerList等方法添加中文注释 - 统一地图相关的命名规范,如enter map替换进入地图 - 调整地图玩家列表中BOSS广播命令ID,2021和2022进行对调 refactor(boss): 重构定时BOSS代码并优化注释 - 将原有的中文注释改为英文注释,统一代码风格 - 简化TimeBossRule结构体定义和相关配置 - 优化定时任务注册逻辑,去除冗余的注释和变量 refactor(space): 清理地图空间服务代码注释 - 移除多余的中文注释和说明文字 - 统一代码格式,移除不必要的空行和注释 - 保持原有的天气系统和地图刷怪逻辑不变 fix(role): 修复系统角色权限查询逻辑 - 修改BaseSysRoleService中的查询条件,正确处理管理员权限 - 使用Extend方法替代Where进行复杂的权限判断逻辑 - 确保超级管理员可以访问所有角色,其他用户受限于权限范围 refactor(dict): 添加字典服务批量查询方法 - 新增GetMaxMap方法用于批量获取物品最大持有上限 - 优化数据库查询,减少多次单个查询的开销 - 支持一次请求多个物品的最大数量限制 fix(player): 修复玩家信息保存异常处理 - 将panic方式改为错误日志记录,避免程序崩溃 - 优化Save方法的重试逻辑,统一错误处理方式 - 在本地文件回退时记录详细错误信息 feat(robot): 扩展扭蛋机器人功能 - 添加用户验证和角色创建检查 - 实现批量扭蛋的完整逻辑,支持1-10次抽取 - 集成物品数量检查和批量添加功能 ```
2026-04-02 02:33:05 +08:00
// GetUserBagPetInfo 获取主背包和并列备用精灵列表
func (h Controller) GetUserBagPetInfo(
2026-04-05 07:24:36 +08:00
data *GetUserBagPetInfoInboundEmpty,
2026-04-15 00:07:36 +08:00
player *playersvc.Player) (result *pet.GetUserBagPetInfoOutboundInfo,
``` feat(game): 实现扭蛋系统批量物品添加功能并优化地图逻辑 - 新增ItemAddBatch方法用于批量添加物品,支持普通道具和特殊道具的分别处理 - 优化扭蛋游戏玩法中的物品添加逻辑,使用新的批量接口提升性能 - 在扭蛋机器人命令中实现完整的物品检查和批量添加流程 refactor(map): 重构地图控制器代码结构并添加注释 - 为EnterMap、LeaveMap、GetMapPlayerList等方法添加中文注释 - 统一地图相关的命名规范,如enter map替换进入地图 - 调整地图玩家列表中BOSS广播命令ID,2021和2022进行对调 refactor(boss): 重构定时BOSS代码并优化注释 - 将原有的中文注释改为英文注释,统一代码风格 - 简化TimeBossRule结构体定义和相关配置 - 优化定时任务注册逻辑,去除冗余的注释和变量 refactor(space): 清理地图空间服务代码注释 - 移除多余的中文注释和说明文字 - 统一代码格式,移除不必要的空行和注释 - 保持原有的天气系统和地图刷怪逻辑不变 fix(role): 修复系统角色权限查询逻辑 - 修改BaseSysRoleService中的查询条件,正确处理管理员权限 - 使用Extend方法替代Where进行复杂的权限判断逻辑 - 确保超级管理员可以访问所有角色,其他用户受限于权限范围 refactor(dict): 添加字典服务批量查询方法 - 新增GetMaxMap方法用于批量获取物品最大持有上限 - 优化数据库查询,减少多次单个查询的开销 - 支持一次请求多个物品的最大数量限制 fix(player): 修复玩家信息保存异常处理 - 将panic方式改为错误日志记录,避免程序崩溃 - 优化Save方法的重试逻辑,统一错误处理方式 - 在本地文件回退时记录详细错误信息 feat(robot): 扩展扭蛋机器人功能 - 添加用户验证和角色创建检查 - 实现批量扭蛋的完整逻辑,支持1-10次抽取 - 集成物品数量检查和批量添加功能 ```
2026-04-02 02:33:05 +08:00
err errorcode.ErrorCode) {
2026-04-15 00:07:36 +08:00
return player.GetUserBagPetInfo(player.CurrentMapPetLevelLimit()), 0
}
2026-04-05 23:13:06 +08:00
// GetPetListInboundEmpty 定义请求或响应数据结构。
type GetPetListInboundEmpty struct {
Head common.TomeeHeader `cmd:"2303" struc:"skip"`
``` feat(game): 实现扭蛋系统批量物品添加功能并优化地图逻辑 - 新增ItemAddBatch方法用于批量添加物品,支持普通道具和特殊道具的分别处理 - 优化扭蛋游戏玩法中的物品添加逻辑,使用新的批量接口提升性能 - 在扭蛋机器人命令中实现完整的物品检查和批量添加流程 refactor(map): 重构地图控制器代码结构并添加注释 - 为EnterMap、LeaveMap、GetMapPlayerList等方法添加中文注释 - 统一地图相关的命名规范,如enter map替换进入地图 - 调整地图玩家列表中BOSS广播命令ID,2021和2022进行对调 refactor(boss): 重构定时BOSS代码并优化注释 - 将原有的中文注释改为英文注释,统一代码风格 - 简化TimeBossRule结构体定义和相关配置 - 优化定时任务注册逻辑,去除冗余的注释和变量 refactor(space): 清理地图空间服务代码注释 - 移除多余的中文注释和说明文字 - 统一代码格式,移除不必要的空行和注释 - 保持原有的天气系统和地图刷怪逻辑不变 fix(role): 修复系统角色权限查询逻辑 - 修改BaseSysRoleService中的查询条件,正确处理管理员权限 - 使用Extend方法替代Where进行复杂的权限判断逻辑 - 确保超级管理员可以访问所有角色,其他用户受限于权限范围 refactor(dict): 添加字典服务批量查询方法 - 新增GetMaxMap方法用于批量获取物品最大持有上限 - 优化数据库查询,减少多次单个查询的开销 - 支持一次请求多个物品的最大数量限制 fix(player): 修复玩家信息保存异常处理 - 将panic方式改为错误日志记录,避免程序崩溃 - 优化Save方法的重试逻辑,统一错误处理方式 - 在本地文件回退时记录详细错误信息 feat(robot): 扩展扭蛋机器人功能 - 添加用户验证和角色创建检查 - 实现批量扭蛋的完整逻辑,支持1-10次抽取 - 集成物品数量检查和批量添加功能 ```
2026-04-02 02:33:05 +08:00
}
2026-04-03 00:02:34 +08:00
// GetPetList 获取当前主背包列表
func (h Controller) GetPetList(
data *GetPetListInboundEmpty,
2026-04-15 00:07:36 +08:00
player *playersvc.Player) (result *pet.GetPetListOutboundInfo,
err errorcode.ErrorCode) {
``` feat(game): 实现扭蛋系统批量物品添加功能并优化地图逻辑 - 新增ItemAddBatch方法用于批量添加物品,支持普通道具和特殊道具的分别处理 - 优化扭蛋游戏玩法中的物品添加逻辑,使用新的批量接口提升性能 - 在扭蛋机器人命令中实现完整的物品检查和批量添加流程 refactor(map): 重构地图控制器代码结构并添加注释 - 为EnterMap、LeaveMap、GetMapPlayerList等方法添加中文注释 - 统一地图相关的命名规范,如enter map替换进入地图 - 调整地图玩家列表中BOSS广播命令ID,2021和2022进行对调 refactor(boss): 重构定时BOSS代码并优化注释 - 将原有的中文注释改为英文注释,统一代码风格 - 简化TimeBossRule结构体定义和相关配置 - 优化定时任务注册逻辑,去除冗余的注释和变量 refactor(space): 清理地图空间服务代码注释 - 移除多余的中文注释和说明文字 - 统一代码格式,移除不必要的空行和注释 - 保持原有的天气系统和地图刷怪逻辑不变 fix(role): 修复系统角色权限查询逻辑 - 修改BaseSysRoleService中的查询条件,正确处理管理员权限 - 使用Extend方法替代Where进行复杂的权限判断逻辑 - 确保超级管理员可以访问所有角色,其他用户受限于权限范围 refactor(dict): 添加字典服务批量查询方法 - 新增GetMaxMap方法用于批量获取物品最大持有上限 - 优化数据库查询,减少多次单个查询的开销 - 支持一次请求多个物品的最大数量限制 fix(player): 修复玩家信息保存异常处理 - 将panic方式改为错误日志记录,避免程序崩溃 - 优化Save方法的重试逻辑,统一错误处理方式 - 在本地文件回退时记录详细错误信息 feat(robot): 扩展扭蛋机器人功能 - 添加用户验证和角色创建检查 - 实现批量扭蛋的完整逻辑,支持1-10次抽取 - 集成物品数量检查和批量添加功能 ```
2026-04-02 02:33:05 +08:00
return buildPetListOutboundInfo(player.Info.PetList), 0
}
2026-04-05 23:13:06 +08:00
// GetPetListFreeInboundEmpty 定义请求或响应数据结构。
type GetPetListFreeInboundEmpty struct {
Head common.TomeeHeader `cmd:"2320" struc:"skip"`
}
2026-04-03 00:02:34 +08:00
// GetPetReleaseList 获取仓库可放生列表
func (h Controller) GetPetReleaseList(
data *GetPetListFreeInboundEmpty,
2026-04-15 00:07:36 +08:00
player *playersvc.Player) (result *pet.GetPetListOutboundInfo,
err errorcode.ErrorCode) {
return buildPetListOutboundInfo(player.WarehousePetList()), 0
}
// PlayerShowPet 精灵展示
func (h Controller) PlayerShowPet(
2026-04-05 07:24:36 +08:00
data *PetShowInboundInfo,
2026-04-15 00:07:36 +08:00
player *playersvc.Player) (result *pet.PetShowOutboundInfo, err errorcode.ErrorCode) {
result = &pet.PetShowOutboundInfo{
UserID: data.Head.UserID,
CatchTime: data.CatchTime,
Flag: data.Flag,
}
if data.Flag == 0 {
player.SetPetDisplay(0, nil)
player.GetSpace().RefreshUserInfo(player)
defer player.GetSpace().Broadcast(player, data.Head.CMD, result)
return
}
slot, ok := player.FindPetBagSlot(data.CatchTime)
if !ok {
return nil, errorcode.ErrorCodes.ErrPokemonNotExists
}
currentPet := slot.PetInfoPtr()
if currentPet == nil {
return nil, errorcode.ErrorCodes.ErrPokemonNotExists
}
player.SetPetDisplay(data.Flag, currentPet)
player.GetSpace().RefreshUserInfo(player)
result = buildPetShowOutboundInfo(data.Head.UserID, data.Flag, currentPet)
defer player.GetSpace().Broadcast(player, data.Head.CMD, result)
2025-11-18 20:52:04 +00:00
return
feat(player): 新增玩家累计经验查询接口 新增 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 工具。
2025-09-26 13:33:55 +08:00
}