Feat: switch team; team model
This commit is contained in:
@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"golias/models"
|
||||
"golias/utils"
|
||||
)
|
||||
|
||||
func createRoom(ctx context.Context, req *models.RoomReq) (*models.Room, error) {
|
||||
@ -140,3 +141,61 @@ func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) {
|
||||
}
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func joinTeam(ctx context.Context, role, team string) (*models.FullInfo, error) {
|
||||
// get username
|
||||
fi, _ := getFullInfoByCtx(ctx)
|
||||
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)
|
||||
// get room
|
||||
if role == "mime" {
|
||||
if team == "blue" {
|
||||
if fi.Room.BlueTeam.Mime != "" {
|
||||
// error: alredy taken
|
||||
err := errors.New("Mime role already taken!")
|
||||
return fi, err
|
||||
}
|
||||
fi.Room.BlueTeam.Mime = fi.State.Username
|
||||
fi.State.Team = "blue"
|
||||
fi.State.Role = "mime"
|
||||
if fi.Room.RedTeam.Mime == fi.State.Username {
|
||||
fi.Room.RedTeam.Mime = ""
|
||||
}
|
||||
} else if team == "red" {
|
||||
if fi.Room.RedTeam.Mime != "" {
|
||||
// error: alredy taken
|
||||
err := errors.New("Mime role already taken!")
|
||||
return fi, err
|
||||
}
|
||||
fi.Room.RedTeam.Mime = fi.State.Username
|
||||
fi.State.Team = "red"
|
||||
fi.State.Role = "mime"
|
||||
if fi.Room.BlueTeam.Mime == fi.State.Username {
|
||||
fi.Room.BlueTeam.Mime = ""
|
||||
}
|
||||
} else {
|
||||
err := errors.New("uknown team:" + team)
|
||||
return nil, err
|
||||
}
|
||||
} else if role == "guesser" {
|
||||
if team == "blue" {
|
||||
fi.Room.BlueTeam.Guessers = append(fi.Room.BlueTeam.Guessers, fi.State.Username)
|
||||
fi.State.Team = "blue"
|
||||
fi.State.Role = "guesser"
|
||||
} else if team == "red" {
|
||||
fi.Room.RedTeam.Guessers = append(fi.Room.RedTeam.Guessers, fi.State.Username)
|
||||
fi.State.Team = "red"
|
||||
fi.State.Role = "guesser"
|
||||
} else {
|
||||
err := errors.New("uknown team:" + team)
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
err := errors.New("uknown role:" + role)
|
||||
return nil, err
|
||||
}
|
||||
if err := saveFullInfoByUsername(fi.State.Username, fi); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return fi, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user