| 16 | import forge.util.*; |
| 17 | |
| 18 | public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> { |
| 19 | private final Localizer localizer = Localizer.getInstance(); |
| 20 | private final GameLog log; |
| 21 | public GameLogFormatter(GameLog gameLog) { |
| 22 | log = gameLog; |
| 23 | } |
| 24 | |
| 25 | @Override |
| 26 | public GameLogEntry visit(GameEventGameOutcome ev) { |
| 27 | // Turn number counted from the starting player |
| 28 | int lastTurn = (int)Math.ceil((float)ev.lastTurnNumber() / 2.0); |
| 29 | log.add(GameLogEntryType.GAME_OUTCOME, localizer.getMessage("lblTurn") + " " + lastTurn); |
| 30 | |
| 31 | for (String outcome : ev.outcomeStrings()) { |
| 32 | log.add(GameLogEntryType.GAME_OUTCOME, outcome); |
| 33 | } |
| 34 | return new GameLogEntry(GameLogEntryType.MATCH_RESULTS, ev.matchSummary()); |
| 35 | } |
| 36 | |
| 37 | @Override |
| 38 | public GameLogEntry visit(GameEventScry ev) { |
| 39 | String scryOutcome; |
| 40 | if (ev.toTop() > 0 && ev.toBottom() > 0) { |
| 41 | scryOutcome = localizer.getMessage("lblLogScryTopBottomLibrary").replace("%s", ev.player().toString()).replace("%top", String.valueOf(ev.toTop())).replace("%bottom", String.valueOf(ev.toBottom())); |
| 42 | } else if (ev.toBottom() == 0) { |
| 43 | scryOutcome = localizer.getMessage("lblLogScryTopLibrary").replace("%s", ev.player().toString()).replace("%top", String.valueOf(ev.toTop())); |
| 44 | } else { |
| 45 | scryOutcome = localizer.getMessage("lblLogScryBottomLibrary").replace("%s", ev.player().toString()).replace("%bottom", String.valueOf(ev.toBottom())); |
| 46 | } |
| 47 | |
| 48 | return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, scryOutcome); |
| 49 | } |
| 50 | |
| 51 | @Override |
| 52 | public GameLogEntry visit(GameEventSurveil ev) { |
| 53 | String surveilOutcome; |
| 54 | if (ev.toLibrary() > 0 && ev.toGraveyard() > 0) { |
| 55 | surveilOutcome = localizer.getMessage("lblLogSurveiledToLibraryGraveyard", ev.player(), ev.toLibrary(), ev.toGraveyard()); |
| 56 | } else if (ev.toGraveyard() == 0) { |
| 57 | surveilOutcome = localizer.getMessage("lblLogSurveiledToLibrary", ev.player(), ev.toLibrary()); |
| 58 | } else { |
| 59 | surveilOutcome = localizer.getMessage("lblLogSurveiledToGraveyard", ev.player(), ev.toGraveyard()); |
| 60 | } |
| 61 | |
| 62 | return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, surveilOutcome); |
| 63 | } |
| 64 | |
| 65 | @Override |
| 66 | public GameLogEntry visit(GameEventSpellResolved ev) { |
| 67 | String messageForLog = ev.hasFizzled() ? localizer.getMessage("lblLogCardAbilityFizzles", ev.spell().getHostCard().getName()) : ev.stackDescription(); |
| 68 | return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, messageForLog, ev.spell().getHostCard()); |
| 69 | } |
| 70 | |
| 71 | @Override |
| 72 | public GameLogEntry visit(GameEventSpellAbilityCast event) { |
| 73 | String player = event.si().getActivatingPlayer().getName(); |
| 74 | String action = event.sa().isSpell() ? localizer.getMessage("lblCast") |
| 75 | : event.si().isTrigger() ? localizer.getMessage("lblTriggered") |
nothing calls this directly
no test coverage detected