114 lines
2.3 KiB
Go
114 lines
2.3 KiB
Go
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,
|
|
}
|
|
}
|