卡牌类型断言bug修复
This commit is contained in:
parent
1a4015c176
commit
5f26f31e39
@ -59,6 +59,25 @@ func (p *Player) HandleMsg(m *msg.Msg) {
|
||||
}
|
||||
}
|
||||
|
||||
func getCardInfoFromExtra(extra interface{}) (card.CardInfo, bool) {
|
||||
switch v := extra.(type) {
|
||||
case card.CardInfo:
|
||||
return v, true
|
||||
case *card.CardInfo:
|
||||
if v == nil {
|
||||
return card.CardInfo{}, false
|
||||
}
|
||||
return *v, true
|
||||
case **card.CardInfo:
|
||||
if v == nil || *v == nil {
|
||||
return card.CardInfo{}, false
|
||||
}
|
||||
return **v, true
|
||||
default:
|
||||
return card.CardInfo{}, false
|
||||
}
|
||||
}
|
||||
|
||||
// 消息处理
|
||||
func (p *Player) handle(m *msg.Msg) error {
|
||||
switch m.Type {
|
||||
@ -116,7 +135,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
})
|
||||
case msg.HANDLE_TYPE_REQ_CARD: // 卡牌申请
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -156,9 +175,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PlayMod.save()
|
||||
p.PushClientRes(InviteMod.NotifySuccess())
|
||||
case msg.HANDLE_TYPE_SEND_CARD: // B收到A赠送的卡牌
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
log.Error("Failed to cast m.Extra to card.CardInfo")
|
||||
log.Error("handle type send card,Failed to cast m.Extra to card.CardInfo")
|
||||
return nil
|
||||
}
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
@ -171,9 +190,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
)
|
||||
p.PlayMod.save()
|
||||
case msg.HANDLE_TYPE_EX_CARD_SELECT_TIMEOUT: // A收到B置换卡牌选择超时
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
log.Error("Failed to cast m.Extra to card.CardInfo")
|
||||
log.Error("handle type ex card select timeout,Failed to cast m.Extra to card.CardInfo")
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
@ -182,9 +201,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
p.PushClientRes(CardMod.NotifyTimes())
|
||||
case msg.HANDLE_TYPE_EX_CARD_TIMEOUT: // B收到A同意置换卡牌超时
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
log.Error("Failed to cast m.Extra to card.CardInfo")
|
||||
log.Error("handle type ex card timeout,Failed to cast m.Extra to card.CardInfo")
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
@ -192,9 +211,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
p.PushClientRes(CardMod.NotifyTimes())
|
||||
case msg.HANDLE_TYPE_REG_CARD_FINISH, msg.HANDLE_TYPE_AGREE_CARD_FAIL: // B收到A的请求已结束
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
log.Error("Failed to cast m.Extra to card.CardInfo")
|
||||
log.Error("handle type reg card finish or agree card fail,Failed to cast m.Extra to card.CardInfo")
|
||||
return nil
|
||||
}
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
@ -206,8 +225,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
)
|
||||
p.PlayMod.save()
|
||||
case msg.HANDLE_TYPE_AGREE_CARD: // A收到B同意卡牌
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
log.Error("handle type agree card,Failed to cast m.Extra to card.CardInfo")
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
@ -221,7 +241,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
}
|
||||
for k, v := range otherUid { // 通知好友请求已结束
|
||||
v.Status = card.STATUS_CARD_GIVE_3
|
||||
FriendMgrSend(&msg.Msg{Type: msg.HANDLE_TYPE_REG_CARD_FINISH, From: k, Extra: &v})
|
||||
FriendMgrSend(&msg.Msg{Type: msg.HANDLE_TYPE_REG_CARD_FINISH, From: k, Extra: *v})
|
||||
CardMod.DelRequestCard(k)
|
||||
}
|
||||
p.PlayMod.save()
|
||||
@ -232,7 +252,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
)
|
||||
p.PushClientRes(CardMod.NotifyTimes())
|
||||
case msg.HANDLE_TYPE_REG_CARD_REFUSE: // A收到B拒绝索要卡牌
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -244,7 +264,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PushClientRes(CardMod.NotifyCard())
|
||||
case msg.HANDLE_TYPE_EX_CARD: // B收到A置换卡牌
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -258,7 +278,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
)
|
||||
case msg.HANDLE_TYPE_SELECT_EX_CARD: // A收到B选择卡牌进行置换
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -270,7 +290,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
},
|
||||
)
|
||||
case msg.HANDLE_TYPE_ARGREE_EX_CARD: // B收到A同意置换卡牌
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -284,7 +304,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PlayMod.save()
|
||||
case msg.HANDLE_TYPE_REFUSE_SELECT_CARD: // A收到B拒绝置换卡牌
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
@ -296,7 +316,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.PlayMod.save()
|
||||
case msg.HANDLE_TYPE_REFUSE_EX_CARD: // B收到A拒绝置换卡牌
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
cardInfo, ok := m.Extra.(card.CardInfo)
|
||||
cardInfo, ok := getCardInfoFromExtra(m.Extra)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -280,6 +280,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
|
||||
"chess_name": mergeDataCfg.GetNameById(chessId),
|
||||
})
|
||||
ChessMod.RemoveChess(chessId)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user