|
@@ -5,7 +5,7 @@ from pydantic import conint, constr
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
from .. import scoring
|
|
|
-from ..schemas import GameConfig, Guess
|
|
|
+from ..schemas import GameConfig, Guess, RuleSetEnum
|
|
|
from ..db import get_db, queries, models
|
|
|
from ..point_gen import generate_points, restock_source, ExhaustedSourceError
|
|
|
|
|
@@ -136,9 +136,17 @@ def get_first_submitter(game_id: str, round_number: conint(gt=0), db: Session =
|
|
|
|
|
|
|
|
|
@router.post("/{game_id}/round/{round_number}/guess/{player_id}", response_model=GuessResult)
|
|
|
-def submit_guess(round_number: conint(gt=0), guess: Guess, db: Session = Depends(get_db), player: models.Player = Depends(get_player)):
|
|
|
+def submit_guess(round_number: conint(gt=0),
|
|
|
+ guess: Guess,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ game: models.Game = Depends(get_game),
|
|
|
+ player: models.Player = Depends(get_player)):
|
|
|
target = queries.get_coordinate(db, player.game_id, round_number)
|
|
|
- score, distance = scoring.score((target.latitude, target.longitude), (guess.lat, guess.lng))
|
|
|
+ if game.rule_set == RuleSetEnum.country_race:
|
|
|
+ score = scoring.score_country_race(target.country_code, guess.country, guess.time_remaining, game.timer)
|
|
|
+ distance = None
|
|
|
+ else:
|
|
|
+ score, distance = scoring.score((target.latitude, target.longitude), (guess.lat, guess.lng))
|
|
|
added = queries.add_guess(db, guess, player, round_number, score)
|
|
|
if not added:
|
|
|
raise HTTPException(status_code=409, detail="Already submitted guess for this round")
|