@Override public PlayerStore loadPlayerStore(String playerId) { EntityData.PlayerStore store = loadPlayerStoreData(playerId); if (store != null) { return new PlayerStoreInternal(playerId, store, entityManager); } return new PlayerStoreInternal(playerId, entityManager); }
@Override public DelayedEntityRef createDelayedEntityRef(long id) { DelayedEntityRef delayedEntityRef = new DelayedEntityRef(id); entitySetDeltaRecorder.registerDelayedEntityRef(delayedEntityRef); return delayedEntityRef; } }
private void addGlobalStoreBuilderToSaveTransaction(SaveTransactionBuilder transactionBuilder) { GlobalStoreBuilder globalStoreBuilder = new GlobalStoreBuilder(getEntityManager(), getPrefabSerializer()); transactionBuilder.setGlobalStoreBuilder(globalStoreBuilder); }
private SaveTransaction createSaveTransaction() { SaveTransactionBuilder saveTransactionBuilder = new SaveTransactionBuilder(privateEntityManager, entitySetDeltaRecorder, isStoreChunksInZips(), getStoragePathProvider(), worldDirectoryWriteLock, recordAndReplaySerializer, recordAndReplayUtils, recordAndReplayCurrentStatus); ChunkProvider chunkProvider = CoreRegistry.get(ChunkProvider.class); NetworkSystem networkSystem = CoreRegistry.get(NetworkSystem.class); addChunksToSaveTransaction(saveTransactionBuilder, chunkProvider); addPlayersToSaveTransaction(saveTransactionBuilder, networkSystem); addGlobalStoreBuilderToSaveTransaction(saveTransactionBuilder); addGameManifestToSaveTransaction(saveTransactionBuilder); return saveTransactionBuilder.build(); }
@Override public void checkAndRepairSaveIfNecessary() throws IOException { saveTransactionHelper.cleanupSaveTransactionDirectory(); if (Files.exists(getStoragePathProvider().getUnmergedChangesPath())) { saveTransactionHelper.mergeChanges(); } }
/** * Gets a path to next game preview image. * * @param savePath a path to saves directory * @return a path to preview image */ public static Path getNextGamePreviewImagePath(final Path savePath) { final StoragePathProvider storagePathProvider = new StoragePathProvider(savePath); final Path previewsDirPath = storagePathProvider.getPreviewsPath(); final List<Path> previewsPaths = getAllPathsToFilesInFolder(previewsDirPath); final String fileName = getNextPreviewImageName(previewsPaths); return previewsDirPath.resolve(fileName); }
@Override public void restoreEntities() { if (entityStore != null) { EntityRestorer restorer = new EntityRestorer(entityManager); Map<String, EntityRef> refMap = restorer.restore(entityStore); EntityRef loadedCharacter = refMap.get(CHARACTER); if (loadedCharacter != null) { setCharacter(loadedCharacter); } entityStore = null; } }
@Override public void waitForCompletionOfPreviousSaveAndStartSaving() { waitForCompletionOfPreviousSave(); startSaving(); }
@Override public void restoreEntities() { new EntityRestorer(entityManager).restore(entityStore); } }
public void onEntityComponentRemoved(EntityRef entity, Class<? extends Component> component) { if (entity.isPersistent()) { EntityDelta entityDelta = getOrCreateEntityDeltaFor(entity); entityDelta.removeComponent(component); } }
static SaveTransactionResult createSuccessResult() { return new SaveTransactionResult(null); }
public SaveTransaction build() { return new SaveTransaction(privateEntityManager, deltaToSave, unloadedPlayers, loadedPlayers, globalStoreBuilder, unloadedChunks, loadedChunks, gameManifest, storeChunksInZips, storagePathProvider, worldDirectoryWriteLock, recordAndReplaySerializer, recordAndReplayUtils, recordAndReplayCurrentStatus); }
@Override public void onEntityComponentAdded(EntityRef entity, Class<? extends Component> component) { entitySetDeltaRecorder.onEntityComponentAdded(entity, component); }
@Override public void onEntityComponentChange(EntityRef entity, Class<? extends Component> component) { entitySetDeltaRecorder.onEntityComponentChange(entity, component); }
@Override public void onEntityComponentRemoved(EntityRef entity, Class<? extends Component> component) { entitySetDeltaRecorder.onEntityComponentRemoved(entity, component); }
@Override public void onReactivation(EntityRef entity, Collection<Component> components) { entitySetDeltaRecorder.onReactivation(entity, components); }
@Override public void onEntityDestroyed(EntityRef entity) { entitySetDeltaRecorder.onEntityDestroyed(entity); }
@Override public void onBeforeDeactivation(EntityRef entity, Collection<Component> components) { entitySetDeltaRecorder.onBeforeDeactivation(entity, components); }
@Override public boolean isSaving() { return saveTransaction != null && saveTransaction.getResult() == null; }
static SaveTransactionResult createFailureResult(Throwable catchedThrowable) { return new SaveTransactionResult(catchedThrowable); }