From d86a0dc2b0101dedf62b359a9d3c0a65fab418a2 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 6 Oct 2024 08:29:39 -0500 Subject: [PATCH] refactoring/renaming before adding N-sized world gen --- .../fullData/sources/FullDataSourceV2.java | 2 +- .../GeneratedFullDataSourceProvider.java | 16 ++++++---------- .../generation/tasks/IWorldGenTaskTracker.java | 3 --- .../core/generation/tasks/WorldGenTask.java | 4 ++-- .../core/generation/tasks/WorldGenTaskGroup.java | 8 ++++---- 5 files changed, 13 insertions(+), 20 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java index 28cb5cf80..3b6bb11f4 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java @@ -62,7 +62,7 @@ public class FullDataSourceV2 implements IDataSource /** measured in data columns */ public static final int WIDTH = 64; - /** how many chunks wide this datasource is. */ + /** how many chunks wide this datasource is at detail level 0. */ public static final int NUMB_OF_CHUNKS_WIDE = WIDTH / LodUtil.CHUNK_WIDTH; public static final byte DATA_FORMAT_VERSION = 1; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java index 71321ce71..ecb19bb52 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java @@ -219,8 +219,8 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im return false; } - GenTask genTask = new GenTask(genPos); - CompletableFuture worldGenFuture = worldGenQueue.submitRetrievalTask(genPos, (byte) (DhSectionPos.getDetailLevel(genPos) - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTask); + WorldGenTaskTracker genTaskTracker = new WorldGenTaskTracker(genPos); + CompletableFuture worldGenFuture = worldGenQueue.submitRetrievalTask(genPos, (byte) (DhSectionPos.getDetailLevel(genPos) - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTaskTracker); worldGenFuture.whenComplete((genTaskResult, ex) -> this.onWorldGenTaskComplete(genTaskResult, ex)); return true; @@ -385,23 +385,19 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im //================// // TODO may not be needed - private class GenTask implements IWorldGenTaskTracker + private class WorldGenTaskTracker implements IWorldGenTaskTracker { private final long pos; - public GenTask(long pos) { this.pos = pos; } + public WorldGenTaskTracker(long pos) { this.pos = pos; } - - @Override - public boolean isMemoryAddressValid() { return true; } - @Override public Consumer getDataSourceConsumer() { - return (chunkSizedFullDataSource) -> + return (dataSource) -> { - GeneratedFullDataSourceProvider.this.delayedFullDataSourceSaveCache.queueDataSourceForUpdateAndSave(chunkSizedFullDataSource); + GeneratedFullDataSourceProvider.this.delayedFullDataSourceSaveCache.queueDataSourceForUpdateAndSave(dataSource); }; } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/IWorldGenTaskTracker.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/IWorldGenTaskTracker.java index 1bb46f1a9..8a84ff0a9 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/IWorldGenTaskTracker.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/IWorldGenTaskTracker.java @@ -30,9 +30,6 @@ import java.util.function.Consumer; */ public interface IWorldGenTaskTracker { - /** Returns true if the task hasn't been garbage collected. */ - boolean isMemoryAddressValid(); - @Nullable Consumer getDataSourceConsumer(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java index 123e36167..8ee406364 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java @@ -19,6 +19,8 @@ package com.seibel.distanthorizons.core.generation.tasks; +import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider; + import java.util.concurrent.CompletableFuture; /** @@ -42,6 +44,4 @@ public final class WorldGenTask this.future = future; } - public boolean StillValid() { return this.taskTracker.isMemoryAddressValid(); } - } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java index 859363122..a45a922ba 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java @@ -45,21 +45,21 @@ public final class WorldGenTaskGroup this.dataDetail = dataDetail; } - public void consumeChunkData(FullDataSourceV2 chunkSizedFullDataView) + public void consumeDataSource(FullDataSourceV2 dataSource) { Iterator tasks = this.worldGenTasks.iterator(); while (tasks.hasNext()) { WorldGenTask task = tasks.next(); - Consumer chunkDataConsumer = task.taskTracker.getDataSourceConsumer(); - if (chunkDataConsumer == null) + Consumer dataSourceConsumer = task.taskTracker.getDataSourceConsumer(); + if (dataSourceConsumer == null) { tasks.remove(); task.future.complete(WorldGenResult.CreateFail()); } else { - chunkDataConsumer.accept(chunkSizedFullDataView); + dataSourceConsumer.accept(dataSource); } } }