1
This commit is contained in:
parent
66f985f758
commit
1e7fac37b8
1
.gitignore
vendored
1
.gitignore
vendored
@ -22,3 +22,4 @@ src/server/msg/Gameapi.pb.go
|
||||
src/server/gen-go
|
||||
src/server/GeoLite2-Country
|
||||
src/server/test/GeoLite2-Country
|
||||
src/server/msg/Gameapi_grpc.pb.go
|
||||
|
||||
@ -414,7 +414,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`, `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)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -296,9 +296,7 @@ func (ad *GameLogic) CreateMailMgr() {
|
||||
|
||||
// 活动管理器
|
||||
func (ad *GameLogic) CreateActivityMgr() {
|
||||
ad.ActivityMgr = &ActivityMgr{
|
||||
ServerMod: new(ServerMod),
|
||||
}
|
||||
ad.ActivityMgr = &ActivityMgr{}
|
||||
ad.ActivityMgr.Init()
|
||||
}
|
||||
|
||||
|
||||
@ -1,16 +1,18 @@
|
||||
package game
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"server/db"
|
||||
"server/game/mod/msg"
|
||||
protoMsg "server/msg"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"sync"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
type ActivityMgr struct {
|
||||
*ServerMod
|
||||
data *ActivityData
|
||||
}
|
||||
|
||||
type ActivityData struct {
|
||||
@ -27,7 +29,7 @@ type ActivityCfg struct {
|
||||
Title string
|
||||
MailTitle string
|
||||
MailContent string
|
||||
cfg map[string]interface{}
|
||||
cfg interface{}
|
||||
Extra map[string]interface{}
|
||||
}
|
||||
|
||||
@ -39,17 +41,14 @@ func (ac *ActivityCfg) String() string {
|
||||
const ()
|
||||
|
||||
func (r *ActivityMgr) Init() {
|
||||
r.key = ACTIVITY_MGR_KEY
|
||||
r.data = &ActivityData{
|
||||
List: make(map[int]*ActivityCfg, 0),
|
||||
}
|
||||
// 注册处理函数
|
||||
r.init()
|
||||
r.Reload()
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
func (r ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
|
||||
func (r *ActivityMgr) GetActivityCfg(Id int) ActivityCfg {
|
||||
// 获取活动配置
|
||||
data := r.getData()
|
||||
data.mu.Lock()
|
||||
@ -84,15 +83,11 @@ func (r *ActivityMgr) Reload() error {
|
||||
}
|
||||
data.List = make(map[int]*ActivityCfg, 0)
|
||||
for _, v := range cfgList {
|
||||
reward := make(map[string]interface{})
|
||||
extra := make(map[string]interface{})
|
||||
if v.Extra != "" {
|
||||
err := json.Unmarshal([]byte(v.Extra), &extra)
|
||||
activityCfg, err := unmarshalActivityCfg(v.Type, []byte(v.Cfg))
|
||||
if err != nil {
|
||||
log.Error("Unmarshal extra error: %v", err)
|
||||
log.Error("Unmarshal activity cfg error: %v", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
cfg := &ActivityCfg{
|
||||
Id: v.Id,
|
||||
Type: v.Type,
|
||||
@ -102,11 +97,24 @@ func (r *ActivityMgr) Reload() error {
|
||||
Title: v.Title,
|
||||
MailTitle: v.MailTitle,
|
||||
MailContent: v.MailContent,
|
||||
cfg: reward,
|
||||
Extra: extra,
|
||||
cfg: activityCfg,
|
||||
}
|
||||
log.Debug("load activity cfg: %v", cfg)
|
||||
data.List[v.Id] = cfg
|
||||
}
|
||||
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)
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user