2
This commit is contained in:
parent
3b02cd1241
commit
728656d23b
@ -79,6 +79,10 @@ func (m *MessageMgr) MessageMgrInit() {
|
||||
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(CenterPlayerMsgHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_COMSUME_MSG, MessageHandlerFunc(ComsumerMsgHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_VAR_SET, MessageHandlerFunc(SetVarDataHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_VAR_GET, MessageHandlerFunc(GetVarDataHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_USER_VAR_SET, MessageHandlerFunc(SetUserVarDataHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_USER_VAR_GET, MessageHandlerFunc(GetUserVarDataHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_CATNIP_PARTNER, MessageHandlerFunc(CatnipPartnerHandler))
|
||||
} else {
|
||||
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(PlayerMsgHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_CLUSTER_SYNC, MessageHandlerFunc(ClusterSyncHandler))
|
||||
@ -540,7 +544,7 @@ func saveMessage(m *msg.Msg) error {
|
||||
func GetUserData(PlayerId int64, Key string) (*msg.Msg, error) {
|
||||
return SendMsgToCenterSync(&msg.Msg{
|
||||
From: int(PlayerId),
|
||||
HandleType: msg.HANDLE_MOD_VAR_GET,
|
||||
HandleType: msg.HANDLE_MOD_USER_VAR_GET,
|
||||
Extra: Key,
|
||||
})
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@ const (
|
||||
HANDLE_MOD_VAR_GET = 20007 // 获取变量
|
||||
HANDLE_MOD_VAR_SET = 20008 // 设置变量
|
||||
HANDLE_MOD_CATNIP_PARTNER = 20009 // 猫薄荷伙伴
|
||||
HANDLE_MOD_USER_VAR_GET = 20010 // 获取玩家变量
|
||||
HANDLE_MOD_USER_VAR_SET = 20011 // 设置玩家变量
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@ -28,7 +28,7 @@ func (p *Player) GetVarData(key string) interface{} {
|
||||
func (p *Player) OpVarDataAsync(key string, value interface{}, opType int) {
|
||||
SendMsgToCenterAsync(&msg.Msg{
|
||||
From: int(p.M_DwUin),
|
||||
HandleType: msg.HANDLE_MOD_VAR_SET,
|
||||
HandleType: msg.HANDLE_MOD_USER_VAR_SET,
|
||||
Extra: &msg.VarData{
|
||||
Key: key,
|
||||
Value: value,
|
||||
@ -50,19 +50,19 @@ func (p *Player) SubVarDataAsync(key string) {
|
||||
}
|
||||
|
||||
func (p *Player) AddPlayroomUpvote(PlayerId int) {
|
||||
p.AddVarDataAsync(GoUtil.GetUserVarKey(PlayerId, VAR_PLAYROOM_UPVOTE))
|
||||
p.AddVarDataAsync(VAR_PLAYROOM_UPVOTE)
|
||||
}
|
||||
|
||||
func (p *Player) AddPlayroomChip(PlayerId int) {
|
||||
p.AddVarDataAsync(GoUtil.GetUserVarKey(PlayerId, VAR_PLAYROOM_CHIP))
|
||||
p.AddVarDataAsync(VAR_PLAYROOM_CHIP)
|
||||
}
|
||||
|
||||
func (p *Player) SubPlayroomChip(PlayerId int) {
|
||||
p.SubVarDataAsync(GoUtil.GetUserVarKey(PlayerId, VAR_PLAYROOM_CHIP))
|
||||
p.SubVarDataAsync(VAR_PLAYROOM_CHIP)
|
||||
}
|
||||
|
||||
func (p *Player) SetPlayroomKiss(PlayerId int) {
|
||||
p.SetVarDataAsync(GoUtil.GetUserVarKey(PlayerId, VAR_PLAYROOM_KISS), 1)
|
||||
p.SetVarDataAsync(VAR_PLAYROOM_KISS, 1)
|
||||
}
|
||||
|
||||
func (p *Player) GetGoldCard() *VarGoldCard {
|
||||
|
||||
@ -20,10 +20,11 @@ type VarData struct {
|
||||
VarExpire map[string]*VarExpireData
|
||||
UserVar map[string]*VarUserData
|
||||
|
||||
NewVar map[string]*VarExpireData
|
||||
ZeroTime int64
|
||||
Version int64
|
||||
mu sync.Mutex
|
||||
NewVar map[string]*VarExpireData
|
||||
NewUseVar map[int]map[string]*VarExpireData
|
||||
ZeroTime int64
|
||||
Version int64
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
const (
|
||||
@ -38,7 +39,8 @@ func (f *VarMgr) Init() {
|
||||
gob.Register(&VarGoldCard{})
|
||||
f.key = VAR_MGR_KEY
|
||||
f.data = &VarData{
|
||||
NewVar: map[string]*VarExpireData{},
|
||||
NewVar: map[string]*VarExpireData{},
|
||||
NewUseVar: map[int]map[string]*VarExpireData{},
|
||||
}
|
||||
// 注册处理函数
|
||||
f.init()
|
||||
@ -74,9 +76,9 @@ func (f *VarMgr) version() {
|
||||
if v != nil {
|
||||
uidStr := strings.Split(k, "_")[2]
|
||||
uid := GoUtil.Int(uidStr)
|
||||
f.SetVar(GoUtil.GetUserVarKey(uid, VAR_PLAYROOM_UPVOTE), v.Upvote)
|
||||
f.SetVar(GoUtil.GetUserVarKey(uid, VAR_PLAYROOM_CHIP), v.Chip)
|
||||
f.SetVar(GoUtil.GetUserVarKey(uid, VAR_PLAYROOM_KISS), v.Kiss)
|
||||
f.SetUserVar(uid, VAR_PLAYROOM_UPVOTE, v.Upvote)
|
||||
f.SetUserVar(uid, VAR_PLAYROOM_CHIP, v.Chip)
|
||||
f.SetUserVar(uid, VAR_PLAYROOM_KISS, v.Kiss)
|
||||
delete(data.UserVar, k)
|
||||
}
|
||||
}
|
||||
@ -106,26 +108,53 @@ func (f *VarMgr) HandleCatnipPartner(Uid, Partner, GameId int, EndTime int64) (i
|
||||
data := f.getData()
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
MyKey := GoUtil.GetUserVarKey(Uid, VAR_CATNIP_PARTNER)
|
||||
Partnerkey := GoUtil.GetUserVarKey(Partner, VAR_CATNIP_PARTNER)
|
||||
OtherPartnerInfo := f.GetVar(MyKey)
|
||||
MyPartnerInfo := f.GetVar(Partnerkey)
|
||||
|
||||
OtherPartnerInfo := f.GetUserVar(Uid, VAR_CATNIP_PARTNER)
|
||||
MyPartnerInfo := f.GetUserVar(Partner, VAR_CATNIP_PARTNER)
|
||||
MyOfPartnerList := GoUtil.IntSlice(MyPartnerInfo.D)
|
||||
OtherOfPartnerList := GoUtil.IntSlice(OtherPartnerInfo.D)
|
||||
if len(MyOfPartnerList) > 4 || len(OtherOfPartnerList) > 4 {
|
||||
return nil, fmt.Errorf("catnip partner already full for uid %d in game %d", Partner, GameId)
|
||||
}
|
||||
f.SetVar(Partnerkey, &VarExpireData{
|
||||
f.SetUserVar(Partner, VAR_CATNIP_PARTNER, &VarExpireData{
|
||||
D: append(OtherOfPartnerList, Uid),
|
||||
T: EndTime,
|
||||
})
|
||||
f.SetVar(MyKey, &VarExpireData{
|
||||
f.SetUserVar(Uid, VAR_CATNIP_PARTNER, &VarExpireData{
|
||||
D: append(MyOfPartnerList, Partner),
|
||||
T: EndTime,
|
||||
})
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (f *VarMgr) SetUserVar(uid int, key string, value interface{}) {
|
||||
varData := f.getData().NewUseVar[uid]
|
||||
if varData == nil {
|
||||
varData = make(map[string]*VarExpireData)
|
||||
f.getData().NewUseVar[uid] = varData
|
||||
}
|
||||
ved, ok := varData[key]
|
||||
if !ok {
|
||||
ved = &VarExpireData{}
|
||||
}
|
||||
ved.D = value
|
||||
varData[key] = ved
|
||||
}
|
||||
|
||||
func (f *VarMgr) GetUserVar(uid int, key string) *VarExpireData {
|
||||
varData := f.getData().NewUseVar[uid]
|
||||
if varData == nil {
|
||||
varData = make(map[string]*VarExpireData)
|
||||
f.getData().NewUseVar[uid] = varData
|
||||
}
|
||||
ved, ok := varData[key]
|
||||
if !ok {
|
||||
ved = &VarExpireData{}
|
||||
varData[key] = ved
|
||||
}
|
||||
return ved
|
||||
}
|
||||
|
||||
func (f *VarMgr) SetVar(key string, value interface{}) {
|
||||
f.getData().NewVar[key] = &VarExpireData{
|
||||
D: value,
|
||||
@ -191,6 +220,62 @@ func SetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func GetUserVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
if varData, ok := data.NewUseVar[m.From]; ok {
|
||||
if userVar, ok := varData[v.Key]; ok {
|
||||
return userVar, nil
|
||||
}
|
||||
}
|
||||
return nil, fmt.Errorf("var data not found for key %s", v.Key)
|
||||
}
|
||||
return nil, fmt.Errorf("invalid parameters for getting var data")
|
||||
}
|
||||
|
||||
func SetUserVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
varData := data.NewUseVar[m.From]
|
||||
if varData == nil {
|
||||
varData = make(map[string]*VarExpireData)
|
||||
data.NewUseVar[m.From] = varData
|
||||
}
|
||||
ved, ok := varData[v.Key]
|
||||
if !ok {
|
||||
ved = &VarExpireData{}
|
||||
}
|
||||
switch v.SetType {
|
||||
case msg.VAR_OP_SET:
|
||||
ved.D = v.Value
|
||||
case msg.VAR_OP_ADD:
|
||||
if num, ok := ved.D.(int); ok {
|
||||
ved.D = num + 1
|
||||
} else {
|
||||
ved.D = 1
|
||||
}
|
||||
case msg.VAR_OP_SUB:
|
||||
if num, ok := ved.D.(int); ok {
|
||||
if num > 0 {
|
||||
ved.D = num - 1
|
||||
} else {
|
||||
ved.D = 0
|
||||
}
|
||||
} else {
|
||||
ved.D = 0
|
||||
}
|
||||
}
|
||||
ved.U = time.Now().Unix()
|
||||
if m.End > 0 {
|
||||
ved.T = m.End
|
||||
}
|
||||
data.Var[v.Key] = ved
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func GetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
|
||||
@ -300,14 +300,6 @@ func UniKey(seed string) string {
|
||||
return fmt.Sprintf("%x", hash.Sum(nil))
|
||||
}
|
||||
|
||||
func GetUserKey(Uid int64) string {
|
||||
return fmt.Sprintf("user_data_%d", Uid)
|
||||
}
|
||||
|
||||
func GetUserVarKey(Uid int, key string) string {
|
||||
return fmt.Sprintf("%s_%d", key, Uid)
|
||||
}
|
||||
|
||||
func GetCatnipLockKey(Uid, GameId int) string {
|
||||
return fmt.Sprintf("catnip_lock_%d_%d", Uid, GameId)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user