Files
golias/models/state.go
2025-05-11 13:59:25 +03:00

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,
}
}