97 lines
2.2 KiB
Go
97 lines
2.2 KiB
Go
package base
|
|
|
|
import (
|
|
"mongo.games.com/game/proto"
|
|
hall_proto "mongo.games.com/game/protocol/gamehall"
|
|
server_proto "mongo.games.com/game/protocol/server"
|
|
)
|
|
|
|
var NilPlayer IPlayer = nil
|
|
|
|
type IPlayer interface {
|
|
Clear()
|
|
GetSnId() int32
|
|
GetPos() int32
|
|
GetFlag() int32
|
|
SetFlag(flag int32)
|
|
GetCoin() int64
|
|
GetLastOp() int32
|
|
SetLastOp(op int32)
|
|
MarkFlag(flag int32)
|
|
UnmarkFlag(flag int32)
|
|
IsMarkFlag(flag int32) bool
|
|
IsOnLine() bool
|
|
IsReady() bool
|
|
IsSceneOwner() bool
|
|
IsRobot() bool
|
|
UpdateCards(cards []int32)
|
|
UpdateBasePlayers(gameId string, basePlayer *server_proto.RobotData)
|
|
GetBasePlayers(gameId string) *server_proto.RobotData
|
|
LeaveGameMsg(snid int32) bool
|
|
GetOutLimitCoin() int
|
|
GetGameCount() int
|
|
GetLastWinOrLoss() int
|
|
GetTakeCoin() int64
|
|
}
|
|
|
|
type BasePlayer struct {
|
|
BasePlayer map[string]*server_proto.RobotData
|
|
GameCount int
|
|
LastWinOrLoss int //0 平局 1 赢取 -1 失败
|
|
TakeCoin int64
|
|
Scene interface{}
|
|
}
|
|
|
|
func (this *BasePlayer) UpdateBasePlayers(gameId string, basePlayer *server_proto.RobotData) {
|
|
if this.BasePlayer == nil {
|
|
this.BasePlayer = make(map[string]*server_proto.RobotData)
|
|
}
|
|
this.BasePlayer[gameId] = basePlayer
|
|
}
|
|
|
|
func (this *BasePlayer) GetBasePlayers(gameId string) *server_proto.RobotData {
|
|
if this.BasePlayer == nil {
|
|
this.BasePlayer = make(map[string]*server_proto.RobotData)
|
|
}
|
|
if this.BasePlayer[gameId] == nil {
|
|
this.BasePlayer[gameId] = &server_proto.RobotData{}
|
|
}
|
|
return this.BasePlayer[gameId]
|
|
}
|
|
|
|
func (this *BasePlayer) GetLastWinOrLoss() int {
|
|
return this.LastWinOrLoss
|
|
}
|
|
|
|
func (this *BasePlayer) GetGameCount() int {
|
|
return this.GameCount
|
|
}
|
|
|
|
func (this *BasePlayer) GetTakeCoin() int64 {
|
|
return this.TakeCoin
|
|
}
|
|
|
|
func (this *BasePlayer) GetOutLimitCoin() int {
|
|
return -1
|
|
}
|
|
|
|
func (this *BasePlayer) SendMsg(snid int32, packetid int, data interface{}) bool {
|
|
s := PlayerMgrSingleton.GetPlayerSession(snid)
|
|
if s != nil {
|
|
return s.Send(packetid, data)
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (this *BasePlayer) LeaveGameMsg(snid int32) bool {
|
|
s := PlayerMgrSingleton.GetPlayerSession(snid)
|
|
if s != nil {
|
|
pack := &hall_proto.CSLeaveRoom{
|
|
Mode: proto.Int32(0),
|
|
}
|
|
proto.SetDefaults(pack)
|
|
return s.Send(int(hall_proto.GameHallPacketID_PACKET_CS_LEAVEROOM), pack)
|
|
}
|
|
return false
|
|
}
|