diff --git a/src/server/db/Mysql.go b/src/server/db/Mysql.go index 9ddb7c30..f1b469be 100644 --- a/src/server/db/Mysql.go +++ b/src/server/db/Mysql.go @@ -415,7 +415,7 @@ func GetServerMailData(data *[]*SqlServerMailStruct) error { } func GetActivityData(data *[]*SqlActivityCfgStruct) error { - sql := "select `id`, `type`, `title`, `mail_title`, `mail_content`, `level_limit`, `start_time`, `end_time`, `cfg_buf`, `extra` from t_activity_mod" + sql := "select `id`, `type`, `title`, `mail_title`, `mail_content`, `level_limit`, `start_time`, `end_time`, `cfg_buf`, `extra`, `interval` from t_activity_mod" err := SqlDb.Select(data, sql) return err } diff --git a/src/server/db/SqlStruct.go b/src/server/db/SqlStruct.go index c60bd90a..c7135689 100644 --- a/src/server/db/SqlStruct.go +++ b/src/server/db/SqlStruct.go @@ -507,6 +507,7 @@ type SqlActivityCfgStruct struct { Start_time int64 `db:"start_time"` End_time int64 `db:"end_time"` Cfg []byte `db:"cfg_buf"` + Interval int64 `db:"interval"` Extra string `db:"extra"` } diff --git a/src/server/game/activity_mgr.go b/src/server/game/activity_mgr.go index 5baba4c7..ef3ca268 100644 --- a/src/server/game/activity_mgr.go +++ b/src/server/game/activity_mgr.go @@ -5,6 +5,7 @@ import ( "server/db" "server/game/mod/msg" Msg "server/game/mod/msg" + GoUtil "server/game_util" protoMsg "server/msg" "sync" @@ -32,6 +33,7 @@ type ActivityCfg struct { MailTitle string MailContent string cfg interface{} + Interval int64 Extra map[string]interface{} } @@ -64,7 +66,18 @@ func (r *ActivityMgr) GetActivityList() []ActivityCfg { data.mu.Lock() defer data.mu.Unlock() list := make([]ActivityCfg, 0, len(data.List)) + now := GoUtil.Now() for _, v := range data.List { + //循环活动,重新计算活动时间 + if v.Interval > 0 { + if now > v.Endtime { + //活动已结束,计算下一次活动时间 + interval := (now - v.Startime) / v.Interval + v.Startime += interval * v.Interval + v.Endtime += interval * v.Interval + } + v.Id = int(v.Startime) //活动id用开始时间表示,方便客户端排序 + } list = append(list, *v) } return list @@ -112,6 +125,7 @@ func (r *ActivityMgr) Reload() error { MailTitle: v.MailTitle, MailContent: v.MailContent, cfg: activityCfg, + Interval: v.Interval, } log.Debug("load activity cfg: %v", cfg) data.List[v.Id] = cfg diff --git a/src/server/game/mod/activity/activity.go b/src/server/game/mod/activity/activity.go index a4d7e194..a80763e9 100644 --- a/src/server/game/mod/activity/activity.go +++ b/src/server/game/mod/activity/activity.go @@ -15,14 +15,16 @@ const ( ) const ( - ACT_TYPE_MINING = 1 // 挖矿 - ACT_TYPE_GUESS_COLOR = 2 // 猜颜色 - ACT_TYPE_RACE = 3 // 赛跑 - ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包 - ACT_TYPE_ADD_GIFT = 5 // 买一赠一礼包 - ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包 - ACT_TYPE_CATNIP = 7 // 猫草大作战 - ACT_TYPE_PASS = 8 // 通行证 + ACT_TYPE_MINING = 1 // 挖矿 + ACT_TYPE_GUESS_COLOR = 2 // 猜颜色 + ACT_TYPE_RACE = 3 // 赛跑 + ACT_TYPE_DISCOUNT_GIFT = 4 // 折扣礼包 + ACT_TYPE_ADD_GIFT = 5 // 买一赠一礼包 + ACT_TYPE_SUPER_GIFT = 6 // 超值加购礼包 + ACT_TYPE_CATNIP = 7 // 猫草大作战 + ACT_TYPE_PASS = 8 // 通行证 + ACT_TYPE_CHAMPION = 9 // 冠军赛 + ACT_TYPE_MEOW_GIFT = 10 // 喵喵回礼 ) const (