/** * Player tries an answer * * @param PlayerId $playerId * @param Answer $move * @return GameResult */ private function playAnswer(PlayerId $playerId, Answer $move) { if ($errorEvent = $this->ensurePlayerCanPlay($playerId)) { $this->apply($errorEvent); return $errorEvent; } try { return $this->currentPlayerProposeAnswer($move->getText()); } catch (HangmanException $e) { $event = new HangmanPlayerProposedInvalidAnswerEvent($this->getId(), $playerId, $move); $this->apply($event); return $event; } }