feat: 重构任务奖励系统并增加宠物技能和皮肤奖励
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
将任务奖励逻辑重构到单独的文件中,增加对宠物技能和皮肤奖励的支持,优化任务完成处理流程
This commit is contained in:
@@ -3,6 +3,7 @@ package service
|
||||
import (
|
||||
"blazing/common/utils"
|
||||
"blazing/cool"
|
||||
configmodel "blazing/modules/config/model"
|
||||
config "blazing/modules/config/service"
|
||||
"blazing/modules/player/model"
|
||||
|
||||
@@ -27,54 +28,58 @@ func (s *TalkService) reset(flag int) {
|
||||
s.dbm(s.Model).Where("talk_id", flag).Data("count", 0, "last_reset_time", gtime.Now()).Update()
|
||||
}
|
||||
|
||||
//实现挖矿次数确认
|
||||
|
||||
func (s *TalkService) Cheak(mapid uint32, flag int) (int, bool) {
|
||||
|
||||
m1 := s.dbm(s.Model)
|
||||
|
||||
func (s *TalkService) progress(flag int) (uint32, *model.Talk, *configmodel.MineralCollectionConfig, bool) {
|
||||
var talks *model.Talk
|
||||
m1.Where("talk_id", flag).Scan(&talks)
|
||||
s.dbm(s.Model).Where("talk_id", flag).Scan(&talks)
|
||||
|
||||
cfg := config.NewTalkConfigService().GetCache(flag)
|
||||
if cfg == nil {
|
||||
return 0, talks, nil, false
|
||||
}
|
||||
if talks == nil {
|
||||
|
||||
return 0, true //如果表里没有记载数据,那么就可以直接挖矿
|
||||
return 0, nil, cfg, true
|
||||
}
|
||||
|
||||
c := config.NewTalkConfigService().GetCache(flag)
|
||||
|
||||
//因为这个是挖一次更新一次,而且是实时更新的,如果更新日期是今天,那么就可以确认不用再重置,否则就需要重置挖矿记录
|
||||
if c == nil {
|
||||
return 0, false //没在地图
|
||||
}
|
||||
switch c.Limit {
|
||||
switch cfg.Limit {
|
||||
case 0:
|
||||
if !utils.IsToday(talks.LastResetTime) {
|
||||
|
||||
s.reset(flag)
|
||||
return int(0), true
|
||||
return 0, talks, cfg, true
|
||||
}
|
||||
|
||||
case 1:
|
||||
if !utils.IsWEEK(talks.LastResetTime) {
|
||||
|
||||
s.reset(flag)
|
||||
return int(0), true
|
||||
return 0, talks, cfg, true
|
||||
}
|
||||
case 2:
|
||||
if !utils.IsMon(talks.LastResetTime) {
|
||||
|
||||
s.reset(flag)
|
||||
return int(0), true
|
||||
return 0, talks, cfg, true
|
||||
}
|
||||
}
|
||||
|
||||
if uint32(mapid) != c.MapID {
|
||||
return talks.Count, talks, cfg, true
|
||||
}
|
||||
|
||||
func (s *TalkService) Progress(flag int) (uint32, bool) {
|
||||
count, _, _, ok := s.progress(flag)
|
||||
return count, ok
|
||||
}
|
||||
|
||||
//实现挖矿次数确认
|
||||
|
||||
func (s *TalkService) Cheak(mapid uint32, flag int) (int, bool) {
|
||||
count, _, cfg, ok := s.progress(flag)
|
||||
if !ok || cfg == nil {
|
||||
return 0, false //没在地图
|
||||
}
|
||||
if talks.Count >= c.DailyCollectCount {
|
||||
if uint32(mapid) != cfg.MapID {
|
||||
return 0, false //没在地图
|
||||
}
|
||||
if count >= cfg.DailyCollectCount {
|
||||
return 0, false
|
||||
}
|
||||
return int(talks.Count), true //int(config.MaxDailyCnt - talks.Count)
|
||||
return int(count), true //int(config.MaxDailyCnt - talks.Count)
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user