2
This commit is contained in:
parent
408bd4df5b
commit
3b02cd1241
@ -1,7 +1,6 @@
|
||||
package game
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
activityCfg "server/conf/activity"
|
||||
catnipCfg "server/conf/catnip"
|
||||
guesscolorCfg "server/conf/guess_color"
|
||||
@ -360,34 +359,33 @@ func (p *Player) CatnipBackData() {
|
||||
}
|
||||
tmpData := make(map[int]*msg.CatnipInvite)
|
||||
InviteList := make([]*msg.CatnipInvite, 0)
|
||||
for Uid, Info := range CatnipMod.InviteList {
|
||||
tmpData[Uid] = &msg.CatnipInvite{
|
||||
Uid: int64(Uid),
|
||||
Time: Info.Time,
|
||||
for uid, info := range CatnipMod.InviteList {
|
||||
tmpData[uid] = &msg.CatnipInvite{
|
||||
Uid: int64(uid),
|
||||
Time: info.Time,
|
||||
Type: 1,
|
||||
}
|
||||
}
|
||||
for Uid, Info := range CatnipMod.BeInvitedList {
|
||||
tmpData[Uid] = &msg.CatnipInvite{
|
||||
Uid: int64(Uid),
|
||||
Time: Info.Time,
|
||||
for uid, info := range CatnipMod.BeInvitedList {
|
||||
tmpData[uid] = &msg.CatnipInvite{
|
||||
Uid: int64(uid),
|
||||
Time: info.Time,
|
||||
Type: 2,
|
||||
}
|
||||
}
|
||||
|
||||
for Uid := range FriendMod.NewFriendList {
|
||||
key := fmt.Sprintf("catnip_partner_%d", Uid)
|
||||
Var := G_GameLogicPtr.VarMgr.GetExpireVar(key)
|
||||
if len(GoUtil.IntSlice(Var.D)) >= 4 {
|
||||
tmpData[Uid] = &msg.CatnipInvite{
|
||||
Uid: int64(Uid),
|
||||
for uid := range FriendMod.NewFriendList {
|
||||
partnerList := p.GetCatnipPartner(uid)
|
||||
if len(GoUtil.IntSlice(partnerList)) >= 4 {
|
||||
tmpData[uid] = &msg.CatnipInvite{
|
||||
Uid: int64(uid),
|
||||
Type: 3,
|
||||
}
|
||||
continue
|
||||
}
|
||||
if _, ok := tmpData[Uid]; !ok {
|
||||
tmpData[Uid] = &msg.CatnipInvite{
|
||||
Uid: int64(Uid),
|
||||
if _, ok := tmpData[uid]; !ok {
|
||||
tmpData[uid] = &msg.CatnipInvite{
|
||||
Uid: int64(uid),
|
||||
Type: 0,
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package game
|
||||
import (
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"server/MergeConst"
|
||||
mergeCluster "server/cluster"
|
||||
"server/conf"
|
||||
"server/game/mod/card"
|
||||
@ -86,9 +85,6 @@ func (f *FriendMgr) Init() {
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline)
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer)
|
||||
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_GET, f.GetVarUserData)
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData)
|
||||
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_LOGIN, f.SendMsgToCenter)
|
||||
f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, f.SendMsgToCenter)
|
||||
}
|
||||
@ -141,37 +137,6 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (f *FriendMgr) GetVarUserData(m *msg.Msg) (interface{}, error) {
|
||||
Key := GoUtil.GetUserKey(int64(m.To))
|
||||
data := G_GameLogicPtr.VarMgr.GetUserVar(Key)
|
||||
if data == nil {
|
||||
data = &VarUserData{
|
||||
Upvote: 0,
|
||||
}
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func (f *FriendMgr) SetVarUserData(m *msg.Msg) (interface{}, error) {
|
||||
VarOp := m.Extra.(VarOpration)
|
||||
Key := GoUtil.GetUserKey(int64(m.To))
|
||||
data := G_GameLogicPtr.VarMgr.GetUserVar(Key)
|
||||
switch VarOp.Type {
|
||||
case VAR_OP_UPVOTE:
|
||||
data.Upvote++
|
||||
case VAR_OP_CHIP:
|
||||
data.Chip += VarOp.Data.(int)
|
||||
case VAR_OP_CHIP_SET:
|
||||
data.Chip = VarOp.Data.(int)
|
||||
case VAR_OP_KISS:
|
||||
data.Kiss = VarOp.Data.(int)
|
||||
}
|
||||
return &VarOpration{
|
||||
Data: data,
|
||||
Code: MergeConst.SUCCESS,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// 发送消息给玩家
|
||||
func sendToPlayer(m *msg.Msg) error {
|
||||
p := G_GameLogicPtr.GetPlayer(int64(m.To))
|
||||
|
||||
@ -13,6 +13,7 @@ const (
|
||||
VAR_PLAYROOM_CHIP = "playroom_chip"
|
||||
VAR_PLAYROOM_KISS = "playroom_kiss"
|
||||
VAR_USER_DATA = "user_data"
|
||||
VAR_CATNIP_PARTNER = "catnip_partner"
|
||||
)
|
||||
|
||||
func (p *Player) GetVarData(key string) interface{} {
|
||||
@ -71,3 +72,12 @@ func (p *Player) GetGoldCard() *VarGoldCard {
|
||||
}
|
||||
return data.(*VarGoldCard)
|
||||
}
|
||||
|
||||
func (p *Player) GetCatnipPartner(Uid int) []int {
|
||||
data, err := GetUserData(p.M_DwUin, VAR_CATNIP_PARTNER)
|
||||
if err != nil {
|
||||
log.Error("GetVarData err : %s", err)
|
||||
return nil
|
||||
}
|
||||
return GoUtil.IntSlice(data.Extra)
|
||||
}
|
||||
|
||||
@ -16,12 +16,14 @@ type VarMgr struct {
|
||||
}
|
||||
|
||||
type VarData struct {
|
||||
Var map[string]*VarExpireData
|
||||
Var map[string]interface{}
|
||||
VarExpire map[string]*VarExpireData
|
||||
UserVar map[string]*VarUserData
|
||||
ZeroTime int64
|
||||
Version int64
|
||||
mu sync.Mutex
|
||||
|
||||
NewVar map[string]*VarExpireData
|
||||
ZeroTime int64
|
||||
Version int64
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
const (
|
||||
@ -36,14 +38,14 @@ func (f *VarMgr) Init() {
|
||||
gob.Register(&VarGoldCard{})
|
||||
f.key = VAR_MGR_KEY
|
||||
f.data = &VarData{
|
||||
Var: map[string]*VarExpireData{},
|
||||
NewVar: map[string]*VarExpireData{},
|
||||
}
|
||||
// 注册处理函数
|
||||
f.init()
|
||||
// 版本更新 重构
|
||||
f.version()
|
||||
if f.data.(*VarData).Var == nil {
|
||||
f.data.(*VarData).Var = make(map[string]*VarExpireData)
|
||||
if f.data.(*VarData).NewVar == nil {
|
||||
f.data.(*VarData).NewVar = make(map[string]*VarExpireData)
|
||||
}
|
||||
if f.data.(*VarData).UserVar == nil {
|
||||
f.data.(*VarData).UserVar = make(map[string]*VarUserData)
|
||||
@ -90,7 +92,7 @@ func (f *VarMgr) ZeroUpdate() {
|
||||
Four: Card1,
|
||||
Five: Card2,
|
||||
})
|
||||
for k, v := range f.getData().Var {
|
||||
for k, v := range f.getData().NewVar {
|
||||
if v.T < GoUtil.ZeroTimestamp() {
|
||||
delete(f.getData().Var, k)
|
||||
}
|
||||
@ -101,20 +103,23 @@ func (f *VarMgr) ZeroUpdate() {
|
||||
}
|
||||
|
||||
func (f *VarMgr) HandleCatnipPartner(Uid, Partner, GameId int, EndTime int64) (interface{}, error) {
|
||||
myKey := fmt.Sprintf("catnip_partner_%d", Uid)
|
||||
key := fmt.Sprintf("catnip_partner_%d", Partner)
|
||||
OtherPartnerInfo := f.GetExpireVar(key)
|
||||
MyPartnerInfo := f.GetExpireVar(myKey)
|
||||
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)
|
||||
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(key, &VarExpireData{
|
||||
f.SetVar(Partnerkey, &VarExpireData{
|
||||
D: append(OtherOfPartnerList, Uid),
|
||||
T: EndTime,
|
||||
})
|
||||
f.SetVar(myKey, &VarExpireData{
|
||||
f.SetVar(MyKey, &VarExpireData{
|
||||
D: append(MyOfPartnerList, Partner),
|
||||
T: EndTime,
|
||||
})
|
||||
@ -122,33 +127,17 @@ func (f *VarMgr) HandleCatnipPartner(Uid, Partner, GameId int, EndTime int64) (i
|
||||
}
|
||||
|
||||
func (f *VarMgr) SetVar(key string, value interface{}) {
|
||||
f.getData().Var[key] = &VarExpireData{
|
||||
f.getData().NewVar[key] = &VarExpireData{
|
||||
D: value,
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 弃用
|
||||
func (f *VarMgr) GetExpireVar(key string) *VarExpireData {
|
||||
if v, ok := f.getData().VarExpire[key]; ok {
|
||||
func (f *VarMgr) GetVar(key string) *VarExpireData {
|
||||
if v, ok := f.getData().NewVar[key]; ok {
|
||||
return v
|
||||
}
|
||||
data := &VarExpireData{}
|
||||
f.getData().VarExpire[key] = data
|
||||
return data
|
||||
}
|
||||
|
||||
// TODO: 弃用
|
||||
func (f *VarMgr) SetUserVar(key string, value *VarUserData) {
|
||||
f.getData().UserVar[key] = value
|
||||
}
|
||||
|
||||
// TODO: 弃用
|
||||
func (f *VarMgr) GetUserVar(key string) *VarUserData {
|
||||
if v, ok := f.getData().UserVar[key]; ok {
|
||||
return v
|
||||
}
|
||||
data := &VarUserData{}
|
||||
f.getData().UserVar[key] = data
|
||||
f.getData().NewVar[key] = data
|
||||
return data
|
||||
}
|
||||
|
||||
@ -169,7 +158,7 @@ func SetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
ved, ok := data.Var[v.Key]
|
||||
ved, ok := data.NewVar[v.Key]
|
||||
if !ok {
|
||||
ved = &VarExpireData{}
|
||||
}
|
||||
@ -205,7 +194,7 @@ func SetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
func GetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
if varData, ok := data.Var[v.Key]; ok {
|
||||
if varData, ok := data.NewVar[v.Key]; ok {
|
||||
return varData.D, nil
|
||||
}
|
||||
return nil, fmt.Errorf("var data not found for key %s", v.Key)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user