/** * Empty the RecordedEventStore and sets the RecordAndReplayStatus. */ private void finishReplay() { recordedEventStore.popEvents(); recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.REPLAY_FINISHED); // stops the replay if every recorded event was already replayed }
@Override public boolean step() { //Activate record when the preparations are ready if (recordAndReplayCurrentStatus.getStatus() == RecordAndReplayStatus.PREPARING_RECORD) { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.RECORDING); } //Activate the replay when the preparations are ready if (recordAndReplayCurrentStatus.getStatus() == RecordAndReplayStatus.PREPARING_REPLAY) { recordAndReplaySerializer.deserializeRecordAndReplayData(); recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.REPLAYING); } return true; }
@After public void cleanStates() { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.NOT_ACTIVATED); }
private boolean isReplay() { boolean isReplay = false; if (recordAndReplayCurrentStatus.getStatus() == RecordAndReplayStatus.REPLAY_FINISHED || recordAndReplayCurrentStatus.getStatus() == RecordAndReplayStatus.REPLAYING) { isReplay = true; if (recordAndReplayUtils.isShutdownRequested()) { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.NOT_ACTIVATED); recordAndReplayUtils.reset(); } } return isReplay; }
private void saveRecordingData() { if (recordAndReplayCurrentStatus.getStatus() == RecordAndReplayStatus.RECORDING) { if (recordAndReplayUtils.isShutdownRequested()) { recordAndReplaySerializer.serializeRecordAndReplayData(); recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.NOT_ACTIVATED); recordAndReplayUtils.reset(); } else { String recordingPath = PathManager.getInstance().getRecordingPath(recordAndReplayUtils.getGameTitle()).toString(); recordAndReplaySerializer.serializeRecordedEvents(recordingPath); } } }
@Override public void initialise() { setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation()); RecordScreen recordScreen = getManager().createScreen(RecordScreen.ASSET_URI, RecordScreen.class); ReplayScreen replayScreen = getManager().createScreen(ReplayScreen.ASSET_URI, ReplayScreen.class); WidgetUtil.trySubscribe(this, "record", button -> { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.PREPARING_RECORD); RecordAndReplayUtils recordAndReplayUtils = engine.createChildContext().get(RecordAndReplayUtils.class); recordScreen.setRecordAndReplayUtils(recordAndReplayUtils); triggerForwardAnimation(recordScreen); }); WidgetUtil.trySubscribe(this, "replay", button -> { RecordAndReplayUtils recordAndReplayUtils = engine.createChildContext().get(RecordAndReplayUtils.class); replayScreen.setRecordAndReplayUtils(recordAndReplayUtils); recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.PREPARING_REPLAY); triggerForwardAnimation(replayScreen); }); WidgetUtil.trySubscribe(this, "credits", button -> triggerForwardAnimation(CreditsScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "telemetry", button -> triggerForwardAnimation(TelemetryScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "crashReporter", widget -> CrashReporter.report(new Throwable("There is no error."), LoggingContext.getLoggingPath(), CrashReporter.MODE.ISSUE_REPORTER)); WidgetUtil.trySubscribe(this, "close", button -> triggerBackAnimation()); }
@Override public void initialise() { setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation()); initWidgets(); if (isValidScreen()) { initSaveGamePathWidget(PathManager.getInstance().getSavesPath()); NameRecordingScreen nameRecordingScreen = getManager().createScreen(NameRecordingScreen.ASSET_URI, NameRecordingScreen.class); getGameInfos().subscribeSelection((widget, item) -> { load.setEnabled(item != null); updateDescription(item); }); getGameInfos().subscribe((widget, item) -> launchNamingScreen(nameRecordingScreen, item)); load.subscribe(button -> { final GameInfo gameInfo = getGameInfos().getSelection(); if (gameInfo != null) { launchNamingScreen(nameRecordingScreen, gameInfo); } }); close.subscribe(button -> { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.NOT_ACTIVATED); triggerBackAnimation(); }); } }
DirectionAndOriginPosRecorderList directionAndOriginPosRecorderList = new DirectionAndOriginPosRecorderList(); RecordAndReplaySerializer recordAndReplaySerializer = new RecordAndReplaySerializer(entityManager, eventStore, recordAndReplayUtils, characterStateEventPositionMap, directionAndOriginPosRecorderList, null); recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.REPLAYING); entity = entityManager.create(); Long id = entity.getId();
@Override public void initialise() { initWidgets(); if (isValidScreen()) { initSaveGamePathWidget(PathManager.getInstance().getRecordingsPath()); getGameInfos().subscribeSelection((widget, item) -> { load.setEnabled(item != null); delete.setEnabled(item != null); updateDescription(item); }); getGameInfos().subscribe((widget, item) -> loadGame(item)); load.subscribe(e -> { GameInfo gameInfo = getGameInfos().getSelection(); if (gameInfo != null) { loadGame(gameInfo); } }); delete.subscribe(button -> { TwoButtonPopup confirmationPopup = getManager().pushScreen(TwoButtonPopup.ASSET_URI, TwoButtonPopup.class); confirmationPopup.setMessage(translationSystem.translate("${engine:menu#remove-confirmation-popup-title}"), translationSystem.translate("${engine:menu#remove-confirmation-popup-message}")); confirmationPopup.setLeftButton(translationSystem.translate("${engine:menu#dialog-yes}"), this::removeSelectedReplay); confirmationPopup.setRightButton(translationSystem.translate("${engine:menu#dialog-no}"), () -> { }); }); close.subscribe(button -> { recordAndReplayCurrentStatus.setStatus(RecordAndReplayStatus.NOT_ACTIVATED); triggerBackAnimation(); }); } }