package models import "time" type ( UserTeam string UserRole string ) const ( // UserTeam UserTeamBlue = "blue" UserTeamRed = "red" UserTeamNone = "" //UserRole UserRoleMime = "mime" UserRoleGuesser = "guesser" UserRoleNone = "" ) func StrToUserTeam(s string) UserTeam { switch s { case "blue": return UserTeamBlue case "red": return UserTeamRed default: return UserTeamNone } } func StrToUserRole(s string) UserRole { switch s { case "mime": return UserRoleMime case "guesser": return UserRoleGuesser default: return UserRoleNone } } type UserState struct { Username string RoomID string Team UserTeam Role UserRole } func (u *UserState) ExitRoom() { u.RoomID = "" u.Team = UserTeamNone u.Role = UserRoleNone } func MakeTestState(creatorName string) *FullInfo { cards := []WordCard{ {Word: "hamster", Color: "blue"}, {Word: "child", Color: "red"}, {Word: "wheel", Color: "white"}, {Word: "condition", Color: "black"}, {Word: "test", Color: "white"}, {Word: "ball", Color: "blue"}, {Word: "violin", Color: "red"}, {Word: "rat", Color: "white"}, {Word: "perplexity", Color: "blue"}, {Word: "notion", Color: "red"}, {Word: "guitar", Color: "blue"}, {Word: "ocean", Color: "blue"}, {Word: "moon", Color: "blue"}, {Word: "coffee", Color: "blue"}, {Word: "mountain", Color: "blue"}, {Word: "book", Color: "blue"}, {Word: "camera", Color: "blue"}, {Word: "apple", Color: "red"}, {Word: "fire", Color: "red"}, {Word: "rose", Color: "red"}, {Word: "sun", Color: "red"}, {Word: "cherry", Color: "red"}, {Word: "heart", Color: "red"}, {Word: "tomato", Color: "red"}, {Word: "cloud", Color: "white"}, } redTeam := Team{Guessers: []string{"Adam", "Eve"}, Mime: "Serpent", Color: "red"} blueTeam := Team{Guessers: []string{"Abel", "Kain"}, Color: "blue"} room := &Room{ ID: "test-id", CreatedAt: time.Now(), CreatorName: creatorName, Cards: cards, RedTeam: redTeam, BlueTeam: blueTeam, TeamTurn: "blue", } us := &UserState{ Username: creatorName, Team: UserTeamNone, Role: UserRoleNone, RoomID: "test-id", } return &FullInfo{ State: us, Room: room, } } func InitState(username string) *UserState { return &UserState{ Username: username, Team: UserTeamNone, Role: UserRoleNone, } }