3
This commit is contained in:
parent
728656d23b
commit
574b9f49a1
@ -143,12 +143,13 @@ func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) {
|
||||
}
|
||||
v.(network.Agent).WriteMsg(data)
|
||||
// 等待返回(直接接收一次)
|
||||
timeout := time.After(15 * time.Second)
|
||||
timeout := time.After(5 * time.Second)
|
||||
select {
|
||||
case backm := <-newChan:
|
||||
if backm == nil {
|
||||
return nil, fmt.Errorf("server %d not response", serverId)
|
||||
}
|
||||
log.Debug("CallServerMsg reply %v", backm)
|
||||
return backm, nil
|
||||
case <-timeout:
|
||||
return nil, fmt.Errorf("timeout waiting for server %d response", serverId)
|
||||
@ -169,13 +170,7 @@ func SendMsgAll(m *msg.Msg) {
|
||||
|
||||
func processMsg(a *Agent, m *msg.Msg) error {
|
||||
var err error
|
||||
// 先处理同步回调
|
||||
if m.UniKey != "" {
|
||||
if chanel, ok := CallbackChan[m.UniKey]; ok {
|
||||
chanel <- m
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
if fun, ok := FuncMap[m.Type]; ok {
|
||||
err = fun(a, m)
|
||||
} else {
|
||||
|
||||
@ -286,19 +286,6 @@ func (ad *GameLogic) SetUserData(Uid int, Op int, Data interface{}) {
|
||||
})
|
||||
}
|
||||
|
||||
func (ad *GameLogic) GetUserData(Uid int) *VarUserData {
|
||||
result, err := ad.FriendMgr.Call(&MsgMod.Msg{
|
||||
From: Uid,
|
||||
To: Uid,
|
||||
Type: MsgMod.HANDLE_TYPE_VAR_USER_GET,
|
||||
SendT: GoUtil.Now(),
|
||||
})
|
||||
if err != nil {
|
||||
return &VarUserData{}
|
||||
}
|
||||
return result.(*VarUserData)
|
||||
}
|
||||
|
||||
func (ad *GameLogic) FriendMgrCall(m *MsgMod.Msg) interface{} {
|
||||
result, err := ad.FriendMgr.Call(m)
|
||||
if err != nil {
|
||||
|
||||
@ -2,6 +2,7 @@ package game
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
mergeCluster "server/cluster"
|
||||
@ -63,6 +64,7 @@ func (m *MessageMgr) MessageMgrInit() {
|
||||
MessageList: make(map[int64]*MessageList),
|
||||
PlayerList: make(map[int64]int),
|
||||
}
|
||||
gob.Register(msg.VarData{})
|
||||
// 注册处理函数
|
||||
m.init()
|
||||
m.handler = make(map[int]MessageHandlerFunc)
|
||||
@ -85,6 +87,7 @@ func (m *MessageMgr) MessageMgrInit() {
|
||||
m.RegisterHandler(msg.HANDLE_MOD_CATNIP_PARTNER, MessageHandlerFunc(CatnipPartnerHandler))
|
||||
} else {
|
||||
m.RegisterHandler(msg.HANDLE_MOD_PLAYER_MSG, MessageHandlerFunc(PlayerMsgHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_REPLY_PLAYER_MSG, MessageHandlerFunc(PlayerReplyMsgHandler))
|
||||
m.RegisterHandler(msg.HANDLE_MOD_CLUSTER_SYNC, MessageHandlerFunc(ClusterSyncHandler))
|
||||
}
|
||||
}
|
||||
@ -220,8 +223,21 @@ func PlayerMsgHandler(data *msg.Msg) (interface{}, error) {
|
||||
defer p.lock.Unlock()
|
||||
p.Send(data.Clone())
|
||||
// 处理完后发送消费消息
|
||||
data.HandleType = msg.HANDLE_MOD_COMSUME_MSG
|
||||
go SendMsgToCenterAsync(data)
|
||||
if data.HandleType == msg.HANDLE_MOD_PLAYER_MSG {
|
||||
data.HandleType = msg.HANDLE_MOD_COMSUME_MSG
|
||||
go SendMsgToCenterAsync(data)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func PlayerReplyMsgHandler(data *msg.Msg) (interface{}, error) {
|
||||
// 先处理同步回调
|
||||
if data.UniKey != "" {
|
||||
if chanel, ok := mergeCluster.CallbackChan[data.UniKey]; ok {
|
||||
log.Debug("reply message ")
|
||||
chanel <- data
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
@ -518,7 +534,7 @@ func sendMessageAsync(m *msg.Msg, node int) error {
|
||||
// 同步消息到指定节点 节点不在线则保存消息
|
||||
func sendMessageSync(m *msg.Msg, node int) (*msg.Msg, error) {
|
||||
msg, err := mergeCluster.CallServerMsg(m, node)
|
||||
if err != nil {
|
||||
if err != nil && conf.Server.ServerType == "center" {
|
||||
saveMessage(m)
|
||||
return nil, err
|
||||
}
|
||||
@ -545,6 +561,13 @@ func GetUserData(PlayerId int64, Key string) (*msg.Msg, error) {
|
||||
return SendMsgToCenterSync(&msg.Msg{
|
||||
From: int(PlayerId),
|
||||
HandleType: msg.HANDLE_MOD_USER_VAR_GET,
|
||||
Extra: Key,
|
||||
Extra: msg.VarData{Key: Key},
|
||||
})
|
||||
}
|
||||
|
||||
func GetServerData(Key string) (*msg.Msg, error) {
|
||||
return SendMsgToCenterSync(&msg.Msg{
|
||||
HandleType: msg.HANDLE_MOD_VAR_GET,
|
||||
Extra: msg.VarData{Key: Key},
|
||||
})
|
||||
}
|
||||
|
||||
@ -32,17 +32,18 @@ var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE}
|
||||
var MSG_NOON_UPDATE = &Msg{Type: SERVER_NOON_UPDATE}
|
||||
|
||||
const (
|
||||
HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息
|
||||
HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息
|
||||
HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息
|
||||
HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息
|
||||
HANDLE_MOD_CLUSTER_SYNC = 20005 // 集群同步消息
|
||||
HANDLE_MDO_PLAYER_LOGOUT = 20006 // 玩家登出消息
|
||||
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 // 设置玩家变量
|
||||
HANDLE_MOD_PLAYER_MSG = 20001 // 玩家消息
|
||||
HANDLE_MOD_CLUSTER_MSG = 20002 // 集群消息
|
||||
HANDLE_MOD_PLAYER_LOGIN = 20003 // 玩家登录消息
|
||||
HANDLE_MOD_COMSUME_MSG = 20004 // 消费消息
|
||||
HANDLE_MOD_CLUSTER_SYNC = 20005 // 集群同步消息
|
||||
HANDLE_MDO_PLAYER_LOGOUT = 20006 // 玩家登出消息
|
||||
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 // 设置玩家变量
|
||||
HANDLE_MOD_REPLY_PLAYER_MSG = 20012 // 回复玩家消息
|
||||
)
|
||||
|
||||
const (
|
||||
|
||||
@ -113,7 +113,6 @@ func (p *Player) PlayroomBackData() {
|
||||
ItemId: int32(k),
|
||||
})
|
||||
}
|
||||
data := G_GameLogicPtr.GetUserData(int(p.M_DwUin))
|
||||
|
||||
r.Dress = Dress
|
||||
r.DressSet = GoUtil.MapIntToInt32(PlayroomMod.GetDressSet())
|
||||
@ -156,7 +155,7 @@ func (p *Player) PlayroomBackData() {
|
||||
r.Unlock = PlayroomMod.GetUnlockIds()
|
||||
r.DailyTaskReward = GoUtil.IntToInt32(PlayroomMod.DailyTaskReward)
|
||||
r.DailyTask = PlayroomMod.BackDataTask()
|
||||
r.Kiss = int32(data.Kiss)
|
||||
r.Kiss = int32(p.GetPlayroomKiss())
|
||||
r.Revenge = PlayroomMod.RevengeUid
|
||||
r.InteractNum = int32(PlayroomMod.InteractNum)
|
||||
r.AdItem = AdWatch
|
||||
@ -195,18 +194,16 @@ func (p *Player) PlayroomVisit(Uid int) {
|
||||
r.Upvote = GoUtil.InArray(Uid, PlayroomMod.UpvoteList)
|
||||
r.Items = Items
|
||||
r.Status = int32(PlayroomMod.GameStatus)
|
||||
data := G_GameLogicPtr.GetUserData(Uid)
|
||||
r.UpvoteCount = int32(data.Upvote)
|
||||
r.Chip = int32(data.Chip)
|
||||
r.Kiss = int32(data.Kiss)
|
||||
r.UpvoteCount = int32(p.GetPlayroomUpvote())
|
||||
r.Chip = int32(p.GetPlayroomChip())
|
||||
r.Kiss = int32(p.GetPlayroomKiss())
|
||||
r.DressSet = GoUtil.MapIntToInt32(PlayerData.DressSet)
|
||||
p.PushClientRes(r)
|
||||
}
|
||||
|
||||
func (p *Player) NotifyPlayroomKiss() {
|
||||
data := G_GameLogicPtr.GetUserData(int(p.M_DwUin))
|
||||
m := &proto.NotifyPlayroomKiss{
|
||||
Kiss: int32(data.Kiss),
|
||||
Kiss: int32(p.GetPlayroomKiss()),
|
||||
}
|
||||
p.PushClientRes(m)
|
||||
}
|
||||
|
||||
@ -25,11 +25,20 @@ func (p *Player) GetVarData(key string) interface{} {
|
||||
return data.Extra
|
||||
}
|
||||
|
||||
func GetServerVarData(key string) interface{} {
|
||||
data, err := GetServerData(key)
|
||||
if err != nil {
|
||||
log.Error("GetServerVarData err : %s", err)
|
||||
return nil
|
||||
}
|
||||
return data.Extra
|
||||
}
|
||||
|
||||
func (p *Player) OpVarDataAsync(key string, value interface{}, opType int) {
|
||||
SendMsgToCenterAsync(&msg.Msg{
|
||||
From: int(p.M_DwUin),
|
||||
HandleType: msg.HANDLE_MOD_USER_VAR_SET,
|
||||
Extra: &msg.VarData{
|
||||
Extra: msg.VarData{
|
||||
Key: key,
|
||||
Value: value,
|
||||
SetType: opType,
|
||||
@ -37,6 +46,32 @@ func (p *Player) OpVarDataAsync(key string, value interface{}, opType int) {
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Player) OpVarDataSync(key string, value interface{}, opType int) (*msg.Msg, error) {
|
||||
return SendMsgToCenterSync(&msg.Msg{
|
||||
From: int(p.M_DwUin),
|
||||
HandleType: msg.HANDLE_MOD_USER_VAR_SET,
|
||||
Extra: msg.VarData{
|
||||
Key: key,
|
||||
Value: value,
|
||||
SetType: opType,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Player) OpServerVarDataAsync(key string, Value interface{}, opType int) {
|
||||
SendMsgToCenterSync(&msg.Msg{
|
||||
HandleType: msg.HANDLE_MOD_VAR_SET,
|
||||
Extra: msg.VarData{Key: key, Value: Value, SetType: opType},
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Player) OpServerVarDataSync(key string, Value interface{}, opType int) (*msg.Msg, error) {
|
||||
return SendMsgToCenterSync(&msg.Msg{
|
||||
HandleType: msg.HANDLE_MOD_VAR_SET,
|
||||
Extra: msg.VarData{Key: key, Value: Value, SetType: opType},
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Player) SetVarDataAsync(key string, value interface{}) {
|
||||
p.OpVarDataAsync(key, value, msg.VAR_OP_SET)
|
||||
}
|
||||
@ -61,10 +96,34 @@ func (p *Player) SubPlayroomChip(PlayerId int) {
|
||||
p.SubVarDataAsync(VAR_PLAYROOM_CHIP)
|
||||
}
|
||||
|
||||
func (p *Player) GetPlayroomUpvote() int {
|
||||
data := p.GetVarData(VAR_PLAYROOM_UPVOTE)
|
||||
if data == nil {
|
||||
return 0
|
||||
}
|
||||
return data.(int)
|
||||
}
|
||||
|
||||
func (p *Player) GetPlayroomChip() int {
|
||||
data := p.GetVarData(VAR_PLAYROOM_CHIP)
|
||||
if data == nil {
|
||||
return 0
|
||||
}
|
||||
return data.(int)
|
||||
}
|
||||
|
||||
func (p *Player) SetPlayroomKiss(PlayerId int) {
|
||||
p.SetVarDataAsync(VAR_PLAYROOM_KISS, 1)
|
||||
}
|
||||
|
||||
func (p *Player) GetPlayroomKiss() int {
|
||||
data := p.GetVarData(VAR_PLAYROOM_KISS)
|
||||
if data == nil {
|
||||
return 0
|
||||
}
|
||||
return data.(int)
|
||||
}
|
||||
|
||||
func (p *Player) GetGoldCard() *VarGoldCard {
|
||||
data := p.GetVarData(VAR_GOLD_CARD)
|
||||
if data == nil {
|
||||
|
||||
@ -186,7 +186,7 @@ func SetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
if v, ok := m.Extra.(msg.VarData); ok {
|
||||
ved, ok := data.NewVar[v.Key]
|
||||
if !ok {
|
||||
ved = &VarExpireData{}
|
||||
@ -237,7 +237,7 @@ func SetUserVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
data.mu.Lock()
|
||||
defer data.mu.Unlock()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
if v, ok := m.Extra.(msg.VarData); ok {
|
||||
varData := data.NewUseVar[m.From]
|
||||
if varData == nil {
|
||||
varData = make(map[string]*VarExpireData)
|
||||
@ -278,7 +278,7 @@ func SetUserVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
|
||||
func GetVarDataHandler(m *msg.Msg) (interface{}, error) {
|
||||
data := getVarData()
|
||||
if v, ok := m.Extra.(*msg.VarData); ok {
|
||||
if v, ok := m.Extra.(msg.VarData); ok {
|
||||
if varData, ok := data.NewVar[v.Key]; ok {
|
||||
return varData.D, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user