This commit is contained in:
hahwu 2026-03-18 16:26:05 +08:00
parent 66f985f758
commit 1e7fac37b8
4 changed files with 29 additions and 22 deletions

1
.gitignore vendored
View File

@ -22,3 +22,4 @@ src/server/msg/Gameapi.pb.go
src/server/gen-go src/server/gen-go
src/server/GeoLite2-Country src/server/GeoLite2-Country
src/server/test/GeoLite2-Country src/server/test/GeoLite2-Country
src/server/msg/Gameapi_grpc.pb.go

View File

@ -414,7 +414,7 @@ func GetServerMailData(data *[]*SqlServerMailStruct) error {
} }
func GetActivityData(data *[]*SqlActivityCfgStruct) error { func GetActivityData(data *[]*SqlActivityCfgStruct) error {
sql := "select `id`, `type`, `title`, `mail_title`, `mail_content`, `level_limit`, `start_time`, `end_time`, `cfg`, `extra` from t_activity_mod" sql := "select `id`, `type`, `title`, `mail_title`, `mail_content`, `level_limit`, `start_time`, `end_time`, `cfg_buf`, `extra` from t_activity_mod"
err := SqlDb.Select(data, sql) err := SqlDb.Select(data, sql)
return err return err
} }

View File

@ -296,9 +296,7 @@ func (ad *GameLogic) CreateMailMgr() {
// 活动管理器 // 活动管理器
func (ad *GameLogic) CreateActivityMgr() { func (ad *GameLogic) CreateActivityMgr() {
ad.ActivityMgr = &ActivityMgr{ ad.ActivityMgr = &ActivityMgr{}
ServerMod: new(ServerMod),
}
ad.ActivityMgr.Init() ad.ActivityMgr.Init()
} }

View File

@ -1,16 +1,18 @@
package game package game
import ( import (
"encoding/json"
"fmt" "fmt"
"server/db" "server/db"
"server/game/mod/msg" "server/game/mod/msg"
protoMsg "server/msg"
"server/pkg/github.com/name5566/leaf/log" "server/pkg/github.com/name5566/leaf/log"
"sync" "sync"
"google.golang.org/protobuf/proto"
) )
type ActivityMgr struct { type ActivityMgr struct {
*ServerMod data *ActivityData
} }
type ActivityData struct { type ActivityData struct {
@ -27,7 +29,7 @@ type ActivityCfg struct {
Title string Title string
MailTitle string MailTitle string
MailContent string MailContent string
cfg map[string]interface{} cfg interface{}
Extra map[string]interface{} Extra map[string]interface{}
} }
@ -39,17 +41,14 @@ func (ac *ActivityCfg) String() string {
const () const ()
func (r *ActivityMgr) Init() { func (r *ActivityMgr) Init() {
r.key = ACTIVITY_MGR_KEY
r.data = &ActivityData{ r.data = &ActivityData{
List: make(map[int]*ActivityCfg, 0), List: make(map[int]*ActivityCfg, 0),
} }
// 注册处理函数
r.init()
r.Reload() r.Reload()
} }
func (r *ActivityMgr) getData() *ActivityData { func (r *ActivityMgr) getData() *ActivityData {
return r.data.(*ActivityData) return r.data
} }
// 零点更新 重置榜单 // 零点更新 重置榜单
@ -57,7 +56,7 @@ func (r *ActivityMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
return nil, nil return nil, nil
} }
func (r ActivityMgr) GetActivityCfg(Id int) ActivityCfg { func (r *ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
// 获取活动配置 // 获取活动配置
data := r.getData() data := r.getData()
data.mu.Lock() data.mu.Lock()
@ -84,14 +83,10 @@ func (r *ActivityMgr) Reload() error {
} }
data.List = make(map[int]*ActivityCfg, 0) data.List = make(map[int]*ActivityCfg, 0)
for _, v := range cfgList { for _, v := range cfgList {
reward := make(map[string]interface{}) activityCfg, err := unmarshalActivityCfg(v.Type, []byte(v.Cfg))
extra := make(map[string]interface{}) if err != nil {
if v.Extra != "" { log.Error("Unmarshal activity cfg error: %v", err)
err := json.Unmarshal([]byte(v.Extra), &extra) continue
if err != nil {
log.Error("Unmarshal extra error: %v", err)
continue
}
} }
cfg := &ActivityCfg{ cfg := &ActivityCfg{
Id: v.Id, Id: v.Id,
@ -102,11 +97,24 @@ func (r *ActivityMgr) Reload() error {
Title: v.Title, Title: v.Title,
MailTitle: v.MailTitle, MailTitle: v.MailTitle,
MailContent: v.MailContent, MailContent: v.MailContent,
cfg: reward, cfg: activityCfg,
Extra: extra,
} }
log.Debug("load activity cfg: %v", cfg) log.Debug("load activity cfg: %v", cfg)
data.List[v.Id] = cfg data.List[v.Id] = cfg
} }
return nil return nil
} }
func unmarshalActivityCfg(atype int, buf []byte) (interface{}, error) {
switch atype {
case 1:
cfg := &protoMsg.MiningCfg{}
err := proto.Unmarshal(buf, cfg)
if err != nil {
return nil, err
}
return cfg, nil
}
return nil, fmt.Errorf("unknown activity type: %d", atype)
}