Files
bl/logic/controller/action_扭蛋.go
昔念 379e3c8ce6
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
```
feat(config): 添加超时空地图配置和时间地图查询功能

新增IsTimeSpace字段用于标识地图是否为超时空地图,
添加TimeMap API接口支持查询超时空地图配置

perf(socket): 优化XORDecryptU解密函数减少内存分配

基于bytebufferpool实现缓冲区池化,大幅降低高频调用下的
内存分配和GC压力,提升性能表现

refactor(utils): 优化packVal序列化函数提升性能和稳定性

减少反射开销,优化内存拷贝操作,改进错误处理机制,
替换panic为error返回,增强代码健壮性

docs(readme): 添加新的pprof性能分析地址配置
```
2026-02-21 17:32:40 +08:00

61 lines
1.6 KiB
Go

package controller
import (
"blazing/common/data"
"blazing/common/socket/errorcode"
"blazing/logic/service/egg"
"blazing/logic/service/player"
"blazing/modules/config/service"
"blazing/modules/player/model"
"github.com/gogf/gf/v2/util/grand"
)
func (h Controller) EggGamePlay(data1 *egg.C2S_EGG_GAME_PLAY, c *player.Player) (result *egg.S2C_EGG_GAME_PLAY, err errorcode.ErrorCode) {
switch data1.EggNum {
case 2:
data1.EggNum = 5
case 3:
data1.EggNum = 10
}
r := c.Service.Item.CheakItem(400501)
if data1.EggNum > 10 || data1.EggNum <= 0 {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
}
if r < 0 {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient)
}
if data1.EggNum > r {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient)
}
result = &egg.S2C_EGG_GAME_PLAY{ListInfo: []data.ItemInfo{}}
if grand.Meet(int(data1.EggNum), 100) {
r := service.NewPetRewardService().GetEgg()
newPet := model.GenPetInfo(int(r.MonID), int(r.DV), int(r.Nature), int(r.Effect), int(r.Lv), nil, 0)
if grand.Meet(1, 500) {
newPet.RandomByWeightShiny()
}
c.Service.Pet.PetAdd(newPet)
result.HadTime = newPet.CatchTime
result.PetID = newPet.ID
}
items := service.NewItemService().GetEgg(data1.EggNum)
for _, item := range items {
if item.ItemId == 0 {
continue
}
c.ItemAdd(item.ItemId, item.ItemCnt)
result.ListInfo = append(result.ListInfo, data.ItemInfo{ItemId: item.ItemId, ItemCnt: item.ItemCnt})
}
c.Service.Item.UPDATE(400501, int(-data1.EggNum))
return
}