Chore: refactor; mark words [WIP]
This commit is contained in:
		| @@ -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 | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder