Chore: refactor; mark words [WIP]

This commit is contained in:
Grail Finder
2025-06-27 13:22:00 +03:00
parent c5f04d348f
commit 72053281e2
7 changed files with 208 additions and 33 deletions

View File

@ -8,7 +8,6 @@ import (
"gralias/broker"
"gralias/llmapi"
"gralias/models"
"gralias/utils"
"gralias/wordloader"
"strings"
)
@ -173,22 +172,22 @@ func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) {
return resp, nil
}
func leaveRole(fi *models.FullInfo) {
fi.Room.RedTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.RedTeam.Guessers)
fi.Room.BlueTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.BlueTeam.Guessers)
if fi.Room.RedTeam.Mime == fi.State.Username {
fi.Room.RedTeam.Mime = ""
}
if fi.Room.BlueTeam.Mime == fi.State.Username {
fi.Room.BlueTeam.Mime = ""
}
}
// // DEPRECATED
// func leaveRole(fi *models.FullInfo) {
// fi.Room.RedTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.RedTeam.Guessers)
// fi.Room.BlueTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.BlueTeam.Guessers)
// if fi.Room.RedTeam.Mime == fi.State.Username {
// fi.Room.RedTeam.Mime = ""
// }
// if fi.Room.BlueTeam.Mime == fi.State.Username {
// fi.Room.BlueTeam.Mime = ""
// }
// }
func joinTeam(ctx context.Context, role, team string) (*models.FullInfo, error) {
// get username
fi, _ := getFullInfoByCtx(ctx)
// leave gueesers if present
leaveRole(fi)
fi.Room.RemovePlayer(fi.State.Username)
// get room
if role == "mime" {
if team == "blue" {
@ -367,3 +366,31 @@ func recoverPlayer(pm map[string]string) error {
}
return saveState(pm["Username"], us)
}
// validateMove checks if it is players turn
func validateMove(fi *models.FullInfo, ur models.UserRole) error {
if fi.State.Role != ur {
err := fmt.Errorf("need to be %s to make that action", ur)
return err
}
// whos move it is?
if fi.State.Team != models.UserTeam(fi.Room.TeamTurn) {
err := errors.New("not your team's move")
return err
}
switch ur {
case models.UserRoleGuesser:
if !fi.Room.MimeDone {
err := errors.New("wait for the mime to give a clue")
return err
}
case models.UserRoleMime:
if fi.Room.MimeDone {
err := errors.New("clue was already given")
return err
}
default:
return fmt.Errorf("uknown user role: %s", ur)
}
return nil
}