123 lines
2.5 KiB
Go
123 lines
2.5 KiB
Go
package game
|
|
|
|
import (
|
|
"encoding/gob"
|
|
"server/GoUtil"
|
|
"server/game/mod/card"
|
|
"server/game/mod/msg"
|
|
"time"
|
|
)
|
|
|
|
type VarMgr struct {
|
|
*ServerMod
|
|
}
|
|
|
|
type VarData struct {
|
|
Var map[string]interface{}
|
|
VarExpire map[string]*VarExpireData
|
|
UserVar map[string]*VarUserData
|
|
ZeroTime int64
|
|
}
|
|
|
|
const (
|
|
VAR_GOLD_CARD = "gold_card"
|
|
VAR_PLAYROOM_UPVOTE = "playroom_upvote"
|
|
VAR_USER_DATA = "user_data"
|
|
)
|
|
|
|
const (
|
|
VAR_OP_UPVOTE = 1
|
|
VAR_OP_CHIP = 2
|
|
VAR_OP_KISS = 3
|
|
VAR_OP_CHIP_SET = 4
|
|
VAR_OP_CATNIP_LOCK = 5
|
|
)
|
|
|
|
func (f *VarMgr) Init() {
|
|
gob.Register(&VarGoldCard{})
|
|
f.key = VAR_MGR_KEY
|
|
f.data = &VarData{
|
|
Var: map[string]interface{}{},
|
|
}
|
|
// 注册处理函数
|
|
f.init()
|
|
if f.data.(*VarData).Var == nil {
|
|
f.data.(*VarData).Var = make(map[string]interface{})
|
|
}
|
|
if f.data.(*VarData).UserVar == nil {
|
|
f.data.(*VarData).UserVar = make(map[string]*VarUserData)
|
|
}
|
|
if f.getData().ZeroTime == GoUtil.ZeroTimestamp() {
|
|
f.ZeroUpdate(&msg.Msg{})
|
|
}
|
|
f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate)
|
|
|
|
f.mDispatr.AfterFunc(time.Duration(GoUtil.NextZeroTimestampDuration())*time.Second, func() {
|
|
f.Send(&msg.Msg{
|
|
Type: msg.SERVER_ZERO_UPDATE,
|
|
})
|
|
})
|
|
}
|
|
|
|
func (f *VarMgr) SetGlobalData(m *msg.Msg) (interface{}, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) {
|
|
f.getData().ZeroTime = GoUtil.ZeroTimestamp()
|
|
// 随机生成两个金卡
|
|
Card1, Card2 := card.RankGoldCard()
|
|
f.SetVar(VAR_GOLD_CARD, &VarGoldCard{
|
|
Four: Card1,
|
|
Five: Card2,
|
|
})
|
|
for k, v := range f.getData().VarExpire {
|
|
if v.T < GoUtil.ZeroTimestamp() {
|
|
delete(f.getData().VarExpire, k)
|
|
}
|
|
}
|
|
return nil, nil
|
|
}
|
|
|
|
func (f *VarMgr) SetVar(key string, value interface{}) {
|
|
f.getData().Var[key] = value
|
|
}
|
|
|
|
func (f *VarMgr) GetVar(key string) interface{} {
|
|
return f.getData().Var[key]
|
|
}
|
|
|
|
func (f *VarMgr) SetExpireVar(key string, value *VarExpireData) {
|
|
f.getData().VarExpire[key] = value
|
|
}
|
|
|
|
func (f *VarMgr) GetExpireVar(key string) *VarExpireData {
|
|
if v, ok := f.getData().VarExpire[key]; ok {
|
|
return v
|
|
}
|
|
data := &VarExpireData{}
|
|
f.getData().VarExpire[key] = data
|
|
return data
|
|
}
|
|
|
|
func (f *VarMgr) SetUserVar(key string, value *VarUserData) {
|
|
f.getData().UserVar[key] = value
|
|
}
|
|
|
|
func (f *VarMgr) GetUserVar(key string) *VarUserData {
|
|
if v, ok := f.getData().UserVar[key]; ok {
|
|
return v
|
|
}
|
|
data := &VarUserData{}
|
|
f.getData().UserVar[key] = data
|
|
return data
|
|
}
|
|
|
|
func (f *VarMgr) DelVar(key string) {
|
|
delete(f.getData().Var, key)
|
|
}
|
|
|
|
func (f *VarMgr) getData() *VarData {
|
|
return f.data.(*VarData)
|
|
}
|