```
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进行大小
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
|
||||
func (h Controller) EnterMap(data *space.InInfo, c *player.Player) (result *info.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
func (h Controller) EnterMap(data *space.InInfo, c *player.Player) (result *info.SimpleInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
c.Info.MapID = data.MapId //登录地图
|
||||
c.GetSpace().User.Store(c.Info.UserID, c) //添加玩家
|
||||
|
||||
27
logic/controller/pet_barge.go
Normal file
27
logic/controller/pet_barge.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
// GetPetBargeList 精灵图鉴
|
||||
func (h Controller) GetPetBargeList(data *pet.PetBargeListInboundInfo, player *player.Player) (result *pet.PetBargeListOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
ret := &pet.PetBargeListOutboundInfo{
|
||||
PetBargeList: make([]pet.PetBargeListInfo, 0),
|
||||
}
|
||||
r := player.Service.Barge.Get(data.StartPetId, data.EndPetId)
|
||||
for _, v := range r {
|
||||
|
||||
ret.PetBargeList = append(ret.PetBargeList, pet.PetBargeListInfo{
|
||||
PetId: v.PetId,
|
||||
EnCntCnt: 1,
|
||||
IsCatched: v.CatchedCount,
|
||||
IsKilled: v.KilledCount,
|
||||
})
|
||||
}
|
||||
|
||||
return ret, 0
|
||||
}
|
||||
@@ -4,19 +4,58 @@ 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,
|
||||
IsCom: 0,
|
||||
ID: data.Type,
|
||||
}
|
||||
// r := c.Service.Barge.Get()
|
||||
|
||||
// for _, v := range r {
|
||||
|
||||
// }
|
||||
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
|
||||
|
||||
|
||||
17
logic/controller/pet_ext.go
Normal file
17
logic/controller/pet_ext.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/pet"
|
||||
"blazing/logic/service/player"
|
||||
)
|
||||
|
||||
// Exelist 对应C#的List<Exeing 实现获取精灵训练数据
|
||||
|
||||
func (h Controller) PetExt(
|
||||
data *pet.C2S_NONO_EXE_LIST, player *player.Player) (result *pet.S2C_NONO_EXE_LIST, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = &pet.S2C_NONO_EXE_LIST{}
|
||||
|
||||
return
|
||||
|
||||
}
|
||||
@@ -222,23 +222,3 @@ func (h Controller) SetPetExp(data *pet.PetSetExpInboundInfo, player *player.Pla
|
||||
Exp: player.Info.ExpPool,
|
||||
}, errorcode.ErrorCodes.ErrSystemError
|
||||
}
|
||||
|
||||
// GetPetBargeList 精灵图鉴
|
||||
func (h Controller) GetPetBargeList(data *pet.PetBargeListInboundInfo, player *player.Player) (result *pet.PetBargeListOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
ret := &pet.PetBargeListOutboundInfo{
|
||||
PetBargeList: make([]pet.PetBargeListInfo, 0),
|
||||
}
|
||||
r := player.Service.Barge.Get(data.StartPetId, data.EndPetId)
|
||||
for _, v := range r {
|
||||
|
||||
ret.PetBargeList = append(ret.PetBargeList, pet.PetBargeListInfo{
|
||||
PetId: v.PetId,
|
||||
EnCntCnt: 1,
|
||||
IsCatched: v.CatchedCount,
|
||||
IsKilled: v.KilledCount,
|
||||
})
|
||||
}
|
||||
|
||||
return ret, 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user