Merge branch 'championship' into develop

This commit is contained in:
hahwu 2026-04-08 11:03:06 +08:00
commit 880be78f3f
6 changed files with 85 additions and 17 deletions

View File

@ -4,7 +4,6 @@ import (
"fmt" "fmt"
activityCfg "server/conf/activity" activityCfg "server/conf/activity"
catnipCfg "server/conf/catnip" catnipCfg "server/conf/catnip"
champshipCfg "server/conf/champship"
dailyTaskCfg "server/conf/daily_task" dailyTaskCfg "server/conf/daily_task"
guesscolorCfg "server/conf/guess_color" guesscolorCfg "server/conf/guess_color"
languageCfg "server/conf/language" languageCfg "server/conf/language"
@ -523,9 +522,8 @@ func (p *Player) GetChampshipActivityId() (int, int) {
now := GoUtil.Now() now := GoUtil.Now()
yesterday := GoUtil.ZeroTimestamp() - 1 yesterday := GoUtil.ZeroTimestamp() - 1
level := p.GetBaseMod().GetLevel() level := p.GetBaseMod().GetLevel()
champshipActivityIds := champshipCfg.GetChampshipActivityId()
for _, v := range activiyCfgList { for _, v := range activiyCfgList {
if !GoUtil.InArray(v.Id, champshipActivityIds) { if v.Type != activity.ACT_TYPE_CHAMPION {
continue continue
} }
if v.Level > level { if v.Level > level {
@ -541,6 +539,54 @@ func (p *Player) GetChampshipActivityId() (int, int) {
return todayActivityId, yesterdayActivityId return todayActivityId, yesterdayActivityId
} }
func (p *Player) ChampionshipZeroUpdate() {
todayActivityId, _ := p.GetChampshipActivityId()
ChampionshipMod := p.PlayMod.getChampshipMod()
aid := ChampionshipMod.AId
cfg := G_GameLogicPtr.ActivityMgr.GetChampshipCfg(aid)
if cfg == nil {
return
}
items := p.GetChampshipReward(aid)
if len(items) > 0 {
p.SendActivityMail2(items, "backend_championship_mail_title", "backend_championship_mail_content")
}
p.PlayMod.getChampshipMod().ZeroUpdate(todayActivityId)
}
func (p *Player) GetChampshipReward(id int) []*item.Item {
ChampionshipMod := p.PlayMod.getChampshipMod()
if id == 0 { // 兼容旧数据之前没有活动id的只要发放一次奖励
DecorateMod := p.PlayMod.getDecorateMod()
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
return ChampionshipMod.GetReward(0, orderFactor)
}
if ChampionshipMod == nil {
return nil
}
cfg := G_GameLogicPtr.ActivityMgr.GetChampshipCfg(id)
if cfg == nil {
return nil
}
DecorateMod := p.PlayMod.getDecorateMod()
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
var maxRewardId int
var items []*item.Item
for _, v := range cfg.GetJackpotList() {
if ChampionshipMod.GetScore() >= int(v.Score) && int(v.Id) > ChampionshipMod.GetRewardId() {
maxRewardId = int(v.Id)
items = append(items, item.MsgToItem(v.Items)...)
if v.StarReward > 0 {
itemNum := GoUtil.FormatStarItemNum(int(v.StarReward), orderFactor)
starItem := item.NewItem(item.ITEM_STAR_ID, itemNum)
items = append(items, starItem)
}
}
}
ChampionshipMod.SetRewardId(maxRewardId)
return items
}
func (p *Player) GetDailyTaskActivityId() int { func (p *Player) GetDailyTaskActivityId() int {
var activityId int var activityId int
activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList() activiyCfgList := G_GameLogicPtr.ActivityMgr.GetActivityList()

View File

@ -184,3 +184,17 @@ func (r *ActivityMgr) GetCatReturnGiftCfg(id int) *protoMsg.CatReturnGiftCfg {
} }
return nil return nil
} }
func (r *ActivityMgr) GetChampshipCfg(id int) *protoMsg.ChampionshipCfg {
data := r.getData()
data.mu.Lock()
defer data.mu.Unlock()
for _, v := range data.List {
if v.Type == activity.ACT_TYPE_CHAMPION && v.Id == id {
if cfg, ok := v.cfg.(*protoMsg.ChampionshipCfg); ok {
return cfg
}
}
}
return nil
}

View File

@ -15,6 +15,8 @@ type ChampshipMod struct {
RankReward bool RankReward bool
PreMax int // 昨日最高档 PreMax int // 昨日最高档
Max int // 历史最高档 Max int // 历史最高档
AId int // 活动id
LastAId int // 上次活动id
} }
func (c *ChampshipMod) InitData() {} func (c *ChampshipMod) InitData() {}
@ -24,11 +26,13 @@ func (c *ChampshipMod) isActive() bool {
return GoUtil.Now()-GoUtil.ZeroTimestamp() >= 300 return GoUtil.Now()-GoUtil.ZeroTimestamp() >= 300
} }
func (c *ChampshipMod) ZeroUpdate() { func (c *ChampshipMod) ZeroUpdate(aid int) {
c.PreMax = c.Reward c.PreMax = c.Reward
c.Score = 0 c.Score = 0
c.Reward = 0 c.Reward = 0
c.RankReward = false c.RankReward = false
c.LastAId = c.AId
c.AId = aid
} }
func (c *ChampshipMod) GetScore() int { func (c *ChampshipMod) GetScore() int {
@ -63,6 +67,13 @@ func (c *ChampshipMod) GetReward(activityId, orderFactor int) []*item.Item {
return items return items
} }
func (c *ChampshipMod) GetRewardId() int {
return c.Reward
}
func (c *ChampshipMod) SetRewardId(rewardId int) {
c.Reward = rewardId
}
func (c *ChampshipMod) BackData(myRank, myPreRank, todayActivityId, yesterdayActivityId int) *msg.ResChampship { func (c *ChampshipMod) BackData(myRank, myPreRank, todayActivityId, yesterdayActivityId int) *msg.ResChampship {
rankReward := 0 rankReward := 0
if c.RankReward { if c.RankReward {
@ -94,3 +105,7 @@ func (c *ChampshipMod) GetH() int {
func (c *ChampshipMod) GetN() int { func (c *ChampshipMod) GetN() int {
return c.Max return c.Max
} }
func (c *ChampshipMod) GetAId() int {
return c.AId
}

View File

@ -310,7 +310,10 @@ func (p *Player) BackChampship() {
ChampshipMod := p.PlayMod.getChampshipMod() ChampshipMod := p.PlayMod.getChampshipMod()
rank, preRank := p.GetChampshipRank() rank, preRank := p.GetChampshipRank()
todayActivityId, yesterdayActivityId := p.GetChampshipActivityId() todayActivityId, yesterdayActivityId := p.GetChampshipActivityId()
p.PushClientRes(ChampshipMod.BackData(rank, preRank, todayActivityId, yesterdayActivityId)) res := ChampshipMod.BackData(rank, preRank, todayActivityId, yesterdayActivityId)
cfg := G_GameLogicPtr.ActivityMgr.GetChampshipCfg(todayActivityId)
res.Cfg = cfg
p.PushClientRes(res)
} }
// 获取冠军赛排名 redis缓存 // 获取冠军赛排名 redis缓存

View File

@ -415,14 +415,7 @@ func (p *Player) ZeroUpdate(a []interface{}) {
PlayroomMod.ResetWeeklyDiscount() PlayroomMod.ResetWeeklyDiscount()
} }
p.PlayroomBackData() p.PlayroomBackData()
todayActivityId, _ := p.GetChampshipActivityId() p.ChampionshipZeroUpdate()
DecorateMod := p.PlayMod.getDecorateMod()
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
items := p.PlayMod.getChampshipMod().GetReward(todayActivityId, orderFactor)
if len(items) > 0 {
p.SendActivityMail2(items, "backend_championship_mail_title", "backend_championship_mail_content")
}
p.PlayMod.getChampshipMod().ZeroUpdate()
p.BackChampship() p.BackChampship()
p.InitActivity() p.InitActivity()
p.ActivityZeroUpdate() p.ActivityZeroUpdate()

View File

@ -2541,11 +2541,8 @@ func ReqChampship(player *Player, req *msg.ReqChampship) error {
} }
func ReqChampshipReward(player *Player, req *msg.ReqChampshipReward) error { func ReqChampshipReward(player *Player, req *msg.ReqChampshipReward) error {
ChampshipMod := player.PlayMod.getChampshipMod() ChampshipMod := player.PlayMod.getChampshipMod()
todayActivityId, _ := player.GetChampshipActivityId()
DecorateMod := player.PlayMod.getDecorateMod()
orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId())
rewardId := ChampshipMod.Reward rewardId := ChampshipMod.Reward
itemList := ChampshipMod.GetReward(todayActivityId, orderFactor) itemList := player.GetChampshipReward(ChampshipMod.GetAId())
err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String()) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String())
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResChampshipReward{ player.SendErrClienRes(&msg.ResChampshipReward{