package models import ( "time" "github.com/rs/xid" ) type WordColor string const ( WordColorWhite = "white" WordColorBlue = "blue" WordColorRed = "red" WordColorBlack = "black" WordColorUknown = "beige" ) func StrToWordColor(s string) WordColor { switch s { case "white": return WordColorWhite case "blue": return WordColorBlue case "red": return WordColorRed case "black": return WordColorBlack default: return WordColorUknown } } type Team struct { Guessers []string Mime string } type Room struct { ID string `json:"id" db:"id"` CreatedAt time.Time `json:"created_at" db:"created_at"` // RoomName string `json:"room_name"` RoomPass string `json:"room_pass"` RoomLink string CreatorName string `json:"creator_name"` PlayerList []string `json:"player_list"` TeamTurn string RedTeam Team BlueTeam Team // RedMime string // BlueMime string // RedGuessers []string // BlueGuessers []string Cards []WordCard GameSettings *GameSettings `json:"settings"` Result uint8 // 0 for unknown; 1 is win for red; 2 if for blue; BlueCounter uint8 RedCounter uint8 RedTurn bool // false is blue turn } type WordCard struct { Word string Color WordColor Revealed bool } type GameSettings struct { IsRunning bool `json:"is_running"` Language string `json:"language" example:"en" form:"language"` RoundTime int32 `json:"round_time"` ProgressPct uint32 `json:"progress_pct"` IsOver bool } // ===== type RoomReq struct { // is not user or not unique RoomPass string `json:"room_pass" form:"room_pass"` RoomName string `json:"room_name" form:"room_name"` // GameSettings } func (rr *RoomReq) CreateRoom(creator string) *Room { roomID := xid.New().String() return &Room{ // RoomName: , RoomPass: rr.RoomPass, ID: roomID, CreatedAt: time.Now(), PlayerList: []string{creator}, CreatorName: creator, } } // ==== type FullInfo struct { State *UserState Room *Room }