123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- package room
- import (
- "github.com/name5566/leaf/gate"
- )
- type Round struct {
-
- Round int
-
- RoundSitPos int
-
- RoundBet int
-
- RoundThinkTime int
-
- RoundEndTime int64
-
- OpLookCard bool
-
- OpBet bool
-
- OpPack bool
-
- OpOpenCard bool
- }
- type GameRound struct {
-
- Rounds []Round
- }
- const (
- RoomStatusWaiting = 0
- RoomStatusDealing = 1
- RoomStatusPlaying = 2
- )
- type Room struct {
- Id string
- Players []*Player
- Status int
-
- Round int
-
- RoundSitPos int
-
- GameRound *GameRound
-
- CardDeck []Card
- }
- type Card struct {
-
- Color int
-
- Point int
- }
- type Player struct {
- Id string
- Agent gate.Agent
- IsRobot bool
- UserData interface{}
-
- HandCards []Card
-
- SitPos int
-
- WaitCard bool
-
- IsLookCard bool
-
- IsPacked bool
-
- IsOpenCard bool
-
- IsSettle bool
-
- IsLeave bool
-
- IsReady bool
-
- IsDealer bool
- }
- func (p *Player) GetUserId() string {
- return p.Id
- }
- func (r *Room) AddPlayer(p *Player) {
- r.Players = append(r.Players, p)
- }
- func (r *Room) RemovePlayer(p *Player) {
- for i, player := range r.Players {
- if player.Id == p.Id {
- r.Players = append(r.Players[:i], r.Players[i+1:]...)
- break
- }
- }
- }
- func (r *Room) RemoveAllRobot() {
- for i, player := range r.Players {
- if player.IsRobot {
- r.Players = append(r.Players[:i], r.Players[i+1:]...)
- }
- }
- }
- func (r *Room) GetPlayer(id string) *Player {
- for _, player := range r.Players {
- if player.Id == id {
- return player
- }
- }
- return nil
- }
- func (r *Room) GetDealerPlayer() *Player {
- for _, player := range r.Players {
- if player.IsDealer {
- return player
- }
- }
- return nil
- }
- func (r *Room) SetDealerPlayer(p *Player) {
- for _, player := range r.Players {
- player.IsDealer = false
- }
- p.IsDealer = true
- }
- func (r *Room) GetWaitCardPlayers() []*Player {
- players := make([]*Player, 0)
- for _, player := range r.Players {
- if !player.WaitCard {
- players = append(players, player)
- }
- }
- return players
- }
- func (room *Room) GetPlayersBySitPos(startSitPos int) []*Player {
- players := make([]*Player, 0)
- maxSitPos := 5
-
- for sitPos := startSitPos; sitPos < maxSitPos; sitPos++ {
- for _, player := range room.Players {
- if player.SitPos == sitPos && !player.IsLeave {
- players = append(players, player)
- break
- }
- }
- }
-
- for sitPos := 0; sitPos < startSitPos; sitPos++ {
- for _, player := range room.Players {
- if player.SitPos == sitPos && !player.IsLeave {
- players = append(players, player)
- break
- }
- }
- }
- return players
- }
- func (r *Room) GetPlayerBySitPos(sitPos int) *Player {
- for _, player := range r.Players {
- if player.SitPos == sitPos {
- return player
- }
- }
- return nil
- }
- func (r *Room) AddPlayerOpt(round Round) {
- r.GameRound.Rounds = append(r.GameRound.Rounds, round)
- }
|