90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
package thirteen
|
|
|
|
import (
|
|
"mongo.games.com/game/common"
|
|
protoplayer "mongo.games.com/game/protocol/player"
|
|
"mongo.games.com/game/protocol/thirteen"
|
|
"mongo.games.com/game/robot/base"
|
|
"mongo.games.com/goserver/core/netlib"
|
|
)
|
|
|
|
type ThirteenWaterScene struct {
|
|
base.BaseScene
|
|
*thirteen.SCThirteenRoomInfo
|
|
seats [8]*ThirteenWaterPlayer
|
|
players map[int32]*ThirteenWaterPlayer
|
|
}
|
|
|
|
func NewThirteenWaterScene(info *thirteen.SCThirteenRoomInfo) *ThirteenWaterScene {
|
|
s := &ThirteenWaterScene{
|
|
SCThirteenRoomInfo: info,
|
|
players: make(map[int32]*ThirteenWaterPlayer),
|
|
}
|
|
s.Init()
|
|
return s
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) Init() {
|
|
for _, mpd := range s.GetPlayers() {
|
|
p := NewThirteenWaterPlayer(mpd)
|
|
if p != nil {
|
|
s.AddPlayer(p)
|
|
}
|
|
}
|
|
}
|
|
func (s *ThirteenWaterScene) Clear() {
|
|
for _, player := range s.players {
|
|
player.Clear()
|
|
}
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) AddPlayer(p base.IPlayer) {
|
|
if mp, ok := p.(*ThirteenWaterPlayer); ok {
|
|
s.players[p.GetSnId()] = mp
|
|
s.seats[p.GetPos()] = mp
|
|
}
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) DelPlayer(snid int32) {
|
|
if p, exist := s.players[snid]; exist && p != nil {
|
|
delete(s.players, snid)
|
|
s.seats[p.GetPos()] = nil
|
|
}
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) GetPlayerByPos(pos int32) base.IPlayer {
|
|
if pos >= 0 && pos < 8 {
|
|
return s.seats[pos]
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) GetPlayerBySnid(snid int32) base.IPlayer {
|
|
if p, exist := s.players[snid]; exist {
|
|
return p
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (this *ThirteenWaterScene) GetMe(s *netlib.Session) base.IPlayer {
|
|
if user, ok := s.GetAttribute(base.SessionAttributeUser).(*protoplayer.SCPlayerData); ok {
|
|
player := this.GetPlayerBySnid(user.GetData().GetSnId())
|
|
return player
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) IsFull() bool {
|
|
return len(s.players) >= 4
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) IsMatchScene() bool {
|
|
return s.RoomMode == common.SceneModeMatch
|
|
}
|
|
|
|
func (s *ThirteenWaterScene) Update(ts int64) {
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|