Files
bl/logic/controller/pet_collect.go
昔念 08ebf849eb ```
feat(pet): 添加宠物收集功能和称号系统

- 实现了宠物收集任务状态查询功能
- 新增Collect方法处理宠物收集逻辑,包括类型验证和ID合法性检查
- 创建validTypeIDMap映射表统一管理合法的类型ID集合
- 重构任务状态判断逻辑,基于model.Completion状态进行判断

refactor(map): 统一玩家信息结构体

- 将OutInfo重命名为SimpleInfo并添加Title字段
- 更新EnterMap方法的返回类型为SimpleInfo
- 修改space包中的UserInfo映射类型为SimpleInfo

feat(task): 集成称号奖励到任务系统

- 在PlayerInfo结构体中添加Title字段
- 扩展TaskConfig模型支持称号奖励配置
- 更新用户信息服务处理用户名大小写转换

refactor(space): 优化空间服务数据结构

- 更新GetInfo方法返回SimpleInfo切片
- 调整UserInfo CsMap泛型类型参数
- 修改ListMapPlayerOutboundInfo中Player数组类型

style(login): 规范化用户名输入处理

- 登录时将用户名转换为小写进行比较
- 使用strings.EqualFold进行大小
2026-01-17 00:47:41 +08:00

63 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/pet"
"blazing/logic/service/player"
"blazing/modules/blazing/model"
"github.com/samber/lo"
)
func (h Controller) IsCollect(
data *pet.C2S_IS_COLLECT, c *player.Player) (result *pet.S2C_IS_COLLECT, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &pet.S2C_IS_COLLECT{
ID: data.Type,
}
res := c.Info.GetTask(1335 + int(data.Type)) //第一期
if res == model.Completed {
result.IsCom = 1
}
return result, 0
}
// 定义 Type 与合法 ID 集合的映射表,集中管理所有规则
var validTypeIDMap = map[int][]uint32{
1: {1, 4, 7}, // Type1合法ID为1、4、7
2: {71}, // Type2合法ID为71
3: {275}, // Type3合法ID为275
4: {669}, // Type4合法ID为669你之前提到的是670确认是否笔误
301: {1, 4, 7}, //精灵王计划
}
func (h Controller) Collect(
data *pet.C2S_PET_COLLECT, c *player.Player) (result *pet.S2C_PET_COLLECT, err errorcode.ErrorCode) { //这个时候player应该是空的
result = &pet.S2C_PET_COLLECT{ID: data.ID}
res := c.Info.GetTask(1335 + int(data.Type)) //第一期
if res != model.Unaccepted {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
}
validIDs, ok := validTypeIDMap[int(data.Type)]
if !ok {
// Type不在映射表中返回系统错误
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
}
// 2. 判断ID是否在合法集合中
if !lo.Contains(validIDs, data.ID) {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
}
c.Info.SetTask(1335+int(data.Type), model.Completed)
r := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil)
c.Service.Pet.PetAdd(r)
result.CatchTime = r.CatchTime
return result, 0
}