File size: 630 Bytes
414dc55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"""Finalize an accusation into a scored, terminal GameState."""

from __future__ import annotations

from ..schemas.accusation import Accusation, Verdict
from ..schemas.case import CaseFile
from .game_state import GameState
from .scoring import score_accusation


def finalize_accusation(
    state: GameState, case: CaseFile, accusation: Accusation
) -> tuple[GameState, Verdict]:
    """Score the accusation and return a new, solved GameState plus the verdict."""
    verdict = score_accusation(case, accusation, state)
    new_state = state.model_copy(update={"solved": True, "verdict": verdict})
    return new_state, verdict