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/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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user