锦标赛优化

This commit is contained in:
hahwu 2026-04-14 10:03:33 +08:00
parent 6b379a2de5
commit e0b73ccf6f
2 changed files with 25 additions and 41 deletions

View File

@ -531,7 +531,7 @@ func (p *Player) CatnipBackData() {
func (p *Player) GetChampshipActivityId() (int, int) {
var todayActivityId int
var yesterdayActivityId int
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetChampshipCfgList()
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList()
now := GoUtil.Now()
level := p.GetBaseMod().GetLevel()
type sortData struct {

View File

@ -44,6 +44,23 @@ func (ac *ActivityCfg) String() string {
ac.Id, ac.Type, ac.Startime, ac.Endtime, ac.Level, ac.Title, ac.MailTitle, ac.MailContent, ac.cfg, ac.Extra)
}
func (ac *ActivityCfg) Copy() ActivityCfg {
return ActivityCfg{
Id: ac.Id,
AId: ac.AId,
Type: ac.Type,
Startime: ac.Startime,
Endtime: ac.Endtime,
Level: ac.Level,
Title: ac.Title,
MailTitle: ac.MailTitle,
MailContent: ac.MailContent,
cfg: ac.cfg,
Interval: ac.Interval,
Extra: ac.Extra,
}
}
const ()
func (r *ActivityMgr) Init() {
@ -70,53 +87,20 @@ func (r *ActivityMgr) GetActivityList() []ActivityCfg {
list := make([]ActivityCfg, 0, len(data.List))
now := GoUtil.Now()
for _, v := range data.List {
info := *v
info := v.Copy()
//循环活动,重新计算活动时间
if info.Interval > 0 {
if now >= info.Endtime {
//活动已结束,计算下一次活动时间
interval := (now - info.Startime) / info.Interval
info.Startime += interval * info.Interval
info.Endtime += interval * info.Interval
if now > info.Endtime {
info.Startime += info.Interval
info.Endtime += info.Interval
}
}
v.AId = int(info.Startime) //活动id用开始时间表示方便客户端排序
} else {
v.AId = v.Id
}
list = append(list, info)
}
return list
}
func (r *ActivityMgr) GetChampshipCfgList() []ActivityCfg {
// 获取活动列表
data := r.getData()
data.mu.Lock()
defer data.mu.Unlock()
list := make([]ActivityCfg, 0, len(data.List))
now := GoUtil.Now()
for _, v := range data.List {
info := *v
if info.Type != activity.ACT_TYPE_CHAMPION {
continue
}
//循环活动,重新计算活动时间
if info.Interval > 0 {
v.AId = int(info.Startime)
info.AId = int(info.Startime)
list = append(list, info)
internal := (now - info.Startime) / info.Interval
for i := int64(0); i <= internal; i++ {
v.Startime += info.Interval
v.Endtime += info.Interval
v.AId = int(info.Startime) //活动id用开始时间表示方便客户端排序
list = append(list, info)
newInfo := info.Copy()
newInfo.Startime += info.Interval
newInfo.Endtime += info.Interval
newInfo.AId = int(newInfo.Startime) //活动id用开始时间表示方便客户端排序
list = append(list, newInfo)
}
} else {
info.AId = info.Id
list = append(list, info)
}
}