From 3b02cd1241bd0623f7becd2cc2eb64796e929f4e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 22 Dec 2025 16:45:11 +0800 Subject: [PATCH] 2 --- src/server/game/activity_func.go | 34 +++++++++--------- src/server/game/friend_mgr.go | 35 ------------------ src/server/game/var.go | 10 ++++++ src/server/game/var_mgr.go | 61 +++++++++++++------------------- 4 files changed, 51 insertions(+), 89 deletions(-) diff --git a/src/server/game/activity_func.go b/src/server/game/activity_func.go index 18a9d579..78937420 100644 --- a/src/server/game/activity_func.go +++ b/src/server/game/activity_func.go @@ -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, } } diff --git a/src/server/game/friend_mgr.go b/src/server/game/friend_mgr.go index feced6e3..bb2b84d4 100644 --- a/src/server/game/friend_mgr.go +++ b/src/server/game/friend_mgr.go @@ -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)) diff --git a/src/server/game/var.go b/src/server/game/var.go index 13445ef2..a2edefb1 100644 --- a/src/server/game/var.go +++ b/src/server/game/var.go @@ -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) +} diff --git a/src/server/game/var_mgr.go b/src/server/game/var_mgr.go index 5d45337e..25a6f253 100644 --- a/src/server/game/var_mgr.go +++ b/src/server/game/var_mgr.go @@ -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)