From f094aae367211d5b5f48468762a9fe9696288e89 Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 15 May 2024 23:57:25 +0700 Subject: [PATCH 01/16] Fluids updater in kotlin --- .../GameWorldFluidsLogicControllerTask.java | 223 ------------------ .../GameWorldFluidsLogicControllerTask.kt | 189 +++++++++++++++ 2 files changed, 189 insertions(+), 223 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.java create mode 100644 core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.java b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.java deleted file mode 100644 index 416721f..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.java +++ /dev/null @@ -1,223 +0,0 @@ -package ru.deadsoftware.cavedroid.game.world; - -import com.badlogic.gdx.utils.Timer; -import ru.deadsoftware.cavedroid.game.GameItemsHolder; -import ru.deadsoftware.cavedroid.game.GameScope; -import ru.deadsoftware.cavedroid.game.mobs.MobsController; -import ru.deadsoftware.cavedroid.game.model.block.Block; - -import javax.annotation.CheckForNull; -import javax.inject.Inject; -import java.util.*; - -@GameScope -public class GameWorldFluidsLogicControllerTask extends Timer.Task { - - public static final float FLUID_UPDATE_INTERVAL_SEC = 0.25f; - - private short mUpdateTick = 0; - - private final GameWorld mGameWorld; - private final MobsController mMobsController; - private final GameItemsHolder mGameItemsHolder; - - private final Map, List> mFluidStatesMap; - - private final class UpdateCommand { - final Runnable command; - final int priority; - - private UpdateCommand(int priority, Runnable command) { - this.priority = priority; - this.command = command; - } - - private UpdateCommand(Block block, int x, int y, int priority) { - this(priority, () -> mGameWorld.setForeMap(x, y, block)); - } - - private UpdateCommand(Block.Fluid fluid, int x, int y) { - this(fluid, x, y, ((5 -fluid.getState() )+ 1) * (fluid.isLava() ? 2 : 1)); - } - - private int getPriority() { - return priority; - } - - private void exec() { - command.run(); - } - } - - private final PriorityQueue mUpdateQueue - = new PriorityQueue<>(Comparator.comparingInt(UpdateCommand::getPriority)); - - @Inject - GameWorldFluidsLogicControllerTask(GameWorld gameWorld, - MobsController mobsController, - GameItemsHolder gameItemsHolder) { - mGameWorld = gameWorld; - mMobsController = mobsController; - mGameItemsHolder = gameItemsHolder; - - final List waters = mGameItemsHolder.getBlocksByType(Block.Water.class); - waters.sort(Comparator.comparingInt(Block.Water::getState)); - - final List lavas = mGameItemsHolder.getBlocksByType(Block.Lava.class); - lavas.sort(Comparator.comparingInt(Block.Lava::getState)); - - mFluidStatesMap = new HashMap<>(); - mFluidStatesMap.put(Block.Water.class, waters); - mFluidStatesMap.put(Block.Lava.class, lavas); - } - - @CheckForNull - private List getFluidStateList(Block.Fluid fluid) { - return mFluidStatesMap.get(fluid.getClass()); - } - - private int getCurrentStateIndex(Block.Fluid fluid) { - @CheckForNull final List stateList = getFluidStateList(fluid); - - if (stateList == null) { - return -1; - } - - return stateList.indexOf(fluid); - } - - @CheckForNull - private Block.Fluid getNextStateBlock(Block.Fluid fluid) { - @CheckForNull final List stateList = getFluidStateList(fluid); - - if (stateList == null) { - return null; - } - - int currentState = stateList.indexOf(fluid); - - if (currentState < 0) { - return null; - } - - int nextState = currentState + 1; - - if (nextState == 1) { - nextState++; - } - - if (nextState < stateList.size()) { - return stateList.get(nextState); - } - - return null; - } - - private boolean noFluidNearby(int x, int y) { - return !mGameWorld.getForeMap(x, y - 1).isFluid() && - (!mGameWorld.getForeMap(x - 1, y).isFluid() || ((Block.Fluid)mGameWorld.getForeMap(x - 1, y)).getState() >= ((Block.Fluid)mGameWorld.getForeMap(x, y)).getState()) && - (!mGameWorld.getForeMap(x + 1, y).isFluid() || ((Block.Fluid)mGameWorld.getForeMap(x + 1, y)).getState() >= ((Block.Fluid)mGameWorld.getForeMap(x, y)).getState()); - } - - private boolean drainFluid(int x, int y) { - final Block block = mGameWorld.getForeMap(x, y); - - if (!(block instanceof Block.Fluid fluid)) { - return true; - } - - if (fluid.getState() > 0) { - if (noFluidNearby(x, y)) { - @CheckForNull final Block.Fluid nextState = getNextStateBlock(fluid); - if (nextState == null) { - mUpdateQueue.offer(new UpdateCommand(-1, () -> mGameWorld.resetForeMap(x, y))); - return true; - } - - mUpdateQueue.offer(new UpdateCommand(nextState, x, y)); - } - } - return false; - } - - private boolean fluidCanFlowThere(Block.Fluid fluid, Block targetBlock) { - return targetBlock == mGameItemsHolder.getFallbackBlock() || - (!targetBlock.getParams().getHasCollision() && !targetBlock.isFluid()) || - (fluid.getClass() == targetBlock.getClass() && fluid.getState() < ((Block.Fluid)targetBlock).getState()); - } - - private void flowFluidTo(Block.Fluid currentFluid, int x, int y, Block.Fluid nextStateFluid) { - final Block targetBlock = mGameWorld.getForeMap(x, y); - - if (fluidCanFlowThere(currentFluid, targetBlock)) { - mUpdateQueue.offer(new UpdateCommand(nextStateFluid, x, y)); - } else if (currentFluid.isWater() && targetBlock.isLava()) { - if (((Block.Lava)targetBlock).getState() > 0) { - mUpdateQueue.offer(new UpdateCommand(100, () -> mGameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("cobblestone")))); - } else { - mUpdateQueue.offer(new UpdateCommand(300, () -> mGameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("obsidian")))); - } - } else if (currentFluid.isLava() && targetBlock.isWater()) { - mUpdateQueue.offer(new UpdateCommand(200, () -> mGameWorld.setForeMap(x, y, mGameItemsHolder.getBlock("stone")))); - } - } - - private void flowFluid(int x, int y) { - Block.Fluid fluid = (Block.Fluid) mGameWorld.getForeMap(x, y); - @CheckForNull final List stateList = getFluidStateList(fluid); - - if (stateList == null) { - return; - } - - if (fluid.getState() < stateList.size() - 1 && mGameWorld.getForeMap(x, y + 1).hasCollision()) { - @CheckForNull Block.Fluid nextState = getNextStateBlock(fluid); - - if (nextState == null) { - return; - } - - flowFluidTo(fluid, x - 1, y, nextState); - flowFluidTo(fluid, x + 1, y, nextState); - } else { - flowFluidTo(fluid, x, y + 1, stateList.get(1)); - } - - } - - private void updateFluids(int x, int y) { - final Block block = mGameWorld.getForeMap(x, y); - if (!block.isFluid() || (block.isLava() && mUpdateTick % 2 == 0)) { - return; - } - if (drainFluid(x, y)) { - return; - } - flowFluid(x, y); - } - - private void fluidUpdater() { - int midScreen = (int) mMobsController.getPlayer().x / 16; - for (int y = mGameWorld.getHeight() - 1; y >= 0; y--) { - for (int x = 0; x <= Math.min(mGameWorld.getWidth() / 2, 32); x++) { - updateFluids(midScreen + x, y); - updateFluids(midScreen - x, y); - } - } - - while (!mUpdateQueue.isEmpty()) { - final UpdateCommand command = mUpdateQueue.poll(); - command.exec(); - } - } - - @Override - public void run() { - if (mUpdateTick < 0xFF) { - mUpdateTick ++; - } else { - mUpdateTick = 0; - } - fluidUpdater(); - } -} diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt new file mode 100644 index 0000000..d0f4eaa --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt @@ -0,0 +1,189 @@ +package ru.deadsoftware.cavedroid.game.world + +import com.badlogic.gdx.utils.Timer +import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.GameScope +import ru.deadsoftware.cavedroid.game.mobs.MobsController +import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.misc.utils.bl +import java.util.PriorityQueue +import javax.inject.Inject +import kotlin.math.min +import kotlin.reflect.KClass + +@GameScope +class GameWorldFluidsLogicControllerTask @Inject constructor( + private val gameWorld: GameWorld, + private val mobsController: MobsController, + private val gameItemsHolder: GameItemsHolder, +) : Timer.Task() { + + private var updateTick: Short = 0; + + private val fluidStatesMap = mutableMapOf, List>() + + private val updateQueue = PriorityQueue(16) { c1, c2 -> + c1.priority.compareTo(c2.priority) + } + + init { + val waters = gameItemsHolder.getBlocksByType(Block.Water::class.java) + .sortedBy(Block.Water::state) + val lavas = gameItemsHolder.getBlocksByType(Block.Lava::class.java) + .sortedBy(Block.Lava::state) + + fluidStatesMap[Block.Water::class] = waters + fluidStatesMap[Block.Lava::class] = lavas + } + + private fun getNextStateBlock(fluid: Block.Fluid): Block.Fluid? { + val stateList = fluidStatesMap[fluid::class] ?: return null + val currentState = stateList.indexOf(fluid) + .takeIf { it >= 0 } ?: return null + + var nextState = currentState + 1 + + if (nextState == 1) { + nextState++ + } + + if (nextState < stateList.size) { + return stateList[nextState] + } + + return null + } + + private fun noFluidNearby(x: Int, y: Int): Boolean { + val current = gameWorld.getForeMap(x, y) + + if (current !is Block.Fluid) { + throw IllegalArgumentException("block at $x;$y is not a fluid") + } + + val onTop = gameWorld.getForeMap(x, y - 1) + val onLeft = gameWorld.getForeMap(x - 1, y) + val onRight = gameWorld.getForeMap(x + 1, y) + + return !onTop.isFluid() && + (onLeft !is Block.Fluid || onLeft.state >= current.state) && + (onRight !is Block.Fluid || onRight.state >= current.state) + } + + private fun drainFluid(x: Int, y: Int): Boolean { + val fluid = (gameWorld.getForeMap(x, y) as? Block.Fluid) + ?: return true + + if (fluid.state > 0) { + if (noFluidNearby(x, y)) { + val nexState = getNextStateBlock(fluid) + if (nexState == null) { + updateQueue.offer(UpdateCommand(-1) { gameWorld.resetForeMap(x, y) }) + return true + } + updateQueue.offer(UpdateCommand(nexState, x, y)) + } + } + + return false + } + + private fun fluidCanFlowThere(fluid: Block.Fluid, targetBlock: Block): Boolean { + return targetBlock.isNone() || + (!targetBlock.params.hasCollision && !targetBlock.isFluid()) || + (fluid::class == targetBlock::class && fluid.state < (targetBlock as Block.Fluid).state) + } + + private fun flowFluidTo(currentFluid: Block.Fluid, x: Int, y: Int, nextStateFluid: Block.Fluid) { + val targetBlock = gameWorld.getForeMap(x, y) + + val command = when { + fluidCanFlowThere(currentFluid, targetBlock) -> UpdateCommand(nextStateFluid, x, y) + + currentFluid.isWater() && targetBlock is Block.Lava && targetBlock.state > 0 -> + UpdateCommand(100) { gameWorld.setForeMap(x, y, gameItemsHolder.getBlock("cobblestone")) } + + currentFluid.isWater() && targetBlock.isLava() -> + UpdateCommand(100) { gameWorld.setForeMap(x, y, gameItemsHolder.getBlock("obsidian")) } + + currentFluid.isLava() && targetBlock.isWater() -> + UpdateCommand(200) { gameWorld.setForeMap(x, y, gameItemsHolder.getBlock("stone")) } + + else -> null + } + + command?.let(updateQueue::offer) + } + + private fun flowFluid(x: Int, y: Int) { + val fluid = gameWorld.getForeMap(x, y) as Block.Fluid + val stateList = fluidStatesMap[fluid::class] ?: return + + if (fluid.state < stateList.lastIndex && gameWorld.getForeMap(x, y + 1).params.hasCollision) { + val nextState = getNextStateBlock(fluid) ?: return + + flowFluidTo(fluid, x - 1, y, nextState) + flowFluidTo(fluid, x + 1, y, nextState) + } else { + flowFluidTo(fluid, x, y + 1, stateList[1]) + } + } + + fun updateFluids(x: Int, y: Int) { + val block = gameWorld.getForeMap(x, y) + if (!block.isFluid() || (block.isLava() && updateTick % 2 == 0)) { + return + } + + if (drainFluid(x, y)) { + return + } + + flowFluid(x, y) + } + + private fun fluidUpdater() { + val midScreen = mobsController.player.x.bl + + for (y in gameWorld.height - 1 downTo 0) { + for (x in 0 ..< min(gameWorld.width / 2, 32)) { + updateFluids(midScreen + x, y) + updateFluids(midScreen - x, y) + } + } + + while (!updateQueue.isEmpty()) { + updateQueue.poll().exec() + } + } + + override fun run() { + if (updateTick < 0xFF) { + updateTick++ + } else { + updateTick = 1 + } + + fluidUpdater() + } + + private inner class UpdateCommand( + val priority: Int, + val command: Runnable + ) { + + constructor(block: Block, x: Int, y: Int, priority: Int) : + this(priority, Runnable { gameWorld.setForeMap(x, y, block) }) + + constructor(fluid: Block.Fluid, x: Int, y: Int) : + this(fluid, x, y, ((5 - fluid.state) + 1) * (if (fluid.isLava()) 2 else 1)) + + fun exec() = command.run() + + } + + companion object { + const val FLUID_UPDATE_INTERVAL_SEC = 0.25f + } + +} \ No newline at end of file -- 2.29.2 From 947f14cbeb9db09ca1ed5e80f6a66ebba193e855 Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 15 May 2024 23:59:04 +0700 Subject: [PATCH 02/16] Lower min android api --- android/build.gradle | 4 +++- core/build.gradle | 2 +- .../ru/deadsoftware/cavedroid/game/GameRenderer.java | 11 +++++++++-- .../cavedroid/game/objects/drop/DropController.java | 8 ++++++-- core/src/ru/deadsoftware/cavedroid/misc/Assets.java | 4 +++- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index bf1af00..d52b9e9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -37,10 +37,12 @@ android { } defaultConfig { applicationId "ru.deadsoftware.cavedroid" - minSdkVersion 24 + minSdkVersion 19 targetSdkVersion 34 versionCode 25 versionName "alpha0.9.2" + + multiDexEnabled true } applicationVariants.all { variant -> variant.outputs.all { diff --git a/core/build.gradle b/core/build.gradle index 7aff468..3b061a7 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -22,5 +22,5 @@ dependencies { implementation 'org.jetbrains:annotations:23.1.0' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion" - annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" + ksp "com.google.dagger:dagger-compiler:$daggerVersion" } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java index 0dcbefc..93dc8b9 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -82,7 +82,12 @@ public class GameRenderer extends Renderer { mMobsController = mobsController; mGameWorld = gameWorld; mRenderers = new ArrayList<>(renderers); - mRenderers.sort(Comparator.comparingInt(IGameRenderer::getRenderLayer)); + kotlin.collections.CollectionsKt.sortWith(mRenderers, new Comparator() { + @Override + public int compare(IGameRenderer o1, IGameRenderer o2) { + return o1.getRenderLayer() - o2.getRenderLayer(); + } + }); mCursorMouseInputHandler = cursorMouseInputHandler; mMouseInputActionMapper = mouseInputActionMapper; mKeyboardInputActionMapper = keyboardInputActionMapper; @@ -375,7 +380,9 @@ public class GameRenderer extends Renderer { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); spriter.begin(); - mRenderers.forEach(iGameRenderer -> iGameRenderer.draw(spriter, shaper, getCameraViewport(), delta)); + for (IGameRenderer iGameRenderer : mRenderers) { + iGameRenderer.draw(spriter, shaper, getCameraViewport(), delta); + } handleMousePosition(); spriter.end(); diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java index 6666fc8..0213c97 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java @@ -25,7 +25,9 @@ public class DropController implements Serializable { } public void initDrops(GameItemsHolder gameItemsHolder) { - mDrops.forEach((drop) -> drop.initItem(gameItemsHolder)); + for (Drop drop : mDrops) { + drop.initItem(gameItemsHolder); + } } public void addDrop(float x, float y, Item item) { @@ -48,7 +50,9 @@ public class DropController implements Serializable { } public void forEach(Callback callback) { - mDrops.forEach(callback::run); + for (Drop drop : mDrops) { + callback.run(drop); + } } public Iterator getIterator() { diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Assets.java b/core/src/ru/deadsoftware/cavedroid/misc/Assets.java index 71cad7a..893414b 100644 --- a/core/src/ru/deadsoftware/cavedroid/misc/Assets.java +++ b/core/src/ru/deadsoftware/cavedroid/misc/Assets.java @@ -49,7 +49,9 @@ public class Assets { public static void dispose() { minecraftFont.dispose(); - loadedTextures.forEach(Texture::dispose); + for (Texture texture : loadedTextures) { + texture.dispose(); + } loadedTextures.clear(); } -- 2.29.2 From 1e285247085ba04351feb486a0be6aa577f43093 Mon Sep 17 00:00:00 2001 From: fredboy Date: Thu, 16 May 2024 01:43:26 +0700 Subject: [PATCH 03/16] Add my repo for automultibind --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 1e317b0..60a1bb3 100644 --- a/build.gradle +++ b/build.gradle @@ -39,5 +39,6 @@ allprojects { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } maven { url "https://jitpack.io" } + maven { url "https://mvn.fredboy.ru/releases/" } } } -- 2.29.2 From 6bb7e1d207c640ff3b8e41ce2fb1c6203985bdb1 Mon Sep 17 00:00:00 2001 From: fredboy Date: Sun, 19 May 2024 19:57:04 +0700 Subject: [PATCH 04/16] Abstract falling block --- android/assets/json/game_items.json | 6 +- .../updateblock/UpdateBedLeftAction.kt | 2 - .../updateblock/UpdateBedRightAction.kt | 2 - .../actions/updateblock/UpdateGravelAction.kt | 30 -------- .../updateblock/UpdateRequiresBlockAction.kt | 14 +++- .../actions/updateblock/UpdateSandAction.kt | 30 -------- .../cavedroid/game/mobs/FallingBlock.kt | 53 ++++++++++++++ .../cavedroid/game/mobs/FallingGravel.java | 72 ------------------ .../cavedroid/game/mobs/FallingSand.java | 73 ------------------- .../deadsoftware/cavedroid/game/mobs/Mob.java | 3 +- .../game/model/block/CommonBlockParams.kt | 1 + .../cavedroid/game/model/dto/BlockDto.kt | 1 + .../game/model/mapper/BlockMapper.kt | 1 + .../GameWorldBlocksLogicControllerTask.kt | 2 +- 14 files changed, 75 insertions(+), 215 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGravelAction.kt delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSandAction.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java diff --git a/android/assets/json/game_items.json b/android/assets/json/game_items.json index 5c11576..245ebb0 100644 --- a/android/assets/json/game_items.json +++ b/android/assets/json/game_items.json @@ -108,14 +108,16 @@ "drop": "sand", "texture": "sand", "tool_level": 0, - "tool_type": "shovel" + "tool_type": "shovel", + "fallable": true }, "gravel": { "hp": 54, "drop": "gravel", "texture": "gravel", "tool_level": 0, - "tool_type": "shovel" + "tool_type": "shovel", + "fallable": true }, "gold_ore": { "hp": 900, diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt index 5507550..c23b80f 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt @@ -2,8 +2,6 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope -import ru.deadsoftware.cavedroid.game.mobs.FallingGravel -import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction import javax.inject.Inject diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt index 42f551e..cd8b2d3 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt @@ -2,8 +2,6 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope -import ru.deadsoftware.cavedroid.game.mobs.FallingGravel -import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction import javax.inject.Inject diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGravelAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGravelAction.kt deleted file mode 100644 index 3c52418..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGravelAction.kt +++ /dev/null @@ -1,30 +0,0 @@ -package ru.deadsoftware.cavedroid.game.actions.updateblock - -import ru.deadsoftware.cavedroid.game.GameScope -import ru.deadsoftware.cavedroid.game.mobs.FallingGravel -import ru.deadsoftware.cavedroid.game.mobs.MobsController -import ru.deadsoftware.cavedroid.game.world.GameWorld -import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction -import javax.inject.Inject - -@GameScope -@BindUpdateBlockAction(stringKey = UpdateGravelAction.BLOCK_KEY) -class UpdateGravelAction @Inject constructor( - private val gameWorld: GameWorld, - private val mobsController: MobsController, -) : IUpdateBlockAction { - - override fun update(x: Int, y: Int) { - val shouldFall = gameWorld.getForeMap(x, y + 1).params.hasCollision.not() - - if (shouldFall) { - gameWorld.resetForeMap(x, y) - FallingGravel(x * 16f, y * 16f) - .apply { attachToController(mobsController) } - } - } - - companion object { - const val BLOCK_KEY = "gravel" - } -} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt index 05d9863..53f56e3 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt @@ -1,19 +1,31 @@ package ru.deadsoftware.cavedroid.game.actions.updateblock import ru.deadsoftware.cavedroid.game.GameScope +import ru.deadsoftware.cavedroid.game.mobs.FallingBlock +import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction +import ru.deadsoftware.cavedroid.misc.utils.px import javax.inject.Inject @GameScope @BindUpdateBlockAction(stringKey = UpdateRequiresBlockAction.ACTION_KEY) class UpdateRequiresBlockAction @Inject constructor( private val gameWorld: GameWorld, + private val mobsController: MobsController, ) : IUpdateBlockAction { override fun update(x: Int, y: Int) { if (gameWorld.getForeMap(x, y + 1).params.hasCollision.not()) { - gameWorld.destroyForeMap(x, y) + val block = gameWorld.getForeMap(x, y) + + if (block.params.isFallable) { + gameWorld.resetForeMap(x, y) + FallingBlock(block.params.key, x.px, y.px) + .attachToController(mobsController) + } else { + gameWorld.destroyForeMap(x, y) + } } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSandAction.kt b/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSandAction.kt deleted file mode 100644 index ac1ff8a..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSandAction.kt +++ /dev/null @@ -1,30 +0,0 @@ -package ru.deadsoftware.cavedroid.game.actions.updateblock - -import ru.deadsoftware.cavedroid.game.GameScope -import ru.deadsoftware.cavedroid.game.mobs.FallingSand -import ru.deadsoftware.cavedroid.game.mobs.MobsController -import ru.deadsoftware.cavedroid.game.world.GameWorld -import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindUpdateBlockAction -import javax.inject.Inject - -@GameScope -@BindUpdateBlockAction(stringKey = UpdateSandAction.BLOCK_KEY) -class UpdateSandAction @Inject constructor( - private val gameWorld: GameWorld, - private val mobsController: MobsController, -) : IUpdateBlockAction { - - override fun update(x: Int, y: Int) { - val shouldFall = gameWorld.getForeMap(x, y + 1).params.hasCollision.not() - - if (shouldFall) { - gameWorld.resetForeMap(x, y) - FallingSand(x * 16f, y * 16f) - .apply { attachToController(mobsController) } - } - } - - companion object { - const val BLOCK_KEY = "sand" - } -} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt new file mode 100644 index 0000000..f273504 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt @@ -0,0 +1,53 @@ +package ru.deadsoftware.cavedroid.game.mobs + +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.game.world.GameWorld +import ru.deadsoftware.cavedroid.misc.utils.bl +import ru.deadsoftware.cavedroid.misc.utils.px + +class FallingBlock( + private val blockKey: String, + x: Float, + y: Float, +) : Mob(x, y, 1.px, 1.px, Direction.RIGHT, Type.FALLING_BLOCK, Int.MAX_VALUE) { + + @Transient + private var _block: Block? = null + + init { + velocity.y = 1f + } + + override fun changeDir() = Unit + + override fun getSpeed() = 0f + + override fun jump() = Unit + + override fun ai( + gameWorld: GameWorld, + gameItemsHolder: GameItemsHolder, + mobsController: MobsController, + delta: Float + ) { + if (_block == null) { + _block = gameItemsHolder.getBlock(blockKey) + } + + if (velocity.isZero) { + gameWorld.setForeMap(x.bl, y.bl, _block) + kill() + } + } + + override fun draw( + spriteBatch: SpriteBatch, + x: Float, + y: Float, + delta: Float + ) { + _block?.draw(spriteBatch, x, y) + } +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java deleted file mode 100644 index 2ad4287..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingGravel.java +++ /dev/null @@ -1,72 +0,0 @@ -package ru.deadsoftware.cavedroid.game.mobs; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.math.Vector2; -import ru.deadsoftware.cavedroid.game.GameItemsHolder; -import ru.deadsoftware.cavedroid.game.world.GameWorld; -import ru.deadsoftware.cavedroid.misc.Assets; - -import javax.annotation.CheckForNull; - -/** - * Falling gravel is actually a mob, that spawns in place of gravel when there is no block under it, - * falls down to the next block and becomes a block of gravel again. - */ -public class FallingGravel extends Mob { - - private static final String TAG = "FallingGravel"; - - /** - * Creates a FallingGravel mob at coordinates - * - * @param x X in pixels - * @param y Y in pixels - */ - public FallingGravel(float x, float y) { - super(x, y, 16, 16, Direction.LEFT, Type.GRAVEL, Integer.MAX_VALUE); - mVelocity = new Vector2(0, 1); - } - - @Override - public float getSpeed() { - return 0; - } - - @Override - public void jump() { - // no-op - } - - @Override - public void ai(GameWorld gameWorld, GameItemsHolder gameItemsHolder, MobsController mobsController, float delta) { - if (mVelocity.isZero()) { - gameWorld.setForeMap(getMapX(), getUpperMapY(), gameItemsHolder.getBlock("gravel")); - kill(); - } - } - - @Override - public void changeDir() { - } - - @Override - public void damage(int damage) { - // no-op - } - - @Override - public void draw(SpriteBatch spriteBatch, float x, float y, float delta) { - @CheckForNull final Texture texture = Assets.blockTextures.get("gravel"); - - if (texture == null) { - Gdx.app.error(TAG, "Couldn't draw: texture not found"); - kill(); - return; - } - - spriteBatch.draw(texture, x, y); - } - -} diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java deleted file mode 100644 index 970ff53..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingSand.java +++ /dev/null @@ -1,73 +0,0 @@ -package ru.deadsoftware.cavedroid.game.mobs; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.math.Vector2; -import ru.deadsoftware.cavedroid.game.GameItemsHolder; -import ru.deadsoftware.cavedroid.game.world.GameWorld; -import ru.deadsoftware.cavedroid.misc.Assets; - -import javax.annotation.CheckForNull; - - -/** - * Falling sand is actually a mob, that spawns in place of gravel when there is no block under it, - * falls down to the next block and becomes a block of sand again. - */ -public class FallingSand extends Mob { - - private static final String TAG = "FallingSand"; - - /** - * Creates a FallingSand mob at coordinates - * - * @param x X in pixels - * @param y Y in pixels - */ - public FallingSand(float x, float y) { - super(x, y, 16, 16, Direction.LEFT, Type.SAND, Integer.MAX_VALUE); - mVelocity = new Vector2(0, 1); - } - - @Override - public float getSpeed() { - return 0; - } - - @Override - public void jump() { - // no-op - } - - @Override - public void ai(GameWorld gameWorld, GameItemsHolder gameItemsHolder, MobsController mobsController, float delta) { - if (mVelocity.isZero()) { - gameWorld.setForeMap(getMapX(), getUpperMapY(), gameItemsHolder.getBlock("sand")); - kill(); - } - } - - @Override - public void changeDir() { - } - - @Override - public void damage(int damage) { - // no-op - } - - @Override - public void draw(SpriteBatch spriteBatch, float x, float y, float delta) { - @CheckForNull final Texture texture = Assets.blockTextures.get("sand"); - - if (texture == null) { - Gdx.app.error(TAG, "Couldn't draw: texture not found"); - kill(); - return; - } - - spriteBatch.draw(texture, x, y); - } - -} diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index 62ddc50..04fa1bb 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -27,8 +27,7 @@ public abstract class Mob extends Rectangle implements Serializable { public enum Type { MOB, - SAND, - GRAVEL + FALLING_BLOCK } public enum Direction { diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt b/core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt index 369f752..1945462 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt @@ -19,4 +19,5 @@ data class CommonBlockParams( val toolType: Class?, val damage: Int, val tint: String?, + val isFallable: Boolean, ) diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt b/core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt index 69b1f18..ecbe5bf 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt @@ -31,4 +31,5 @@ data class BlockDto( @SerialName("tool_type") val toolType: String? = null, @SerialName("damage") val damage: Int = 0, @SerialName("tint") val tint: String? = null, + @SerialName("fallable") val fallable: Boolean = false, ) diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt index 1b641ed..19d8c47 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt @@ -57,6 +57,7 @@ class BlockMapper @Inject constructor( toolType = mapToolType(dto), damage = dto.damage, tint = dto.tint, + isFallable = dto.fallable, ) } diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt index 387407a..e92b9e2 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt @@ -33,7 +33,7 @@ class GameWorldBlocksLogicControllerTask @Inject constructor( val blockKey = block.params.key val action = updateBlockActions[blockKey] - ?: updateBlockActions.getRequiresBlockAction().takeIf { block.params.requiresBlock } + ?: updateBlockActions.getRequiresBlockAction().takeIf { block.params.run { requiresBlock || isFallable } } action?.update(x, y) } -- 2.29.2 From 90daad1796cd59f11f12589686d9afe882ddb9b1 Mon Sep 17 00:00:00 2001 From: fredboy Date: Sun, 19 May 2024 21:21:30 +0700 Subject: [PATCH 05/16] Add food --- android/assets/json/game_items.json | 13 ++++++++++++ .../pp/textures/items/porkchop_cooked.png | Bin 0 -> 336 bytes .../assets/pp/textures/items/porkchop_raw.png | Bin 0 -> 336 bytes .../cavedroid/game/GamePhysics.java | 9 ++++++++ .../handler/mouse/UseItemMouseInputHandler.kt | 5 +++++ .../deadsoftware/cavedroid/game/mobs/Mob.java | 14 +++++++++++- .../cavedroid/game/mobs/PeacefulMob.kt | 20 ++++++++++++++++++ .../deadsoftware/cavedroid/game/mobs/Pig.kt | 15 ++++--------- .../cavedroid/game/mobs/player/Inventory.kt | 6 ++++++ .../cavedroid/game/model/dto/ItemDto.kt | 1 + .../cavedroid/game/model/item/Item.kt | 11 ++++++++++ .../cavedroid/game/model/mapper/ItemMapper.kt | 1 + 12 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 android/assets/pp/textures/items/porkchop_cooked.png create mode 100644 android/assets/pp/textures/items/porkchop_raw.png create mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt diff --git a/android/assets/json/game_items.json b/android/assets/json/game_items.json index 245ebb0..349daf3 100644 --- a/android/assets/json/game_items.json +++ b/android/assets/json/game_items.json @@ -1421,6 +1421,19 @@ "tint": "#EDBFB4", "action_key": "use_spawn_egg_pig", "origin_x": 0.5 + }, + "porkchop_raw": { + "name": "Raw Porkchop", + "type": "food", + "texture": "porkchop_raw", + "heal": 3, + "smelt_product": "porkchop_cooked" + }, + "porkchop_cooked": { + "name": "Raw Porkchop", + "type": "food", + "texture": "porkchop_cooked", + "heal": 8 } } } diff --git a/android/assets/pp/textures/items/porkchop_cooked.png b/android/assets/pp/textures/items/porkchop_cooked.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd02c5411b3f63756a0eb98478c7f41d72d8238 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ)_?bmmdSFIq2!)7-Hdnc7h?_Ap;)QVm>uCHny~FMv8_?g^Uw+DTTS^9XNMPa!0}i z?!O0p=lbwO{PKGBtJa$DzhM8m;;(yTl&bFjQYkV#wnoPE!=6YL+3TNo#GjqS`Eyxg z0z=Ee(%om&e!Z7k(ab7PKKt<+sfdPmx|13IOJoG9E|~b!txTQypXr5a#&^qO^`@Ly znf8fAp{|H)!`%jpP;;XI_k&X5yC-g8ez&gCYWjlZosGx7blLXum`I(Rwu;TnYem$L c*&GjfD?%JxuBMCG0X@Uu>FVdQ&MBb@0C53*(*OVf literal 0 HcmV?d00001 diff --git a/android/assets/pp/textures/items/porkchop_raw.png b/android/assets/pp/textures/items/porkchop_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..6c83dd030d2e92db5d2a9386e356264551f47a5e GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ)_?bmmdSFIq2!)7-Hc+wSPA+lc9i1>$g-L5BRtqPEN2dUk}{LwLmcB8&gOLvIn!3@Z-^Ca z&QdrfI`cF`mJ;vB_y-&dK5;Ghd?Ux#Hk9F<4tup1gX%&-|6scy;Q+Jxm2=KZEp>bL ces{V2?Z|7a7a5u!0X@Uu>FVdQ&MBb@0Dg~rVE_OC literal 0 HcmV?d00001 diff --git a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java index cb5b37e..cece8e2 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java @@ -9,6 +9,7 @@ import ru.deadsoftware.cavedroid.game.mobs.Mob; import ru.deadsoftware.cavedroid.game.mobs.MobsController; import ru.deadsoftware.cavedroid.game.mobs.player.Player; import ru.deadsoftware.cavedroid.game.model.block.Block; +import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; import ru.deadsoftware.cavedroid.game.objects.drop.Drop; import ru.deadsoftware.cavedroid.game.objects.drop.DropController; import ru.deadsoftware.cavedroid.game.world.GameWorld; @@ -357,6 +358,10 @@ public class GamePhysics { mob.ai(mGameWorld, mGameItemsHolder, mMobsController, delta); mobPhy(mob, delta); if (mob.isDead()) { + for (InventoryItem invItem : mob.getDrop(mGameItemsHolder)) { + mDropController.addDrop(mob.x, mob.y, invItem); + } + it.remove(); } } @@ -364,6 +369,10 @@ public class GamePhysics { playerPhy(player, delta); player.ai(mGameWorld, mGameItemsHolder, mMobsController, delta); if (player.isDead()) { + for (InventoryItem invItem : player.inventory.getItems()) { + mDropController.addDrop(player.x, player.y, invItem); + } + player.inventory.clear(); player.respawn(mGameWorld, mGameItemsHolder); } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt index 541bba7..7405faf 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt @@ -3,6 +3,7 @@ package ru.deadsoftware.cavedroid.game.input.handler.mouse import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindMouseInputHandler import com.badlogic.gdx.Gdx import com.badlogic.gdx.utils.Timer +import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.GameUiWindow import ru.deadsoftware.cavedroid.game.actions.placeToBackgroundAction @@ -29,6 +30,7 @@ class UseItemMouseInputHandler @Inject constructor( private val useBlockActionMap: Map, private val gameWindowsManager: GameWindowsManager, private val gameWorld: GameWorld, + private val gameItemsHolder: GameItemsHolder, ) : IMouseInputHandler { private var buttonHoldTask: Timer.Task? = null @@ -104,6 +106,9 @@ class UseItemMouseInputHandler @Inject constructor( } else if (item is Item.Usable) { useItemActionMap[item.useActionKey]?.perform(item, player.cursorX, player.cursorY) ?: Gdx.app.error(TAG, "use item action ${item.useActionKey} not found"); + } else if (item is Item.Food && player.health < player.maxHealth) { + player.heal(item.heal) + player.decreaseCurrentItemCount(gameItemsHolder) } else { tryUseBlock() } diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index 04fa1bb..e4ca679 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -8,10 +8,14 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Timer; import ru.deadsoftware.cavedroid.game.GameItemsHolder; +import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; +import ru.deadsoftware.cavedroid.game.model.item.Item; import ru.deadsoftware.cavedroid.game.world.GameWorld; import javax.annotation.CheckForNull; import java.io.Serializable; +import java.util.Collections; +import java.util.List; /** * Mob class. @@ -209,7 +213,7 @@ public abstract class Mob extends Rectangle implements Serializable { /** * Set's mob's dead variable to true and nothing else. It doesn't delete the */ - public final void kill() { + public void kill() { mDead = true; } @@ -259,6 +263,10 @@ public abstract class Mob extends Rectangle implements Serializable { return mHealth; } + public final int getMaxHealth() { + return mMaxHealth; + } + public final void attachToController(MobsController controller) { controller.addMob(this); } @@ -323,6 +331,10 @@ public abstract class Mob extends Rectangle implements Serializable { return isTakingDamage() ? DAMAGE_TINT_COLOR : Color.WHITE; } + public List getDrop(GameItemsHolder gameItemsHolder) { + return Collections.emptyList(); + } + public abstract void draw(SpriteBatch spriteBatch, float x, float y, float delta); public abstract void ai(GameWorld gameWorld, GameItemsHolder gameItemsHolder, MobsController mobsController, float delta); diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt new file mode 100644 index 0000000..b0e5bc6 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt @@ -0,0 +1,20 @@ +package ru.deadsoftware.cavedroid.game.mobs + +import com.badlogic.gdx.math.MathUtils +import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.world.GameWorld + +abstract class PeacefulMob(x: Float, y: Float, width: Float, height: Float, direction: Direction, maxHealth: Int, ) + : Mob(x, y, width, height, direction, Type.MOB, maxHealth) { + + override fun ai(world: GameWorld, gameItemsHolder: GameItemsHolder, mobsController: MobsController, delta: Float) { + if (MathUtils.randomBoolean(delta)) { + if (velocity.x != 0f) { + velocity.x = 0f + } else { + changeDir() + } + } + } + +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt index 68c457e..b3d647d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt @@ -1,10 +1,9 @@ package ru.deadsoftware.cavedroid.game.mobs import com.badlogic.gdx.graphics.g2d.SpriteBatch -import com.badlogic.gdx.math.MathUtils import com.badlogic.gdx.math.Vector2 import ru.deadsoftware.cavedroid.game.GameItemsHolder -import ru.deadsoftware.cavedroid.game.world.GameWorld +import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.misc.utils.drawSprite import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBackgroundLeg import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBody @@ -13,7 +12,7 @@ import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLeftLegRelati import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getLegsRelativeY import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getRightLegRelativeX -class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, MAX_HEALTH) { +class Pig(x: Float, y: Float) : PeacefulMob(x, y, WIDTH, HEIGHT, randomDir(), MAX_HEALTH) { override fun getSpeed(): Float { return SPEED @@ -38,14 +37,8 @@ class Pig(x: Float, y: Float) : Mob(x, y, WIDTH, HEIGHT, randomDir(), Type.MOB, } } - override fun ai(world: GameWorld, gameItemsHolder: GameItemsHolder, mobsController: MobsController, delta: Float) { - if (MathUtils.randomBoolean(delta)) { - if (velocity.x != 0f) { - velocity.x = 0f - } else { - changeDir() - } - } + override fun getDrop(gameItemsHolder: GameItemsHolder): List { + return listOf(gameItemsHolder.getItem("porkchop_raw").toInventoryItem()) } override fun draw(spriteBatch: SpriteBatch, x: Float, y: Float, delta: Float) { diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt index 3012d66..43f298c 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt @@ -133,4 +133,10 @@ class Inventory( fun decreaseCurrentItemAmount(count: Int = 1) { decreaseItemAmount(activeSlot, count) } + + fun clear() { + for (i in _items.indices) { + _items[i] = fallbackItem + } + } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt b/core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt index 373db46..a276b71 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt @@ -20,4 +20,5 @@ data class ItemDto( @SerialName("tint") val tint: String? = null, @SerialName("burning_time") val burningTime: Long? = null, @SerialName("smelt_product") val smeltProduct: String? = null, + @SerialName("heal") val heal: Int? = null, ) diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt b/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt index bf2a55c..9b2c62d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt @@ -50,6 +50,11 @@ sealed class Item { return this is Usable } + fun isFood(): Boolean { + contract { returns(true) implies (this@Item is Food) } + return this is Food + } + @JvmOverloads fun toInventoryItem(amount: Int = 1): InventoryItem { return InventoryItem(this, amount) @@ -137,4 +142,10 @@ sealed class Item { override val level: Int, ) : Tool() + data class Food( + override val params: CommonItemParams, + override val sprite: Sprite, + val heal: Int, + ) : Item() + } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt index a0949a0..a1a6f0c 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt @@ -32,6 +32,7 @@ class ItemMapper @Inject constructor( "shears" -> Shears(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel)) "block" -> Block(params, requireNotNull(block)) "slab" -> Slab(params, requireNotNull(slabTopBlock), requireNotNull(slabBottomBlock)) + "food" -> Food(params, requireNotNull(loadSprite(dto)), requireNotNull(dto.heal)) "none" -> None(params) else -> throw IllegalArgumentException("Unknown item type ${dto.type}") } -- 2.29.2 From 5ef64641baf01c1c0f15a948e2ac7d2ca8fba095 Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 22 May 2024 02:42:28 +0700 Subject: [PATCH 06/16] Disable incremental ksp --- gradle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/gradle.properties b/gradle.properties index b7f66d4..dc8c2b7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,3 +2,4 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms128m -Xmx1500m org.gradle.configureondemand=true android.useAndroidX=true +ksp.incremental=false -- 2.29.2 From 76a3b56287b1262f78f3b43a4aac5660338d67ad Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 22 May 2024 02:42:50 +0700 Subject: [PATCH 07/16] New saving fromat and rewrite in kotlin --- core/build.gradle | 3 +- .../cavedroid/game/GameModule.java | 32 ++- .../cavedroid/game/GameSaver.java | 271 ------------------ .../keyboard/PauseGameKeyboardInputHandler.kt | 4 +- .../cavedroid/game/mobs/FallingBlock.kt | 44 +++ .../deadsoftware/cavedroid/game/mobs/Mob.java | 21 +- .../cavedroid/game/mobs/MobSaveDataMapper.kt | 12 + .../cavedroid/game/mobs/MobsController.kt | 32 ++- .../deadsoftware/cavedroid/game/mobs/Pig.kt | 44 ++- .../cavedroid/game/mobs/player/Inventory.kt | 52 +++- .../cavedroid/game/mobs/player/Player.java | 81 +++++- .../cavedroid/game/model/dto/SaveDataDto.kt | 191 ++++++++++++ .../game/model/item/InventoryItem.kt | 27 +- .../cavedroid/game/objects/container/Chest.kt | 26 +- .../game/objects/container/Container.kt | 27 +- .../objects/container/ContainerController.kt | 31 +- .../game/objects/container/Furnace.kt | 44 ++- .../cavedroid/game/objects/drop/Drop.kt | 36 ++- .../game/objects/drop/DropController.java | 29 +- .../cavedroid/game/save/GameSaveData.kt | 55 ++++ .../cavedroid/game/save/GameSaveLoader.kt | 255 ++++++++++++++++ .../cavedroid/menu/submenus/MenuMain.java | 5 +- .../deadsoftware/cavedroid/misc/Saveable.kt | 7 + 23 files changed, 1010 insertions(+), 319 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/GameSaver.java create mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt diff --git a/core/build.gradle b/core/build.gradle index 3b061a7..ac46757 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -22,5 +22,6 @@ dependencies { implementation 'org.jetbrains:annotations:23.1.0' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlinSerializationVersion" ksp "com.google.dagger:dagger-compiler:$daggerVersion" -} \ No newline at end of file +} diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java index d57ab33..29aac7d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java @@ -7,6 +7,8 @@ import ru.deadsoftware.cavedroid.game.mobs.MobsController; import ru.deadsoftware.cavedroid.game.model.block.Block; import ru.deadsoftware.cavedroid.game.objects.drop.DropController; import ru.deadsoftware.cavedroid.game.objects.container.ContainerController; +import ru.deadsoftware.cavedroid.game.save.GameSaveData; +import ru.deadsoftware.cavedroid.game.save.GameSaveLoader; import ru.deadsoftware.cavedroid.game.ui.TooltipManager; import ru.deadsoftware.cavedroid.game.world.GameWorld; @@ -16,15 +18,15 @@ import javax.annotation.CheckForNull; public class GameModule { @CheckForNull - private static GameSaver.Data data; + private static GameSaveData data; public static boolean loaded = false; - private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { + private static void load(MainConfig mainConfig, GameItemsHolder gameItemsHolder, TooltipManager tooltipManager) { if (loaded) { return; } - data = GameSaver.load(mainConfig, gameItemsHolder); + data = GameSaveLoader.INSTANCE.load(mainConfig, gameItemsHolder, tooltipManager); loaded = true; } @@ -36,8 +38,10 @@ public class GameModule { @Provides @GameScope - public static DropController provideDropController(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { - load(mainConfig, gameItemsHolder); + public static DropController provideDropController(MainConfig mainConfig, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); DropController controller = data != null ? data.retrieveDropController() : new DropController(); makeDataNullIfEmpty(); controller.initDrops(gameItemsHolder); @@ -46,9 +50,14 @@ public class GameModule { @Provides @GameScope - public static ContainerController provideFurnaceController(MainConfig mainConfig, DropController dropController, GameItemsHolder gameItemsHolder) { - load(mainConfig, gameItemsHolder); - ContainerController controller = data != null ? data.retrieveFurnaceController() : new ContainerController(dropController, gameItemsHolder); + public static ContainerController provideFurnaceController(MainConfig mainConfig, + DropController dropController, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); + ContainerController controller = data != null + ? data.retrieveContainerController() + : new ContainerController(dropController, gameItemsHolder); makeDataNullIfEmpty(); controller.init(dropController, gameItemsHolder); return controller; @@ -59,7 +68,7 @@ public class GameModule { public static MobsController provideMobsController(MainConfig mainConfig, GameItemsHolder gameItemsHolder, TooltipManager tooltipManager) { - load(mainConfig, gameItemsHolder); + load(mainConfig, gameItemsHolder, tooltipManager); MobsController controller = data != null ? data.retrieveMobsController() : new MobsController(gameItemsHolder, tooltipManager); @@ -74,8 +83,9 @@ public class GameModule { DropController dropController, MobsController mobsController, GameItemsHolder gameItemsHolder, - ContainerController containerController) { - load(mainConfig, gameItemsHolder); + ContainerController containerController, + TooltipManager tooltipManager) { + load(mainConfig, gameItemsHolder, tooltipManager); Block[][] fm = data != null ? data.retrieveForeMap() : null; Block[][] bm = data != null ? data.retrieveBackMap() : null; makeDataNullIfEmpty(); diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java b/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java deleted file mode 100644 index 39d2278..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/GameSaver.java +++ /dev/null @@ -1,271 +0,0 @@ -package ru.deadsoftware.cavedroid.game; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.files.FileHandle; -import ru.deadsoftware.cavedroid.MainConfig; -import ru.deadsoftware.cavedroid.game.mobs.MobsController; -import ru.deadsoftware.cavedroid.game.model.block.Block; -import ru.deadsoftware.cavedroid.game.objects.drop.DropController; -import ru.deadsoftware.cavedroid.game.objects.container.ContainerController; -import ru.deadsoftware.cavedroid.game.world.GameWorld; - -import javax.annotation.CheckForNull; -import java.io.*; -import java.nio.ByteBuffer; -import java.util.HashMap; -import java.util.Map; - -public class GameSaver { - - private static final String TAG = "GameSaver"; - - public static class Data { - @CheckForNull - private MobsController mMobsController; - @CheckForNull - private DropController mDropController; - @CheckForNull - private ContainerController mContainerController; - @CheckForNull - private Block[][] mForeMap, mBackMap; - - public Data(MobsController mobsController, - DropController dropController, - ContainerController containerController, - Block[][] foreMap, - Block[][] backMap) { - mMobsController = mobsController; - mDropController = dropController; - mContainerController = containerController; - mForeMap = foreMap; - mBackMap = backMap; - } - - public MobsController retrieveMobsController() { - assert mMobsController != null; - MobsController mobsController = mMobsController; - mMobsController = null; - return mobsController; - } - - public DropController retrieveDropController() { - assert mDropController != null; - DropController dropController = mDropController; - mDropController = null; - return dropController; - } - - public ContainerController retrieveFurnaceController() { - assert mContainerController != null; - ContainerController containerController = mContainerController; - mContainerController = null; - return containerController; - } - - public Block[][] retrieveForeMap() { - assert mForeMap != null; - Block[][] foreMap = mForeMap; - mForeMap = null; - return foreMap; - } - - public Block[][] retrieveBackMap() { - assert mBackMap != null; - Block[][] backMap = mBackMap; - mBackMap = null; - return backMap; - } - - public boolean isEmpty() { - return mMobsController == null && - mDropController == null && - mContainerController == null && - mForeMap == null && - mBackMap == null; - } - } - - private static final int SAVE_VERSION = 1; - - private static byte[] intToBytes(int i) { - return ByteBuffer.allocate(4).putInt(i).array(); - } - - private static Map buildBlocksDictionary(Block[][] foreMap, Block[][] backMap) { - final HashMap dict = new HashMap<>(); - - int id = 0; - for (int i = 0; i < foreMap.length; i++) { - for (int j = 0; j < foreMap[i].length; j++) { - for (int k = 0; k < 2; k++) { - final Block block = k == 0 ? foreMap[i][j] : backMap[i][j]; - final String key = block.getParams().getKey(); - if (!dict.containsKey(key)) { - dict.put(key, id++); - } - } - } - } - - return dict; - } - - private static void saveDict(FileHandle file, Map dict) { - final String[] arr = new String[dict.size()]; - - for (Map.Entry entry : dict.entrySet()) { - arr[entry.getValue()] = entry.getKey(); - } - - final StringBuilder builder = new StringBuilder(); - for (String key : arr) { - builder.append(key); - builder.append('\n'); - } - - file.writeString(builder.toString(), false); - } - - private static String[] loadDict(FileHandle file) { - return file.readString().split("\n"); - } - - private static void saveMap(FileHandle file, Block[][] map, Map dict) throws IOException { - int run, block; - int width = map.length; - int height = map[0].length; - - BufferedOutputStream out = new BufferedOutputStream(file.write(false)); - - out.write(SAVE_VERSION); - out.write(intToBytes(width)); - out.write(intToBytes(height)); - - for (int y = 0; y < height; y++) { - block = dict.get(map[0][y].getParams().getKey()); - run = 0; - for (Block[] blocks : map) { - int newValue = dict.get(blocks[y].getParams().getKey()); - if (run >= 0xFF || newValue != block) { - out.write(run); - out.write(block); - run = 0; - block = dict.get(blocks[y].getParams().getKey()); - } - run++; - } - out.write(run); - out.write(block); - } - - out.flush(); - out.close(); - } - - private static Block[][] loadMap(GameItemsHolder gameItemsHolder, FileHandle file, String[] dict) throws Exception { - Block[][] map; - int version, width, height; - int run, block; - - DataInputStream in = new DataInputStream(file.read()); - - version = in.readByte(); - - if (SAVE_VERSION == version) { - width = in.readInt(); - height = in.readInt(); - map = new Block[width][height]; - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x += run) { - run = in.readUnsignedByte(); - block = in.readUnsignedByte(); - for (int i = x; i < x + run; i++) { - map[i][y] = gameItemsHolder.getBlock(dict[block]); - } - } - } - } else { - throw new Exception("version mismatch"); - } - - in.close(); - return map; - } - - @CheckForNull - public static Data load(MainConfig mainConfig, GameItemsHolder gameItemsHolder) { - String folder = mainConfig.getGameFolder(); - FileHandle file = Gdx.files.absolute(folder + "/saves/game.sav"); - - try { - ObjectInputStream in = new ObjectInputStream(file.read()); - int version = in.readInt(); - DropController dropController; - MobsController mobsController; - ContainerController containerController; - - if (SAVE_VERSION == version) { - dropController = (DropController) in.readObject(); - mobsController = (MobsController) in.readObject(); - containerController = (ContainerController) in.readObject(); - } else { - throw new Exception("version mismatch"); - } - - in.close(); - - final String[] dict = loadDict(Gdx.files.absolute(mainConfig.getGameFolder() + "/saves/dict")); - Block[][] foreMap = loadMap(gameItemsHolder, Gdx.files.absolute(mainConfig.getGameFolder() + "/saves/foremap.sav"), dict); - Block[][] backMap = loadMap(gameItemsHolder, Gdx.files.absolute(mainConfig.getGameFolder() + "/saves/backmap.sav"), dict); - - if (dropController == null || mobsController == null) { - throw new Exception("couldn't load"); - } - - return new Data(mobsController, dropController, containerController, foreMap, backMap); - } catch (Exception e) { - Gdx.app.error("GameSaver", e.getMessage()); - } - - return null; - } - - public static void save(MainConfig mainConfig, - DropController dropController, - MobsController mobsController, - ContainerController containerController, - GameWorld gameWorld) { - String folder = mainConfig.getGameFolder(); - FileHandle file = Gdx.files.absolute(folder + "/saves/"); - file.mkdirs(); - file = Gdx.files.absolute(folder + "/saves/game.sav"); - - final Block[][] foreMap, backMap; - foreMap = gameWorld.getFullForeMap(); - backMap = gameWorld.getFullBackMap(); - - final Map dict = buildBlocksDictionary(foreMap, backMap); - - try { - ObjectOutputStream out = new ObjectOutputStream(file.write(false)); - out.writeInt(SAVE_VERSION); - out.writeObject(dropController); - out.writeObject(mobsController); - out.writeObject(containerController); - out.close(); - - saveDict(Gdx.files.absolute(folder + "/saves/dict"), dict); - saveMap(Gdx.files.absolute(folder + "/saves/foremap.sav"), gameWorld.getFullForeMap(), dict); - saveMap(Gdx.files.absolute(folder + "/saves/backmap.sav"), gameWorld.getFullBackMap(), dict); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static boolean exists(MainConfig mainConfig) { - String folder = mainConfig.getGameFolder(); - return (Gdx.files.absolute(folder + "/saves/game.sav").exists() && - Gdx.files.absolute(folder + "/saves/foremap.sav").exists() && - Gdx.files.absolute(folder + "/saves/backmap.sav").exists()); - } -} diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt index cedc78a..0311c88 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt @@ -1,7 +1,6 @@ package ru.deadsoftware.cavedroid.game.input.handler.keyboard import ru.deadsoftware.cavedroid.MainConfig -import ru.deadsoftware.cavedroid.game.GameSaver import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.GameUiWindow import ru.deadsoftware.cavedroid.game.input.IKeyboardInputHandler @@ -10,6 +9,7 @@ import ru.deadsoftware.cavedroid.game.input.action.keys.KeyboardInputActionKey import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.objects.drop.DropController import ru.deadsoftware.cavedroid.game.objects.container.ContainerController +import ru.deadsoftware.cavedroid.game.save.GameSaveLoader import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindKeyboardInputHandler @@ -36,7 +36,7 @@ class PauseGameKeyboardInputHandler @Inject constructor( return } - GameSaver.save(mainConfig, dropController, mobsController, containerController, gameWorld) + GameSaveLoader.save(mainConfig, dropController, mobsController, containerController, gameWorld) mainConfig.caveGame.quitGame() } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt index f273504..77e51a1 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt @@ -3,6 +3,7 @@ package ru.deadsoftware.cavedroid.game.mobs import com.badlogic.gdx.graphics.g2d.SpriteBatch import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.world.GameWorld import ru.deadsoftware.cavedroid.misc.utils.bl import ru.deadsoftware.cavedroid.misc.utils.px @@ -50,4 +51,47 @@ class FallingBlock( ) { _block?.draw(spriteBatch, x, y) } + + override fun getSaveData(): SaveDataDto.FallingBlockSaveData { + return SaveDataDto.FallingBlockSaveData( + version = SAVE_DATA_VERSION, + x = x, + y = y, + width = width, + height = height, + velocityX = velocity.x, + velocityY = velocity.y, + type = mType, + animDelta = mAnimDelta, + anim = mAnim, + direction = mDirection, + dead = mDead, + canJump = mCanJump, + flyMode = mFlyMode, + maxHealth = mMaxHealth, + health = mHealth, + blockKey = blockKey, + ) + } + + companion object { + private const val SAVE_DATA_VERSION = 1 + + fun fromSaveData(saveData: SaveDataDto.FallingBlockSaveData): FallingBlock { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return FallingBlock(saveData.blockKey, saveData.x, saveData.y).apply { + velocity.x = saveData.velocityX + velocity.y = saveData.velocityY + mAnimDelta = saveData.animDelta + mAnim = saveData.anim + mDirection = saveData.direction + mDead = saveData.dead + mCanJump = saveData.canJump + mFlyMode = saveData.flyMode + mMaxHealth = saveData.maxHealth + mHealth = saveData.health + } + } + } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index e4ca679..0f3610b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -8,9 +8,11 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Timer; import ru.deadsoftware.cavedroid.game.GameItemsHolder; +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto; import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; import ru.deadsoftware.cavedroid.game.model.item.Item; import ru.deadsoftware.cavedroid.game.world.GameWorld; +import ru.deadsoftware.cavedroid.misc.Saveable; import javax.annotation.CheckForNull; import java.io.Serializable; @@ -20,7 +22,7 @@ import java.util.List; /** * Mob class. */ -public abstract class Mob extends Rectangle implements Serializable { +public abstract class Mob extends Rectangle implements Serializable, Saveable { private static final float DAMAGE_TINT_TIMEOUT_S = 0.5f; private static final Color DAMAGE_TINT_COLOR = new Color(0xff8080ff); @@ -75,13 +77,13 @@ public abstract class Mob extends Rectangle implements Serializable { protected int mAnimDelta = ANIMATION_SPEED; protected float mAnim; - private Direction mDirection; + protected Direction mDirection; protected boolean mDead; - private boolean mCanJump; - private boolean mFlyMode; + protected boolean mCanJump; + protected boolean mFlyMode; - private final int mMaxHealth; - private int mHealth; + protected int mMaxHealth; + protected int mHealth; private transient boolean mTakingDamage = false; @CheckForNull private transient ResetTakeDamageTask mResetTakeDamageTask = null; @@ -344,4 +346,11 @@ public abstract class Mob extends Rectangle implements Serializable { public abstract float getSpeed(); public abstract void jump(); + + @Override + public abstract SaveDataDto.MobSaveDataDto getSaveData(); + + public static Mob fromSaveData(SaveDataDto.MobSaveDataDto saveData) { + return MobSaveDataMapperKt.fromSaveData(saveData); + } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt new file mode 100644 index 0000000..49adee3 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt @@ -0,0 +1,12 @@ +package ru.deadsoftware.cavedroid.game.mobs + +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto + +fun fromSaveData(saveData: SaveDataDto.MobSaveDataDto): Mob { + return when (saveData) { + is SaveDataDto.PigSaveData -> Pig.fromSaveData(saveData) + is SaveDataDto.FallingBlockSaveData -> FallingBlock.fromSaveData(saveData) + + is SaveDataDto.PlayerSaveData -> throw IllegalArgumentException("Cannot load player as regular Mob") + } +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt index 158d22a..dc01e1e 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt @@ -3,7 +3,9 @@ package ru.deadsoftware.cavedroid.game.mobs import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.mobs.player.Player +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.ui.TooltipManager +import ru.deadsoftware.cavedroid.misc.Saveable import java.io.Serializable import java.util.* import javax.inject.Inject @@ -12,12 +14,12 @@ import javax.inject.Inject class MobsController @Inject constructor( gameItemsHolder: GameItemsHolder, tooltipManager: TooltipManager, -) : Serializable { +) : Serializable, Saveable { private val _mobs = LinkedList() - val player: Player = - Player(gameItemsHolder, tooltipManager) + var player: Player = Player(gameItemsHolder, tooltipManager) + private set val mobs: List get() = _mobs @@ -26,7 +28,31 @@ class MobsController @Inject constructor( _mobs.add(mob) } + override fun getSaveData(): SaveDataDto.MobsControllerSaveData { + return SaveDataDto.MobsControllerSaveData( + version = SAVE_DATA_VERSION, + mobs = _mobs.map(Mob::getSaveData), + player = player.getSaveData(), + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 + private const val TAG = "MobsController" + + fun fromSaveData( + saveData: SaveDataDto.MobsControllerSaveData, + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager + ): MobsController { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return MobsController(gameItemsHolder, tooltipManager) + .apply { + _mobs.addAll(saveData.mobs.map { mob -> Mob.fromSaveData(mob) }) + player = Player.fromSaveData(saveData.player, gameItemsHolder, tooltipManager) + } + } } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt index b3d647d..b080e40 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt @@ -3,6 +3,7 @@ package ru.deadsoftware.cavedroid.game.mobs import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.math.Vector2 import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.misc.utils.drawSprite import ru.deadsoftware.cavedroid.misc.utils.mobs.MobSprites.Pig.getBackgroundLeg @@ -54,13 +55,52 @@ class Pig(x: Float, y: Float) : PeacefulMob(x, y, WIDTH, HEIGHT, randomDir(), MA spriteBatch.drawSprite(getForegroundLeg(), leftLegX, legY, anim, tint = tintColor) spriteBatch.drawSprite(getForegroundLeg(), rightLegX, legY, anim, tint = tintColor) } + + override fun getSaveData(): SaveDataDto.PigSaveData { + return SaveDataDto.PigSaveData( + version = SAVE_DATA_VERSION, + x = x, + y = y, + width = width, + height = height, + velocityX = velocity.x, + velocityY = velocity.y, + type = mType, + animDelta = mAnimDelta, + anim = mAnim, + direction = mDirection, + dead = mDead, + canJump = mCanJump, + flyMode = mFlyMode, + maxHealth = mMaxHealth, + health = mHealth + ) + } - - private companion object { + companion object { + private const val SAVE_DATA_VERSION = 1 + private const val WIDTH = 25f private const val HEIGHT = 18f private const val SPEED = 48f private const val JUMP_VELOCITY = -133.332f private const val MAX_HEALTH = 10 + + fun fromSaveData(saveData: SaveDataDto.PigSaveData): Pig { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Pig(saveData.x, saveData.y).apply { + velocity.x = saveData.velocityX + velocity.y = saveData.velocityY + mAnimDelta = saveData.animDelta + mAnim = saveData.anim + mDirection = saveData.direction + mDead = saveData.dead + mCanJump = saveData.canJump + mFlyMode = saveData.flyMode + mMaxHealth = saveData.maxHealth + mHealth = saveData.health + } + } } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt index 43f298c..8f0b90d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt @@ -1,18 +1,21 @@ package ru.deadsoftware.cavedroid.game.mobs.player import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.game.model.item.Item import ru.deadsoftware.cavedroid.game.objects.drop.Drop import ru.deadsoftware.cavedroid.game.ui.TooltipManager +import ru.deadsoftware.cavedroid.misc.Saveable import java.io.Serializable -class Inventory( +class Inventory @JvmOverloads constructor( val size: Int, val hotbarSize: Int, gameItemsHolder: GameItemsHolder, tooltipManager: TooltipManager, -) : Serializable { + initialItems: List? = null +) : Serializable, Saveable { @Suppress("UNNECESSARY_LATEINIT") @Transient @@ -22,6 +25,8 @@ class Inventory( @Transient private lateinit var fallbackItem: InventoryItem + private val _items: Array + init { fallbackItem = gameItemsHolder.fallbackItem.toInventoryItem() this.tooltipManager = tooltipManager @@ -29,18 +34,21 @@ class Inventory( if (size < 0 || hotbarSize < 0 || hotbarSize > size) { throw IllegalArgumentException("Invalid inventory sizes: hotbarSize=$hotbarSize; size=$size") } - } - private val _items = Array(size) { InventoryItem(gameItemsHolder.fallbackItem) } + _items = Array(size) { index -> initialItems?.getOrNull(index) ?: InventoryItem(gameItemsHolder.fallbackItem) } + } val items get() = _items.asList() as MutableList val hotbarItems get() = items.subList(0, hotbarSize) - var activeSlot = 0 + private var _activeSlot = 0 + + var activeSlot + get() = _activeSlot set(value) { if (value in 0 ..< hotbarSize) { - field = value + _activeSlot = value showCurrentItemTooltip() } } @@ -139,4 +147,36 @@ class Inventory( _items[i] = fallbackItem } } + + override fun getSaveData(): SaveDataDto.InventorySaveData { + return SaveDataDto.InventorySaveData( + version = SAVE_DATA_VERSION, + size = size, + hotbarSize = hotbarSize, + activeSlot = _activeSlot, + items = items.map(InventoryItem::getSaveData) + ) + } + + companion object { + private const val SAVE_DATA_VERSION = 1 + + fun fromSaveData( + saveData: SaveDataDto.InventorySaveData, + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager, + ): Inventory { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Inventory( + size = saveData.size, + hotbarSize = saveData.hotbarSize, + gameItemsHolder = gameItemsHolder, + tooltipManager = tooltipManager, + initialItems = saveData.items.map { item -> InventoryItem.fromSaveData(item, gameItemsHolder) } + ).apply { + _activeSlot = saveData.activeSlot + } + } + } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java index 8ea87c1..f454b0c 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java @@ -4,10 +4,12 @@ import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; +import org.jetbrains.annotations.NotNull; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.mobs.Mob; import ru.deadsoftware.cavedroid.game.mobs.MobsController; import ru.deadsoftware.cavedroid.game.model.block.Block; +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto; import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; import ru.deadsoftware.cavedroid.game.model.item.Item; import ru.deadsoftware.cavedroid.game.objects.drop.Drop; @@ -22,6 +24,8 @@ import javax.annotation.CheckForNull; public class Player extends Mob { + private static final int SAVE_DATA_VERSION = 1; + private static final float SPEED = 69.072f; private static final float JUMP_VELOCITY = -133.332f; private static final int SURVIVAL_CURSOR_RANGE = 4; @@ -34,7 +38,7 @@ public class Player extends Mob { private float hitAnim = 0f; private float hitAnimDelta = ANIMATION_SPEED; - public final Inventory inventory; + public Inventory inventory; public int gameMode; public boolean swim; @@ -439,4 +443,79 @@ public class Player extends Mob { SpriteUtilsKt.drawSprite(spriteBatch, frontHand, x + 2, y + 8, frontHandAnim); } + @NotNull + @Override + public SaveDataDto.PlayerSaveData getSaveData() { + return new SaveDataDto.PlayerSaveData( + SAVE_DATA_VERSION, + mType, + mAnimDelta, + mAnim, + mDirection, + mDead, + mCanJump, + mFlyMode, + mMaxHealth, + mHealth, + x, + y, + width, + height, + getVelocity().x, + getVelocity().y, + hitting, + hittingWithDamage, + hitAnim, + hitAnimDelta, + inventory.getSaveData(), + gameMode, + swim, + headRotation, + blockDamage, + cursorX, + cursorY, + spawnPoint != null ? spawnPoint.x : 0f, + spawnPoint != null ? spawnPoint.y : 0f, + controlMode + ); + } + + public static Player fromSaveData( + SaveDataDto.PlayerSaveData saveData, + GameItemsHolder gameItemsHolder, + TooltipManager tooltipManager + ) { + saveData.verifyVersion(SAVE_DATA_VERSION); + + Player player = new Player(gameItemsHolder, tooltipManager); + + player.mType = saveData.getType(); + player.mAnimDelta = saveData.getAnimDelta(); + player.mAnim = saveData.getAnim(); + player.mDirection = saveData.getDirection(); + player.mDead = saveData.getDead(); + player.mCanJump = saveData.getCanJump(); + player.mFlyMode = saveData.getFlyMode(); + player.mMaxHealth = saveData.getMaxHealth(); + player.mHealth = saveData.getHealth(); + player.x = saveData.getX(); + player.y = saveData.getY(); + player.width = saveData.getWidth(); + player.height = saveData.getHeight(); + player.hitting = saveData.getHitting(); + player.hittingWithDamage = saveData.getHittingWithDamage(); + player.hitAnim = saveData.getHitAnim(); + player.hitAnimDelta = saveData.getHitAnimDelta(); + player.inventory = Inventory.Companion.fromSaveData(saveData.getInventory(), gameItemsHolder, tooltipManager); + player.gameMode = saveData.getGameMode(); + player.swim = saveData.getSwim(); + player.headRotation = saveData.getHeadRotation(); + player.blockDamage = saveData.getBlockDamage(); + player.cursorX = saveData.getCursorX(); + player.cursorY = saveData.getCursorY(); + player.spawnPoint = new Vector2(saveData.getSpawnPointX(), saveData.getSpawnPointY()); + player.controlMode = saveData.getControlMode(); + + return player; + } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt b/core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt new file mode 100644 index 0000000..e6ad828 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt @@ -0,0 +1,191 @@ +package ru.deadsoftware.cavedroid.game.model.dto + +import kotlinx.serialization.Contextual +import kotlinx.serialization.Serializable +import ru.deadsoftware.cavedroid.game.mobs.Mob +import ru.deadsoftware.cavedroid.game.mobs.player.Player.ControlMode + +@Serializable +sealed class SaveDataDto { + + abstract val version: Int + + fun verifyVersion(expectedVersion: Int) { + require(version == expectedVersion) { + "${this::class.simpleName} version mismatch ($version != $expectedVersion)" + } + } + + @Serializable + sealed class ContainerSaveDataDto : SaveDataDto() { + abstract val size: Int + abstract val items: List + } + + @Serializable + sealed class RectangleObjectSaveDataDto : SaveDataDto() { + abstract val x: Float + abstract val y: Float + abstract val width: Float + abstract val height: Float + abstract val velocityX: Float + abstract val velocityY: Float + } + + @Serializable + sealed class MobSaveDataDto : RectangleObjectSaveDataDto() { + abstract val type: Mob.Type + abstract val animDelta: Int + abstract val anim: Float + abstract val direction: Mob.Direction + abstract val dead: Boolean + abstract val canJump: Boolean + abstract val flyMode: Boolean + abstract val maxHealth: Int + abstract val health: Int + } + + @Serializable + data class InventoryItemSaveData( + override val version: Int, + val itemKey: String, + val amount: Int, + ) : SaveDataDto() + + @Serializable + data class InventorySaveData( + override val version: Int, + override val size: Int, + val hotbarSize: Int, + val activeSlot: Int, + override val items: List, + ) : ContainerSaveDataDto() + + @Serializable + data class FurnaceSaveData( + override val version: Int, + override val size: Int, + val currentFuelItemKey: String?, + override val items: List, + val startBurnTimeMs: Long, + val startSmeltTimeMs: Long, + val burnProgress: Float, + val smeltProgress: Float, + ) : ContainerSaveDataDto() + + @Serializable + data class ChestSaveData( + override val version: Int, + override val size: Int, + override val items: List + ) : ContainerSaveDataDto() + + @Serializable + data class ContainerControllerSaveData( + override val version: Int, + val containerMap: Map, + ): SaveDataDto() + + @Serializable + data class DropSaveData( + override val version: Int, + override val x: Float, + override val y: Float, + override val width: Float, + override val height: Float, + override val velocityX: Float, + override val velocityY: Float, + val itemKey: String, + val amount: Int, + val pickedUp: Boolean + ) : RectangleObjectSaveDataDto() + + @Serializable + data class DropControllerSaveData( + override val version: Int, + val drops: List + ) : SaveDataDto() + + @Serializable + data class PigSaveData( + override val version: Int, + override val x: Float, + override val y: Float, + override val width: Float, + override val height: Float, + override val velocityX: Float, + override val velocityY: Float, + override val type: Mob.Type, + override val animDelta: Int, + override val anim: Float, + override val direction: Mob.Direction, + override val dead: Boolean, + override val canJump: Boolean, + override val flyMode: Boolean, + override val maxHealth: Int, + override val health: Int, + ) : MobSaveDataDto() + + @Serializable + data class FallingBlockSaveData( + override val version: Int, + override val x: Float, + override val y: Float, + override val width: Float, + override val height: Float, + override val velocityX: Float, + override val velocityY: Float, + override val type: Mob.Type, + override val animDelta: Int, + override val anim: Float, + override val direction: Mob.Direction, + override val dead: Boolean, + override val canJump: Boolean, + override val flyMode: Boolean, + override val maxHealth: Int, + override val health: Int, + val blockKey: String, + ) : MobSaveDataDto() + + @Serializable + data class PlayerSaveData( + override val version: Int, + override val type: Mob.Type, + override val animDelta: Int, + override val anim: Float, + override val direction: Mob.Direction, + override val dead: Boolean, + override val canJump: Boolean, + override val flyMode: Boolean, + override val maxHealth: Int, + override val health: Int, + override val x: Float, + override val y: Float, + override val width: Float, + override val height: Float, + override val velocityX: Float, + override val velocityY: Float, + val hitting: Boolean, + val hittingWithDamage: Boolean, + val hitAnim: Float, + val hitAnimDelta: Float, + val inventory: InventorySaveData, + val gameMode: Int, + val swim: Boolean, + val headRotation: Float, + val blockDamage: Float, + val cursorX: Int, + val cursorY: Int, + val spawnPointX: Float, + val spawnPointY: Float, + val controlMode: ControlMode, + ) : MobSaveDataDto() + + @Serializable + data class MobsControllerSaveData( + override val version: Int, + val mobs: List<@Contextual MobSaveDataDto>, + val player: PlayerSaveData, + ) : SaveDataDto() + +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt b/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt index 3cd406b..7190988 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt @@ -4,7 +4,9 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShapeRenderer import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.misc.Assets +import ru.deadsoftware.cavedroid.misc.Saveable import ru.deadsoftware.cavedroid.misc.utils.drawSprite import ru.deadsoftware.cavedroid.misc.utils.drawString import ru.deadsoftware.cavedroid.misc.utils.px @@ -15,7 +17,7 @@ import kotlin.contracts.contract class InventoryItem @JvmOverloads constructor( val itemKey: String, _amount: Int = 1, -) : Serializable { +) : Serializable, Saveable { var amount = _amount set(value) { @@ -131,12 +133,35 @@ class InventoryItem @JvmOverloads constructor( } } + override fun getSaveData(): SaveDataDto.InventoryItemSaveData { + return SaveDataDto.InventoryItemSaveData( + version = SAVE_DATA_VERSION, + itemKey = itemKey, + amount = amount, + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 @OptIn(ExperimentalContracts::class) fun InventoryItem?.isNoneOrNull(): Boolean { contract { returns(false) implies(this@isNoneOrNull != null) } return this?.item == null || this.item.isNone() } + + + fun fromSaveData( + saveData: SaveDataDto.InventoryItemSaveData, + gameItemsHolder: GameItemsHolder? = null + ): InventoryItem { + saveData.verifyVersion(SAVE_DATA_VERSION) + + val inventoryItem = InventoryItem(saveData.itemKey, saveData.amount) + gameItemsHolder?.let(inventoryItem::init) + + return inventoryItem + } } + } diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt index be820bc..a9e893b 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt @@ -1,14 +1,38 @@ package ru.deadsoftware.cavedroid.game.objects.container import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto +import ru.deadsoftware.cavedroid.game.model.item.InventoryItem +import ru.deadsoftware.cavedroid.misc.Saveable -class Chest(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolder) { +class Chest @JvmOverloads constructor( + gameItemsHolder: GameItemsHolder, + initialItems: List? = null +) : Container(SIZE, gameItemsHolder, initialItems), Saveable { override fun update(gameItemsHolder: GameItemsHolder) { // no-op } + override fun getSaveData(): SaveDataDto.ChestSaveData { + return SaveDataDto.ChestSaveData( + version = SAVE_DATA_VERSION, + size = size, + items = items.map(InventoryItem::getSaveData) + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 private const val SIZE = 27 + + fun fromSaveData(saveData: SaveDataDto.ChestSaveData, gameItemsHolder: GameItemsHolder): Chest { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Chest( + gameItemsHolder = gameItemsHolder, + initialItems = saveData.items.map { item -> InventoryItem.fromSaveData(item, gameItemsHolder) } + ) + } } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt index 1e13c64..05ec744 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt @@ -1,16 +1,21 @@ package ru.deadsoftware.cavedroid.game.objects.container import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem +import ru.deadsoftware.cavedroid.misc.Saveable import java.io.Serializable import javax.annotation.OverridingMethodsMustInvokeSuper -abstract class Container( +abstract class Container @JvmOverloads constructor( val size: Int, - gameItemsHolder: GameItemsHolder -) : Serializable { + gameItemsHolder: GameItemsHolder, + initialItems: List? = null, +) : Serializable, Saveable { - private val _items = Array(size) { gameItemsHolder.fallbackItem.toInventoryItem() } + private val _items = Array(size) { index -> + initialItems?.getOrNull(index) ?: gameItemsHolder.fallbackItem.toInventoryItem() + } val items get() = _items.asList() as MutableList @@ -21,4 +26,18 @@ abstract class Container( abstract fun update(gameItemsHolder: GameItemsHolder) + abstract override fun getSaveData(): SaveDataDto.ContainerSaveDataDto + + companion object { + fun fromSaveData(saveData: SaveDataDto.ContainerSaveDataDto, gameItemsHolder: GameItemsHolder): Container { + return when (saveData) { + is SaveDataDto.FurnaceSaveData -> Furnace.fromSaveData(saveData, gameItemsHolder) + is SaveDataDto.ChestSaveData -> Chest.fromSaveData(saveData, gameItemsHolder) + + is SaveDataDto.InventorySaveData -> { + throw IllegalArgumentException("Cannot load Container from InventorySaveData") + } + } + } + } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt index 3facb6f..bffb846 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt @@ -4,8 +4,10 @@ import com.badlogic.gdx.Gdx import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem.Companion.isNoneOrNull import ru.deadsoftware.cavedroid.game.objects.drop.DropController +import ru.deadsoftware.cavedroid.misc.Saveable import ru.deadsoftware.cavedroid.misc.utils.px import java.io.Serializable import javax.inject.Inject @@ -14,7 +16,7 @@ import javax.inject.Inject class ContainerController @Inject constructor( _dropController: DropController, _gameItemsHolder: GameItemsHolder -) : Serializable { +) : Serializable, Saveable { @Suppress("UNNECESSARY_LATEINIT") @Transient @@ -79,8 +81,35 @@ class ContainerController @Inject constructor( } } + override fun getSaveData(): SaveDataDto.ContainerControllerSaveData { + return SaveDataDto.ContainerControllerSaveData( + version = SAVE_DATA_VERSION, + containerMap = containerMap.mapValues { (_, container) -> container.getSaveData() }, + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 private const val TAG = "ContainerController" + + fun fromSaveData( + saveData: SaveDataDto.ContainerControllerSaveData, + dropController: DropController, + gameItemsHolder: GameItemsHolder + ): ContainerController { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return ContainerController( + dropController, + gameItemsHolder + ).apply { + containerMap.putAll( + saveData.containerMap.mapValues { (_, containerSaveData) -> + Container.fromSaveData(containerSaveData, gameItemsHolder) + } + ) + } + } } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt index 1a75e89..92eeab9 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt @@ -4,12 +4,17 @@ import com.badlogic.gdx.Gdx import com.badlogic.gdx.math.MathUtils import com.badlogic.gdx.utils.TimeUtils import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.game.model.item.InventoryItem.Companion.isNoneOrNull import ru.deadsoftware.cavedroid.game.model.item.Item +import ru.deadsoftware.cavedroid.misc.Saveable + +class Furnace @JvmOverloads constructor( + gameItemsHolder: GameItemsHolder, + initialItems: List? = null +) : Container(SIZE, gameItemsHolder, initialItems), Saveable { -class Furnace(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolder) { - var fuel: InventoryItem get() = items[FUEL_INDEX] set(value) { @@ -57,7 +62,7 @@ class Furnace(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolde } fun canSmelt(): Boolean { - return (result.isNoneOrNull() || (result.item.params.key == input.item.params.smeltProductKey) )&& + return (result.isNoneOrNull() || (result.item.params.key == input.item.params.smeltProductKey)) && !input.isNoneOrNull() && input.item.params.smeltProductKey != null && (!fuel.isNoneOrNull() || burnProgress > 0f) } @@ -118,7 +123,7 @@ class Furnace(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolde if (isActive && smeltProgress >= 1f) { val productKey = requireNotNull(input.item.params.smeltProductKey) val res = gameItemsHolder.getItem(productKey) - if (result.isNoneOrNull()) { + if (result.isNoneOrNull()) { result = res.toInventoryItem() } else { result.add() @@ -132,7 +137,21 @@ class Furnace(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolde } } + override fun getSaveData(): SaveDataDto.FurnaceSaveData { + return SaveDataDto.FurnaceSaveData( + version = SAVE_DATA_VERSION, + size = size, + currentFuelItemKey = currentFuelKey, + items = items.map(InventoryItem::getSaveData), + startBurnTimeMs = startBurnTimeMs, + startSmeltTimeMs = smeltStarTimeMs, + burnProgress = burnProgress, + smeltProgress = smeltProgress, + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 private const val SIZE = 3 private const val TAG = "Furnace" @@ -141,6 +160,23 @@ class Furnace(gameItemsHolder: GameItemsHolder) : Container(SIZE, gameItemsHolde const val RESULT_INDEX = 2 const val SMELTING_TIME_MS = 10000L + + fun fromSaveData(saveData: SaveDataDto.FurnaceSaveData, gameItemsHolder: GameItemsHolder): Furnace { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Furnace( + gameItemsHolder = gameItemsHolder, + initialItems = saveData.items.map { item -> + InventoryItem.fromSaveData(item, gameItemsHolder) + } + ).apply { + currentFuelKey = saveData.currentFuelItemKey + startBurnTimeMs = saveData.startSmeltTimeMs + smeltStarTimeMs = saveData.startSmeltTimeMs + burnProgress = saveData.burnProgress + smeltProgress = saveData.smeltProgress + } + } } } \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt index edb3c81..548c44a 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt @@ -4,14 +4,16 @@ import com.badlogic.gdx.math.Intersector import com.badlogic.gdx.math.Rectangle import com.badlogic.gdx.math.Vector2 import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.Item +import ru.deadsoftware.cavedroid.misc.Saveable class Drop @JvmOverloads constructor( x: Float, y: Float, _item: Item, _amount: Int = 1, -) : Rectangle(x, y, DROP_SIZE, DROP_SIZE) { +) : Rectangle(x, y, DROP_SIZE, DROP_SIZE), Saveable { var amount: Int = _amount private set @@ -60,12 +62,44 @@ class Drop @JvmOverloads constructor( ) } + override fun getSaveData(): SaveDataDto.DropSaveData { + return SaveDataDto.DropSaveData( + version = SAVE_DATA_VERSION, + x = x, + y = y, + width = width, + height = height, + velocityX = velocity.x, + velocityY = velocity.y, + itemKey = itemKey, + amount = amount, + pickedUp = pickedUp + ) + } + companion object { + private const val SAVE_DATA_VERSION = 1 + private const val MAGNET_DISTANCE = 8f const val MAGNET_VELOCITY = 256f const val DROP_SIZE = 8f private fun getInitialVelocity(): Vector2 = Vector2(0f, -1f) + + fun fromSaveData(saveData: SaveDataDto.DropSaveData, gameItemsHolder: GameItemsHolder): Drop { + saveData.verifyVersion(SAVE_DATA_VERSION) + + return Drop( + x = saveData.x, + y = saveData.y, + _item = gameItemsHolder.getItem(saveData.itemKey), + _amount = saveData.amount, + ).apply { + velocity.x = saveData.velocityX + velocity.y = saveData.velocityY + pickedUp = saveData.pickedUp + } + } } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java index 0213c97..f829913 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java @@ -3,8 +3,10 @@ package ru.deadsoftware.cavedroid.game.objects.drop; import org.jetbrains.annotations.NotNull; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.GameScope; +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto; import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; import ru.deadsoftware.cavedroid.game.model.item.Item; +import ru.deadsoftware.cavedroid.misc.Saveable; import javax.inject.Inject; import java.io.Serializable; @@ -12,7 +14,9 @@ import java.util.Iterator; import java.util.LinkedList; @GameScope -public class DropController implements Serializable { +public class DropController implements Serializable, Saveable { + + private static final int SAVE_DATA_VERSION = 1; public interface Callback { void run(Drop drop); @@ -59,4 +63,27 @@ public class DropController implements Serializable { return mDrops.iterator(); } + @Override + @NotNull + public SaveDataDto.DropControllerSaveData getSaveData() { + final LinkedList dropSaveData = new LinkedList<>(); + for (Drop drop : mDrops) { + dropSaveData.add(drop.getSaveData()); + } + return new SaveDataDto.DropControllerSaveData(SAVE_DATA_VERSION, dropSaveData); + } + + public static DropController fromSaveData( + SaveDataDto.DropControllerSaveData saveData, GameItemsHolder gameItemsHolder) { + saveData.verifyVersion(SAVE_DATA_VERSION); + + DropController controller = new DropController(); + + for (SaveDataDto.DropSaveData dropSaveData : saveData.getDrops()) { + controller.mDrops.add(Drop.Companion.fromSaveData(dropSaveData, gameItemsHolder)); + } + + return controller; + } + } diff --git a/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt b/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt new file mode 100644 index 0000000..e0d64e7 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt @@ -0,0 +1,55 @@ +package ru.deadsoftware.cavedroid.game.save + +import ru.deadsoftware.cavedroid.game.mobs.MobsController +import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.game.objects.container.ContainerController +import ru.deadsoftware.cavedroid.game.objects.drop.DropController + +class GameSaveData( + private var mobsController: MobsController?, + private var dropController: DropController?, + private var containerController: ContainerController?, + private var foreMap: Array>?, + private var backMap: Array>? +) { + + fun retrieveMobsController(): MobsController { + val value = requireNotNull(mobsController) + mobsController = null + return value + } + + fun retrieveDropController(): DropController { + val value = requireNotNull(dropController) + dropController = null + return value + } + + fun retrieveContainerController(): ContainerController { + val value = requireNotNull(containerController) + containerController = null + return value + } + + fun retrieveForeMap(): Array> { + val value = requireNotNull(foreMap) + foreMap = null + return value + } + + fun retrieveBackMap(): Array> { + val value = requireNotNull(backMap) + backMap = null + return value + } + + fun isEmpty(): Boolean { + return mobsController == null && + dropController == null && + containerController == null && + foreMap == null && + backMap == null + } + + +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt b/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt new file mode 100644 index 0000000..bd8c3d6 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt @@ -0,0 +1,255 @@ +package ru.deadsoftware.cavedroid.game.save + +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.files.FileHandle +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.decodeFromByteArray +import kotlinx.serialization.encodeToByteArray +import kotlinx.serialization.protobuf.ProtoBuf +import ru.deadsoftware.cavedroid.MainConfig +import ru.deadsoftware.cavedroid.game.GameItemsHolder +import ru.deadsoftware.cavedroid.game.mobs.MobsController +import ru.deadsoftware.cavedroid.game.model.block.Block +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto +import ru.deadsoftware.cavedroid.game.objects.container.ContainerController +import ru.deadsoftware.cavedroid.game.objects.drop.DropController +import ru.deadsoftware.cavedroid.game.ui.TooltipManager +import ru.deadsoftware.cavedroid.game.world.GameWorld +import java.nio.ByteBuffer +import java.util.zip.GZIPInputStream +import java.util.zip.GZIPOutputStream + +@OptIn(ExperimentalSerializationApi::class) +object GameSaveLoader { + + private const val MAP_SAVE_VERSION: UByte = 2u + + private const val SAVES_DIR = "/saves" + private const val DROP_FILE = "/drop.dat" + private const val MOBS_FILE = "/mobs.dat" + private const val CONTAINERS_FILE = "/containers.dat" + private const val DICT_FILE = "/dict" + private const val FOREMAP_FILE = "/foremap.dat.gz" + private const val BACKMAP_FILE = "/backmap.dat.gz" + + private fun Int.toByteArray(): ByteArray { + return ByteBuffer.allocate(Int.SIZE_BYTES) + .putInt(this) + .array() + } + + private fun Short.toByteArray(): ByteArray { + return ByteBuffer.allocate(Short.SIZE_BYTES) + .putShort(this) + .array() + } + + private fun buildBlocksDictionary( + foreMap: Array>, + backMap: Array> + ): Map { + val maps = sequenceOf(foreMap.asSequence(), backMap.asSequence()) + + return maps.flatten() + .flatMap(Array::asSequence) + .toSet() + .mapIndexed { index, block -> block.params.key to index } + .toMap() + } + + private fun saveDict(file: FileHandle, dict: Map) { + val result = dict.asSequence() + .sortedBy { it.value } + .joinToString(separator = "\n") { it.key } + .encodeToByteArray() + + file.writeBytes(result, false) + } + + private fun compressMap(map: Array>, dict: Map): ByteArray { + if (dict.size > 0xff) { + throw IllegalArgumentException("Cannot save this map as bytes") + } + + val width = map.size + val height = map[0].size + + val blocks = sequence { + for (y in 0 ..< height) { + for (x in 0 ..< width) { + yield(map[x][y]) + } + } + } + + val result = sequence { + var run = 0 + var runValue: UByte? = null + + yield(MAP_SAVE_VERSION.toByte()) + width.toByteArray().forEach { yield(it) } + height.toByteArray().forEach { yield(it) } + + blocks.forEach { block -> + val key = block.params.key + + val blockId = dict[key]?.toUByte() + ?: throw IllegalArgumentException("Dictionary does not contain key $key") + + if (blockId != runValue || run == Int.MAX_VALUE) { + if (run > 0 && runValue != null) { + run.toByteArray().forEach { yield(it) } + yield(runValue!!.toByte()) + } + run = 1 + runValue = blockId + } else { + run++ + } + } + + run.toByteArray().forEach { yield(it) } + yield(runValue!!.toByte()) + } + + return result.toList().toByteArray() + } + + private fun decompressMap( + bytes: ByteArray, + dict: List, + gameItemsHolder: GameItemsHolder + ): Array> { + val version = bytes.first().toUByte() + require(version == MAP_SAVE_VERSION) + + val width = ByteBuffer.wrap(bytes, 1, Int.SIZE_BYTES).getInt() + val height = ByteBuffer.wrap(bytes, 1 + Int.SIZE_BYTES, Int.SIZE_BYTES).getInt() + + val blocks = buildList { + for (i in 1 + (Int.SIZE_BYTES shl 1) .. bytes.lastIndex step Int.SIZE_BYTES + 1) { + val run = ByteBuffer.wrap(bytes, i, Int.SIZE_BYTES).getInt() + val blockId = bytes[i + Int.SIZE_BYTES].toUByte().toInt() + + for (j in 0 ..< run) { + add(gameItemsHolder.getBlock(dict[blockId])) + } + } + } + + return Array(width) { x -> + Array(height) { y -> + blocks[x + y * width] + } + } + } + + private fun loadMap( + gameItemsHolder: GameItemsHolder, + savesPath: String + ): Pair>, Array>> { + val dict = Gdx.files.absolute("$savesPath$DICT_FILE").readString().split("\n") + + val foreMap: Array> + with(GZIPInputStream(Gdx.files.absolute("$savesPath$FOREMAP_FILE").read())) { + foreMap = decompressMap(readBytes(), dict, gameItemsHolder) + close() + } + + val backMap: Array> + with(GZIPInputStream(Gdx.files.absolute("$savesPath$BACKMAP_FILE").read())) { + backMap = decompressMap(readBytes(), dict, gameItemsHolder) + close() + } + + return foreMap to backMap + } + + private fun saveMap(gameWorld: GameWorld, savesPath: String) { + val fullForeMap = gameWorld.fullForeMap + val fullBackMap = gameWorld.fullBackMap + + val dict = buildBlocksDictionary(fullForeMap, fullBackMap) + + saveDict(Gdx.files.absolute("$savesPath$DICT_FILE"), dict) + + with(GZIPOutputStream(Gdx.files.absolute("$savesPath$FOREMAP_FILE").write(false))) { + write(compressMap(fullForeMap, dict)) + close() + } + + with(GZIPOutputStream(Gdx.files.absolute("$savesPath$BACKMAP_FILE").write(false))) { + write(compressMap(fullBackMap, dict)) + close() + } + } + + fun load( + mainConfig: MainConfig, + gameItemsHolder: GameItemsHolder, + tooltipManager: TooltipManager + ): GameSaveData { + val gameFolder = mainConfig.gameFolder + val savesPath = "$gameFolder$SAVES_DIR" + + val dropFile = Gdx.files.absolute("$savesPath$DROP_FILE") + val mobsFile = Gdx.files.absolute("$savesPath$MOBS_FILE") + val containersFile = Gdx.files.absolute("$savesPath$CONTAINERS_FILE") + + val dropBytes = dropFile.readBytes() + val mobsBytes = mobsFile.readBytes() + val containersBytes = containersFile.readBytes() + + val dropController = ProtoBuf.decodeFromByteArray(dropBytes) + .let { saveData -> DropController.fromSaveData(saveData, gameItemsHolder) } + val mobsController = ProtoBuf.decodeFromByteArray(mobsBytes) + .let { saveData -> MobsController.fromSaveData(saveData, gameItemsHolder, tooltipManager) } + val containerController = ProtoBuf.decodeFromByteArray(containersBytes) + .let { saveData -> ContainerController.fromSaveData(saveData, dropController, gameItemsHolder) } + + val (foreMap, backMap) = loadMap(gameItemsHolder, savesPath) + + return GameSaveData(mobsController, dropController, containerController, foreMap, backMap) + } + + fun save( + mainConfig: MainConfig, + dropController: DropController, + mobsController: MobsController, + containerController: ContainerController, + gameWorld: GameWorld + ) { + val gameFolder = mainConfig.gameFolder + val savesPath = "$gameFolder$SAVES_DIR" + + Gdx.files.absolute(savesPath).mkdirs() + + val dropFile = Gdx.files.absolute("$savesPath$DROP_FILE") + val mobsFile = Gdx.files.absolute("$savesPath$MOBS_FILE") + val containersFile = Gdx.files.absolute("$savesPath$CONTAINERS_FILE") + + val dropBytes = ProtoBuf.encodeToByteArray(dropController.getSaveData()) + val mobsBytes = ProtoBuf.encodeToByteArray(mobsController.getSaveData()) + val containersBytes = ProtoBuf.encodeToByteArray(containerController.getSaveData()) + + dropFile.writeBytes(dropBytes, false) + mobsFile.writeBytes(mobsBytes, false) + containersFile.writeBytes(containersBytes, false) + + saveMap(gameWorld, savesPath) + } + + fun exists(mainConfig: MainConfig): Boolean { + val gameFolder = mainConfig.gameFolder + val savesPath = "$gameFolder$SAVES_DIR" + + return Gdx.files.absolute("$savesPath$DROP_FILE").exists() && + Gdx.files.absolute("$savesPath$MOBS_FILE").exists() && + Gdx.files.absolute("$savesPath$CONTAINERS_FILE").exists() && + Gdx.files.absolute("$savesPath$DICT_FILE").exists() && + Gdx.files.absolute("$savesPath$FOREMAP_FILE").exists() && + Gdx.files.absolute("$savesPath$BACKMAP_FILE").exists() + } + + +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java b/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java index 6a40fc5..29aeb8f 100644 --- a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java +++ b/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java @@ -1,8 +1,7 @@ package ru.deadsoftware.cavedroid.menu.submenus; -import com.badlogic.gdx.Gdx; import ru.deadsoftware.cavedroid.MainConfig; -import ru.deadsoftware.cavedroid.game.GameSaver; +import ru.deadsoftware.cavedroid.game.save.GameSaveLoader; import ru.deadsoftware.cavedroid.menu.MenuProc; import ru.deadsoftware.cavedroid.menu.objects.Button; import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener; @@ -36,7 +35,7 @@ public class MenuMain extends Menu { @Override protected void initButtons() { loadButtonsFromJson(mAssetLoader.getAssetHandle("json/menu_main_buttons.json")); - if (GameSaver.exists(mMainConfig)) { + if (GameSaveLoader.INSTANCE.exists(mMainConfig)) { getButtons().get("load_game").setType(Button.NORMAL); } } diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt b/core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt new file mode 100644 index 0000000..d350f1f --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt @@ -0,0 +1,7 @@ +package ru.deadsoftware.cavedroid.misc + +import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto + +interface Saveable { + fun getSaveData(): SaveDataDto +} -- 2.29.2 From 91283c3181af9700e20b5600f4e9017e0c31d33a Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 22 May 2024 02:51:38 +0700 Subject: [PATCH 08/16] Remove java serialization --- .../ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt | 1 - core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java | 8 +++----- .../ru/deadsoftware/cavedroid/game/mobs/MobsController.kt | 3 +-- .../deadsoftware/cavedroid/game/mobs/player/Inventory.kt | 5 +---- .../cavedroid/game/model/item/InventoryItem.kt | 4 +--- .../cavedroid/game/objects/container/Container.kt | 3 +-- .../game/objects/container/ContainerController.kt | 5 +---- .../cavedroid/game/objects/container/Furnace.kt | 1 - .../ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt | 1 - .../cavedroid/game/objects/drop/DropController.java | 3 +-- 10 files changed, 9 insertions(+), 25 deletions(-) diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt index 77e51a1..d4494a3 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt @@ -14,7 +14,6 @@ class FallingBlock( y: Float, ) : Mob(x, y, 1.px, 1.px, Direction.RIGHT, Type.FALLING_BLOCK, Int.MAX_VALUE) { - @Transient private var _block: Block? = null init { diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index 0f3610b..5d18755 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -10,19 +10,17 @@ import com.badlogic.gdx.utils.Timer; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto; import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; -import ru.deadsoftware.cavedroid.game.model.item.Item; import ru.deadsoftware.cavedroid.game.world.GameWorld; import ru.deadsoftware.cavedroid.misc.Saveable; import javax.annotation.CheckForNull; -import java.io.Serializable; import java.util.Collections; import java.util.List; /** * Mob class. */ -public abstract class Mob extends Rectangle implements Serializable, Saveable { +public abstract class Mob extends Rectangle implements Saveable { private static final float DAMAGE_TINT_TIMEOUT_S = 0.5f; private static final Color DAMAGE_TINT_COLOR = new Color(0xff8080ff); @@ -85,8 +83,8 @@ public abstract class Mob extends Rectangle implements Serializable, Saveable { protected int mMaxHealth; protected int mHealth; - private transient boolean mTakingDamage = false; - @CheckForNull private transient ResetTakeDamageTask mResetTakeDamageTask = null; + private boolean mTakingDamage = false; + @CheckForNull private ResetTakeDamageTask mResetTakeDamageTask = null; /** * @param x in pixels diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt index dc01e1e..4b2c209 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt @@ -6,7 +6,6 @@ import ru.deadsoftware.cavedroid.game.mobs.player.Player import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.ui.TooltipManager import ru.deadsoftware.cavedroid.misc.Saveable -import java.io.Serializable import java.util.* import javax.inject.Inject @@ -14,7 +13,7 @@ import javax.inject.Inject class MobsController @Inject constructor( gameItemsHolder: GameItemsHolder, tooltipManager: TooltipManager, -) : Serializable, Saveable { +) : Saveable { private val _mobs = LinkedList() diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt index 8f0b90d..91e8be1 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt @@ -7,7 +7,6 @@ import ru.deadsoftware.cavedroid.game.model.item.Item import ru.deadsoftware.cavedroid.game.objects.drop.Drop import ru.deadsoftware.cavedroid.game.ui.TooltipManager import ru.deadsoftware.cavedroid.misc.Saveable -import java.io.Serializable class Inventory @JvmOverloads constructor( val size: Int, @@ -15,14 +14,12 @@ class Inventory @JvmOverloads constructor( gameItemsHolder: GameItemsHolder, tooltipManager: TooltipManager, initialItems: List? = null -) : Serializable, Saveable { +) : Saveable { @Suppress("UNNECESSARY_LATEINIT") - @Transient private lateinit var tooltipManager: TooltipManager @Suppress("UNNECESSARY_LATEINIT") - @Transient private lateinit var fallbackItem: InventoryItem private val _items: Array diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt b/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt index 7190988..f420120 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt @@ -10,14 +10,13 @@ import ru.deadsoftware.cavedroid.misc.Saveable import ru.deadsoftware.cavedroid.misc.utils.drawSprite import ru.deadsoftware.cavedroid.misc.utils.drawString import ru.deadsoftware.cavedroid.misc.utils.px -import java.io.Serializable import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract class InventoryItem @JvmOverloads constructor( val itemKey: String, _amount: Int = 1, -) : Serializable, Saveable { +) : Saveable { var amount = _amount set(value) { @@ -28,7 +27,6 @@ class InventoryItem @JvmOverloads constructor( } } - @Transient private var _item: Item? = null var item: Item diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt index 05ec744..624f5d0 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt @@ -4,14 +4,13 @@ import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.misc.Saveable -import java.io.Serializable import javax.annotation.OverridingMethodsMustInvokeSuper abstract class Container @JvmOverloads constructor( val size: Int, gameItemsHolder: GameItemsHolder, initialItems: List? = null, -) : Serializable, Saveable { +) : Saveable { private val _items = Array(size) { index -> initialItems?.getOrNull(index) ?: gameItemsHolder.fallbackItem.toInventoryItem() diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt index bffb846..d2159f1 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt @@ -9,21 +9,18 @@ import ru.deadsoftware.cavedroid.game.model.item.InventoryItem.Companion.isNoneO import ru.deadsoftware.cavedroid.game.objects.drop.DropController import ru.deadsoftware.cavedroid.misc.Saveable import ru.deadsoftware.cavedroid.misc.utils.px -import java.io.Serializable import javax.inject.Inject @GameScope class ContainerController @Inject constructor( _dropController: DropController, _gameItemsHolder: GameItemsHolder -) : Serializable, Saveable { +) : Saveable { @Suppress("UNNECESSARY_LATEINIT") - @Transient private lateinit var dropController: DropController @Suppress("UNNECESSARY_LATEINIT") - @Transient private lateinit var gameItemsHolder: GameItemsHolder private val containerMap = mutableMapOf() diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt index 92eeab9..237006d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt @@ -35,7 +35,6 @@ class Furnace @JvmOverloads constructor( val isActive: Boolean get() = currentFuel != null - @Transient var currentFuel: Item? = null set(value) { currentFuelKey = value?.params?.key diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt index 548c44a..2b4f740 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt @@ -23,7 +23,6 @@ class Drop @JvmOverloads constructor( var pickedUp = false @Suppress("UNNECESSARY_LATEINIT") - @Transient lateinit var item: Item private set diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java index f829913..7b99676 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java @@ -9,12 +9,11 @@ import ru.deadsoftware.cavedroid.game.model.item.Item; import ru.deadsoftware.cavedroid.misc.Saveable; import javax.inject.Inject; -import java.io.Serializable; import java.util.Iterator; import java.util.LinkedList; @GameScope -public class DropController implements Serializable, Saveable { +public class DropController implements Saveable { private static final int SAVE_DATA_VERSION = 1; -- 2.29.2 From 0d6ab84418440a30f2de555cb30ce21af8dac12e Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 22 May 2024 20:03:32 +0700 Subject: [PATCH 09/16] Remove guava --- core/build.gradle | 1 - .../ru/deadsoftware/cavedroid/CaveGame.java | 4 +--- .../ru/deadsoftware/cavedroid/MainConfig.java | 15 +++++++------- .../cavedroid/game/GameModule.java | 5 ++--- .../cavedroid/game/GamePhysics.java | 10 +++++----- .../cavedroid/game/GameRenderer.java | 12 +++++------ .../cavedroid/game/GameScreen.java | 7 +++---- .../deadsoftware/cavedroid/game/mobs/Mob.java | 6 ++++-- .../cavedroid/game/mobs/package-info.java | 4 ---- .../cavedroid/game/mobs/player/Player.java | 7 +++---- .../game/objects/container/Container.kt | 2 -- .../cavedroid/game/objects/package-info.java | 4 ---- .../cavedroid/game/package-info.java | 4 ---- .../cavedroid/game/world/GameWorld.java | 20 +++++++++---------- .../game/world/GameWorldGenerator.kt | 2 +- .../cavedroid/menu/objects/package-info.java | 4 ---- .../cavedroid/menu/package-info.java | 4 ---- .../cavedroid/menu/submenus/package-info.java | 4 ---- .../misc/annotations/NonnullByDefault.java | 14 ------------- .../cavedroid/misc/package-info.java | 4 ---- .../deadsoftware/cavedroid/package-info.java | 4 ---- 21 files changed, 42 insertions(+), 95 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/mobs/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/objects/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/game/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/menu/objects/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/menu/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/menu/submenus/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/misc/annotations/NonnullByDefault.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/misc/package-info.java delete mode 100644 core/src/ru/deadsoftware/cavedroid/package-info.java diff --git a/core/build.gradle b/core/build.gradle index ac46757..bd932c3 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -17,7 +17,6 @@ dependencies { ksp "ru.fredboy:automultibind-ksp:1.0.0" api "com.badlogicgames.gdx:gdx:$gdxVersion" - api "com.google.guava:guava:$guavaVersion-android" api "com.google.dagger:dagger:$daggerVersion" implementation 'org.jetbrains:annotations:23.1.0' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" diff --git a/core/src/ru/deadsoftware/cavedroid/CaveGame.java b/core/src/ru/deadsoftware/cavedroid/CaveGame.java index 9ca34b8..219f5b4 100644 --- a/core/src/ru/deadsoftware/cavedroid/CaveGame.java +++ b/core/src/ru/deadsoftware/cavedroid/CaveGame.java @@ -3,14 +3,12 @@ package ru.deadsoftware.cavedroid; import com.badlogic.gdx.Application; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Graphics; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.game.GameScreen; import ru.deadsoftware.cavedroid.misc.Assets; import ru.deadsoftware.cavedroid.misc.utils.AssetLoader; import ru.deadsoftware.cavedroid.prefs.PreferencesStore; -import javax.annotation.Nullable; - public class CaveGame extends Game { private static final String TAG = "CaveGame"; diff --git a/core/src/ru/deadsoftware/cavedroid/MainConfig.java b/core/src/ru/deadsoftware/cavedroid/MainConfig.java index 3ffb506..61cef0a 100644 --- a/core/src/ru/deadsoftware/cavedroid/MainConfig.java +++ b/core/src/ru/deadsoftware/cavedroid/MainConfig.java @@ -1,11 +1,10 @@ package ru.deadsoftware.cavedroid; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.game.GameUiWindow; import ru.deadsoftware.cavedroid.game.input.Joystick; import ru.deadsoftware.cavedroid.prefs.PreferencesStore; -import javax.annotation.CheckForNull; -import javax.annotation.Nullable; import javax.inject.Inject; import javax.inject.Singleton; import java.util.HashMap; @@ -15,16 +14,16 @@ public class MainConfig { private final HashMap mPreferencesCache = new HashMap<>(); - @CheckForNull + @Nullable private FullscreenToggleListener mFullscreenToggleListener = null; private final CaveGame mCaveGame; private final PreferencesStore mPreferencesStore; - @CheckForNull + @Nullable private MainComponent mMainComponent; - @CheckForNull + @Nullable private Joystick mJoystick; private GameUiWindow mGameUiWindow; @@ -127,16 +126,16 @@ public class MainConfig { mAssetsPackPath = assetsPackPath; } - @CheckForNull + @Nullable public Joystick getJoystick() { return mJoystick; } - public void setJoystick(@CheckForNull Joystick joystick) { + public void setJoystick(@Nullable Joystick joystick) { mJoystick = joystick; } - @CheckForNull + @Nullable public String getPreference(String key) { if (mPreferencesCache.containsKey(key)) { return mPreferencesCache.get(key); diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java index 29aac7d..6c71d78 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameModule.java @@ -2,6 +2,7 @@ package ru.deadsoftware.cavedroid.game; import dagger.Module; import dagger.Provides; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.MainConfig; import ru.deadsoftware.cavedroid.game.mobs.MobsController; import ru.deadsoftware.cavedroid.game.model.block.Block; @@ -12,12 +13,10 @@ import ru.deadsoftware.cavedroid.game.save.GameSaveLoader; import ru.deadsoftware.cavedroid.game.ui.TooltipManager; import ru.deadsoftware.cavedroid.game.world.GameWorld; -import javax.annotation.CheckForNull; - @Module public class GameModule { - @CheckForNull + @Nullable private static GameSaveData data; public static boolean loaded = false; diff --git a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java index cece8e2..406ee34 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java @@ -4,6 +4,7 @@ import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.MainConfig; import ru.deadsoftware.cavedroid.game.mobs.Mob; import ru.deadsoftware.cavedroid.game.mobs.MobsController; @@ -14,7 +15,6 @@ import ru.deadsoftware.cavedroid.game.objects.drop.Drop; import ru.deadsoftware.cavedroid.game.objects.drop.DropController; import ru.deadsoftware.cavedroid.game.world.GameWorld; -import javax.annotation.CheckForNull; import javax.inject.Inject; import java.util.Iterator; @@ -68,7 +68,7 @@ public class GamePhysics { /** * @return colliding rect or null if no collision */ - @CheckForNull + @Nullable private Rectangle checkColl(Rectangle rect) { int minX = (int) ((rect.x + rect.width / 2) / 16) - 4; int minY = (int) ((rect.y + rect.height / 2) / 16) - 4; @@ -115,7 +115,7 @@ public class GamePhysics { /** * @return Rectangle representing magneting target for this drop */ - @CheckForNull + @Nullable private Rectangle getShiftedMagnetingPlayerRect(Drop drop) { final Player player = mMobsController.getPlayer(); @@ -185,7 +185,7 @@ public class GamePhysics { return; } - @CheckForNull Rectangle collidingRect = checkColl(mob); + @Nullable Rectangle collidingRect = checkColl(mob); if (collidingRect != null) { if (mob.canJump() && !mob.isFlyMode() && collidingRect.y >= mob.y + mob.height - 8) { @@ -225,7 +225,7 @@ public class GamePhysics { } private void mobYColl(Mob mob) { - @CheckForNull final Rectangle collidingRect = checkColl(mob); + @Nullable final Rectangle collidingRect = checkColl(mob); if (collidingRect != null) { int d = -1; diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java index 93dc8b9..e063e09 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.TimeUtils; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.MainConfig; import ru.deadsoftware.cavedroid.game.input.IKeyboardInputHandler; import ru.deadsoftware.cavedroid.game.input.IMouseInputHandler; @@ -30,7 +31,6 @@ import ru.deadsoftware.cavedroid.misc.Renderer; import ru.deadsoftware.cavedroid.misc.utils.MeasureUnitsUtilsKt; import ru.deadsoftware.cavedroid.misc.utils.RenderingUtilsKt; -import javax.annotation.CheckForNull; import javax.inject.Inject; import java.util.ArrayList; import java.util.Comparator; @@ -223,7 +223,7 @@ public class GameRenderer extends Renderer { } } - private boolean handleMouseAction(@CheckForNull MouseInputAction action) { + private boolean handleMouseAction(@Nullable MouseInputAction action) { if (action == null) { return false; } @@ -243,7 +243,7 @@ public class GameRenderer extends Renderer { } private boolean onMouseActionEvent(int mouseX, int mouseY, int button, boolean touchUp, int pointer) { - @CheckForNull MouseInputAction action = mMouseInputActionMapper + @Nullable MouseInputAction action = mMouseInputActionMapper .map((float) mouseX, (float) mouseY, getCameraViewport(), button, touchUp, pointer); return handleMouseAction(action); } @@ -322,20 +322,20 @@ public class GameRenderer extends Renderer { return false; } - @CheckForNull MouseInputAction action = + @Nullable MouseInputAction action = mMouseInputActionMapper.mapDragged(screenX, screenY, getCameraViewport(), pointer); return handleMouseAction(action); } @Override public boolean scrolled(float amountX, float amountY) { - @CheckForNull MouseInputAction action = mMouseInputActionMapper + @Nullable MouseInputAction action = mMouseInputActionMapper .mapScrolled(Gdx.input.getX(), Gdx.input.getY(), amountX, amountY, getCameraViewport()); return handleMouseAction(action); } private boolean handleKeyboardAction(int keycode, boolean isKeyDown) { - @CheckForNull final KeyboardInputAction action = mKeyboardInputActionMapper + @Nullable final KeyboardInputAction action = mKeyboardInputActionMapper .map(keycode, isKeyDown); if (action == null) { diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameScreen.java b/core/src/ru/deadsoftware/cavedroid/game/GameScreen.java index 749d7d4..d7546e9 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameScreen.java +++ b/core/src/ru/deadsoftware/cavedroid/game/GameScreen.java @@ -1,10 +1,9 @@ package ru.deadsoftware.cavedroid.game; -import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.MainConfig; -import javax.annotation.CheckForNull; import javax.inject.Inject; import javax.inject.Singleton; @@ -13,9 +12,9 @@ public class GameScreen implements Screen { private final MainConfig mMainConfig; - @CheckForNull + @Nullable private GameProc mGameProc; - @CheckForNull + @Nullable private GameItemsHolder mGameItemsHolder; @Inject diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java index 5d18755..3ee37d3 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java @@ -7,13 +7,13 @@ import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Timer; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto; import ru.deadsoftware.cavedroid.game.model.item.InventoryItem; import ru.deadsoftware.cavedroid.game.world.GameWorld; import ru.deadsoftware.cavedroid.misc.Saveable; -import javax.annotation.CheckForNull; import java.util.Collections; import java.util.List; @@ -84,7 +84,9 @@ public abstract class Mob extends Rectangle implements Saveable { protected int mHealth; private boolean mTakingDamage = false; - @CheckForNull private ResetTakeDamageTask mResetTakeDamageTask = null; + + @Nullable + private ResetTakeDamageTask mResetTakeDamageTask = null; /** * @param x in pixels diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/package-info.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/package-info.java deleted file mode 100644 index e76bf1b..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.game.mobs; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java index f454b0c..9aa503f 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java +++ b/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java @@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.mobs.Mob; import ru.deadsoftware.cavedroid.game.mobs.MobsController; @@ -20,8 +21,6 @@ import ru.deadsoftware.cavedroid.misc.Assets; import ru.deadsoftware.cavedroid.misc.utils.SpriteOrigin; import ru.deadsoftware.cavedroid.misc.utils.SpriteUtilsKt; -import javax.annotation.CheckForNull; - public class Player extends Mob { private static final int SAVE_DATA_VERSION = 1; @@ -48,7 +47,7 @@ public class Player extends Mob { public int cursorX = 0; public int cursorY = 0; - @CheckForNull + @Nullable private Vector2 spawnPoint = null; public ControlMode controlMode = ControlMode.WALK; @@ -231,7 +230,7 @@ public class Player extends Mob { final Block foregroundBlock = gameWorld.getForeMap(cursorX, cursorY); final Block backgroundBlock = gameWorld.getBackMap(cursorX, cursorY); - @CheckForNull final Block target; + @Nullable final Block target; if (checkBlockCanBeHit(foregroundBlock)) { target = foregroundBlock; diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt index 624f5d0..3938ef7 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt @@ -4,7 +4,6 @@ import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto import ru.deadsoftware.cavedroid.game.model.item.InventoryItem import ru.deadsoftware.cavedroid.misc.Saveable -import javax.annotation.OverridingMethodsMustInvokeSuper abstract class Container @JvmOverloads constructor( val size: Int, @@ -18,7 +17,6 @@ abstract class Container @JvmOverloads constructor( val items get() = _items.asList() as MutableList - @OverridingMethodsMustInvokeSuper open fun initItems(gameItemsHolder: GameItemsHolder) { _items.forEach { it.init(gameItemsHolder) } } diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/package-info.java b/core/src/ru/deadsoftware/cavedroid/game/objects/package-info.java deleted file mode 100644 index c5856a0..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.game.objects; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/package-info.java b/core/src/ru/deadsoftware/cavedroid/game/package-info.java deleted file mode 100644 index 6290746..0000000 --- a/core/src/ru/deadsoftware/cavedroid/game/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.game; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java index 05a7d5f..b53e0a6 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java +++ b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java @@ -2,6 +2,7 @@ package ru.deadsoftware.cavedroid.game.world; import com.badlogic.gdx.math.MathUtils; import kotlin.Pair; +import org.jetbrains.annotations.Nullable; import ru.deadsoftware.cavedroid.game.GameItemsHolder; import ru.deadsoftware.cavedroid.game.GameScope; import ru.deadsoftware.cavedroid.game.mobs.MobsController; @@ -16,7 +17,6 @@ import ru.deadsoftware.cavedroid.game.objects.container.Furnace; import ru.deadsoftware.cavedroid.game.objects.container.ContainerController; import ru.deadsoftware.cavedroid.misc.utils.MeasureUnitsUtilsKt; -import javax.annotation.CheckForNull; import javax.inject.Inject; @GameScope @@ -42,8 +42,8 @@ public class GameWorld { MobsController mobsController, GameItemsHolder gameItemsHolder, ContainerController containerController, - @CheckForNull Block[][] foreMap, - @CheckForNull Block[][] backMap) { + @Nullable Block[][] foreMap, + @Nullable Block[][] backMap) { mDropController = dropController; mMobsController = mobsController; mGameItemsHolder = gameItemsHolder; @@ -273,24 +273,24 @@ public class GameWorld { placeToBackground(x, y, mGameItemsHolder.getFallbackBlock()); } - @CheckForNull + @Nullable private Container getContainerAt(int x, int y, int z) { return mContainerController.getContainer(transformX(x), y, z); } - @CheckForNull + @Nullable public Container getForegroundContainer(int x, int y) { return getContainerAt(x, y, FOREGROUND_Z); } - @CheckForNull + @Nullable public Container getBackgroundContainer(int x, int y) { return getContainerAt(x, y, BACKGROUND_Z); } - @CheckForNull + @Nullable public Furnace getForegroundFurnace(int x, int y) { - @CheckForNull + @Nullable final Container container = getForegroundContainer(x, y); if (container instanceof Furnace) { @@ -300,9 +300,9 @@ public class GameWorld { return null; } - @CheckForNull + @Nullable public Furnace getBackgroundFurnace(int x, int y) { - @CheckForNull + @Nullable final Container container = getBackgroundContainer(x, y); if (container instanceof Furnace) { diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt index 004a56b..9562f08 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt @@ -1,12 +1,12 @@ package ru.deadsoftware.cavedroid.game.world -import com.google.common.primitives.Ints.min import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.model.block.Block import ru.deadsoftware.cavedroid.game.model.world.Biome import ru.deadsoftware.cavedroid.game.model.world.generator.WorldGeneratorConfig import kotlin.math.abs import kotlin.math.max +import kotlin.math.min import kotlin.random.Random class GameWorldGenerator( diff --git a/core/src/ru/deadsoftware/cavedroid/menu/objects/package-info.java b/core/src/ru/deadsoftware/cavedroid/menu/objects/package-info.java deleted file mode 100644 index b132187..0000000 --- a/core/src/ru/deadsoftware/cavedroid/menu/objects/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.menu.objects; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/menu/package-info.java b/core/src/ru/deadsoftware/cavedroid/menu/package-info.java deleted file mode 100644 index 304c211..0000000 --- a/core/src/ru/deadsoftware/cavedroid/menu/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.menu; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/package-info.java b/core/src/ru/deadsoftware/cavedroid/menu/submenus/package-info.java deleted file mode 100644 index 6c28493..0000000 --- a/core/src/ru/deadsoftware/cavedroid/menu/submenus/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.menu.submenus; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/NonnullByDefault.java b/core/src/ru/deadsoftware/cavedroid/misc/annotations/NonnullByDefault.java deleted file mode 100644 index bee4070..0000000 --- a/core/src/ru/deadsoftware/cavedroid/misc/annotations/NonnullByDefault.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.deadsoftware.cavedroid.misc.annotations; - -import javax.annotation.Nonnull; -import javax.annotation.meta.TypeQualifierDefault; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -import static java.lang.annotation.ElementType.*; - -@Nonnull -@TypeQualifierDefault({METHOD, FIELD, PARAMETER}) -@Retention(RetentionPolicy.RUNTIME) -public @interface NonnullByDefault { -} diff --git a/core/src/ru/deadsoftware/cavedroid/misc/package-info.java b/core/src/ru/deadsoftware/cavedroid/misc/package-info.java deleted file mode 100644 index acdf3e1..0000000 --- a/core/src/ru/deadsoftware/cavedroid/misc/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid.misc; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/package-info.java b/core/src/ru/deadsoftware/cavedroid/package-info.java deleted file mode 100644 index a566cb5..0000000 --- a/core/src/ru/deadsoftware/cavedroid/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@NonnullByDefault -package ru.deadsoftware.cavedroid; - -import ru.deadsoftware.cavedroid.misc.annotations.NonnullByDefault; \ No newline at end of file -- 2.29.2 From 4a1f204c0cbe56e4c85f29f0d9f89ccd907f5f3b Mon Sep 17 00:00:00 2001 From: fredboy Date: Wed, 22 May 2024 20:46:11 +0700 Subject: [PATCH 10/16] CaveGame in kotlin --- .../cavedroid/AndroidLauncher.java | 5 +- .../ru/deadsoftware/cavedroid/CaveGame.java | 114 ------------------ .../src/ru/deadsoftware/cavedroid/CaveGame.kt | 89 ++++++++++++++ .../cavedroid/misc/utils/GdxExtensions.kt | 5 + .../cavedroid/desktop/DesktopLauncher.java | 9 +- 5 files changed, 102 insertions(+), 120 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/CaveGame.java create mode 100644 core/src/ru/deadsoftware/cavedroid/CaveGame.kt create mode 100644 core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt diff --git a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java b/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java index 3f38ad4..714c8df 100644 --- a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java +++ b/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java @@ -18,9 +18,8 @@ public class AndroidLauncher extends AndroidApplication { e.printStackTrace(); exit(); } - CaveGame caveGame = new CaveGame(gameFolder, true, - new AndroidPreferencesStore(getApplicationContext()), null); - caveGame.setDebug(BuildConfig.DEBUG); + CaveGame caveGame = new CaveGame(gameFolder, true, BuildConfig.DEBUG, + new AndroidPreferencesStore(getApplicationContext())); initialize(caveGame, config); } diff --git a/core/src/ru/deadsoftware/cavedroid/CaveGame.java b/core/src/ru/deadsoftware/cavedroid/CaveGame.java deleted file mode 100644 index 219f5b4..0000000 --- a/core/src/ru/deadsoftware/cavedroid/CaveGame.java +++ /dev/null @@ -1,114 +0,0 @@ -package ru.deadsoftware.cavedroid; - -import com.badlogic.gdx.Application; -import com.badlogic.gdx.Game; -import com.badlogic.gdx.Gdx; -import org.jetbrains.annotations.Nullable; -import ru.deadsoftware.cavedroid.game.GameScreen; -import ru.deadsoftware.cavedroid.misc.Assets; -import ru.deadsoftware.cavedroid.misc.utils.AssetLoader; -import ru.deadsoftware.cavedroid.prefs.PreferencesStore; - -public class CaveGame extends Game { - - private static final String TAG = "CaveGame"; - - public static final String VERSION = "alpha 0.9.2"; - - private final MainConfig mMainConfig; - private final MainComponent mMainComponent; - private final AssetLoader mAssetLoader; - - private final String mGameFolder; - private final boolean mTouch; - private boolean mDebug; - - @Nullable - private final String mAssetsPackPath; - - public CaveGame(String gameFolder, - boolean touch, - PreferencesStore preferencesStore, - @Nullable String assetsPackPath) { - mGameFolder = gameFolder; - mTouch = touch; - mAssetsPackPath = assetsPackPath; - - mMainComponent = DaggerMainComponent - .builder() - .caveGame(this) - .preferencesStore(preferencesStore) - .build(); - - mMainConfig = mMainComponent.getMainConfig(); - mAssetLoader = mMainComponent.getAssetLoader(); - } - - public void setDebug(boolean debug) { - mDebug = debug; - } - - private void initConfig() { - int width = 480; - int height = (int) (width * ((float) Gdx.graphics.getHeight() / Gdx.graphics.getWidth())); - - mMainConfig.setMainComponent(mMainComponent); - mMainConfig.setGameFolder(mGameFolder); - mMainConfig.setTouch(mTouch); - mMainConfig.setWidth(width); - mMainConfig.setHeight(height); - mMainConfig.setShowInfo(mDebug); - mMainConfig.setAssetsPackPath(mAssetsPackPath); - - if (mDebug) { - Gdx.app.setLogLevel(Application.LOG_DEBUG); - } else { - Gdx.app.setLogLevel(Application.LOG_ERROR); - } - - mMainConfig.setFullscreenToggleListener((value) -> { - if (value) { - Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); - } else { - Gdx.graphics.setWindowedMode(width, height); - } - }); - } - - public void newGame(int gameMode) { - GameScreen gameScreen = mMainComponent.getGameScreen(); - gameScreen.newGame(gameMode); - setScreen(gameScreen); - } - - public void loadGame() { - GameScreen gameScreen = mMainComponent.getGameScreen(); - gameScreen.loadGame(); - setScreen(gameScreen); - } - - public void quitGame() { - if (screen != null) { - screen.dispose(); - } - setScreen(mMainComponent.getMenuScreen()); - } - - @Override - public void create() { - Gdx.files.absolute(mGameFolder).mkdirs(); - initConfig(); - - Gdx.app.debug(TAG, mGameFolder); - Assets.load(mAssetLoader); - setScreen(mMainComponent.getMenuScreen()); - } - - @Override - public void dispose() { - if (screen != null) { - screen.dispose(); - } - Assets.dispose(); - } -} diff --git a/core/src/ru/deadsoftware/cavedroid/CaveGame.kt b/core/src/ru/deadsoftware/cavedroid/CaveGame.kt new file mode 100644 index 0000000..225dd3a --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/CaveGame.kt @@ -0,0 +1,89 @@ +package ru.deadsoftware.cavedroid + +import com.badlogic.gdx.Application +import com.badlogic.gdx.Game +import com.badlogic.gdx.Gdx +import ru.deadsoftware.cavedroid.misc.Assets +import ru.deadsoftware.cavedroid.misc.utils.AssetLoader +import ru.deadsoftware.cavedroid.misc.utils.ratio +import ru.deadsoftware.cavedroid.prefs.PreferencesStore + +class CaveGame( + private val gameDataDirectoryPath: String, + private val isTouchScreen: Boolean, + private val isDebug: Boolean, + private val preferencesStore: PreferencesStore, +) : Game() { + + private val mainComponent: MainComponent + private val mainConfig: MainConfig + + private val assetLoader: AssetLoader + + init { + mainComponent = DaggerMainComponent.builder() + .caveGame(this) + .preferencesStore(preferencesStore) + .build() + + mainConfig = mainComponent.mainConfig + assetLoader = mainComponent.assetLoader + } + + private fun initMainConfig() { + val width = DEFAULT_VIEWPORT_WIDTH + val height = width / Gdx.graphics.ratio + + mainConfig.mainComponent = mainComponent + mainConfig.gameFolder = gameDataDirectoryPath + mainConfig.isTouch = isTouchScreen + mainConfig.width = width + mainConfig.height = height + mainConfig.isShowInfo = isDebug + + Gdx.app.logLevel = if (isDebug) Application.LOG_DEBUG else Application.LOG_ERROR + + mainConfig.setFullscreenToggleListener { isFullscreen -> + if (isFullscreen) { + Gdx.graphics.setFullscreenMode(Gdx.graphics.displayMode); + } else { + Gdx.graphics.setWindowedMode(width.toInt(), height.toInt()); + } + } + } + + fun newGame(gameMode: Int) { + setScreen(mainComponent.gameScreen.apply { newGame(gameMode) }) + } + + fun loadGame() { + setScreen(mainComponent.gameScreen.apply { loadGame() }) + } + + fun quitGame() { + screen?.dispose() + setScreen(mainComponent.menuScreen) + } + + override fun create() { + Gdx.files.absolute(gameDataDirectoryPath).mkdirs() + initMainConfig() + + Assets.load(assetLoader) + setScreen(mainComponent.menuScreen) + } + + override fun dispose() { + screen?.dispose() + Assets.dispose() + } + + + companion object { + private const val TAG = "CaveGame" + private const val DEFAULT_VIEWPORT_WIDTH = 480f + + const val VERSION = "alpha 0.9.2" + } + +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt b/core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt new file mode 100644 index 0000000..1c80048 --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt @@ -0,0 +1,5 @@ +package ru.deadsoftware.cavedroid.misc.utils + +import com.badlogic.gdx.Graphics + +val Graphics.ratio get() = width.toFloat() / height.toFloat() \ No newline at end of file diff --git a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java b/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java index 5903920..7137497 100644 --- a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java +++ b/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java @@ -35,9 +35,12 @@ class DesktopLauncher { } } - CaveGame caveGame = new CaveGame(System.getProperty("user.home") + "/.cavedroid", touch, - new DesktopPreferencesStore(), assetsPath); - caveGame.setDebug(debug); + CaveGame caveGame = new CaveGame( + System.getProperty("user.home") + "/.cavedroid", + touch, + debug, + new DesktopPreferencesStore() + ); new Lwjgl3Application(caveGame, config); } -- 2.29.2 From 711dc02adaeda8ee8e32aeb4ceedba6612de6764 Mon Sep 17 00:00:00 2001 From: fredboy Date: Fri, 24 May 2024 16:53:05 +0700 Subject: [PATCH 11/16] AndroidLauncher in kotlin --- .../cavedroid/AndroidLauncher.java | 29 ---------------- .../deadsoftware/cavedroid/AndroidLauncher.kt | 34 +++++++++++++++++++ 2 files changed, 34 insertions(+), 29 deletions(-) delete mode 100644 android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java create mode 100644 android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt diff --git a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java b/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java deleted file mode 100644 index 714c8df..0000000 --- a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.deadsoftware.cavedroid; - -import android.content.pm.PackageManager; -import android.os.Bundle; -import com.badlogic.gdx.backends.android.AndroidApplication; -import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; - -public class AndroidLauncher extends AndroidApplication { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); - config.useImmersiveMode = true; - String gameFolder = ""; - try { - gameFolder = getPackageManager().getPackageInfo(getPackageName(), 0).applicationInfo.dataDir; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - exit(); - } - CaveGame caveGame = new CaveGame(gameFolder, true, BuildConfig.DEBUG, - new AndroidPreferencesStore(getApplicationContext())); - initialize(caveGame, config); - } - - @Override - public void onBackPressed() { - } -} diff --git a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt b/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt new file mode 100644 index 0000000..b6fff78 --- /dev/null +++ b/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt @@ -0,0 +1,34 @@ +package ru.deadsoftware.cavedroid + +import android.os.Bundle +import com.badlogic.gdx.backends.android.AndroidApplication +import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration + +class AndroidLauncher : AndroidApplication() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val gameDataDirectoryPath = packageManager.getPackageInfo(packageName, 0) + .applicationInfo.dataDir; + + val config = AndroidApplicationConfiguration() + config.useImmersiveMode = true + + initialize( + /* listener = */ CaveGame( + gameDataDirectoryPath = gameDataDirectoryPath, + isTouchScreen = true, + isDebug = BuildConfig.DEBUG, + preferencesStore = AndroidPreferencesStore(applicationContext) + ), + /* config = */ config + ) + } + + @Suppress("OVERRIDE_DEPRECATION") + override fun onBackPressed() { + // ignore + } + +} \ No newline at end of file -- 2.29.2 From 9ea8254258b959fabb480eef17c0973da9b9acee Mon Sep 17 00:00:00 2001 From: fredboy Date: Sat, 25 May 2024 10:42:39 +0700 Subject: [PATCH 12/16] Move assets to root --- {android/assets => assets}/font.fnt | 0 {android/assets => assets}/font.png | Bin {android/assets => assets}/gamelogo.png | Bin {android/assets => assets}/icons/icon128.png | Bin {android/assets => assets}/icons/icon256.png | Bin {android/assets => assets}/icons/icon512.png | Bin {android/assets => assets}/joy_background.png | Bin {android/assets => assets}/joy_stick.png | Bin {android/assets => assets}/json/crafting.json | 0 {android/assets => assets}/json/game_items.json | 0 .../assets => assets}/json/menu_main_buttons.json | 0 .../json/menu_new_game_buttons.json | 0 .../json/menu_options_buttons.json | 0 .../assets => assets}/json/texture_regions.json | 0 {android/assets => assets}/json/touch_buttons.json | 0 {android/assets => assets}/pp/allitems.png | Bin {android/assets => assets}/pp/background.png | Bin {android/assets => assets}/pp/background_top.png | Bin {android/assets => assets}/pp/break.png | Bin {android/assets => assets}/pp/buttons.png | Bin {android/assets => assets}/pp/chest.png | Bin {android/assets => assets}/pp/chest_large.png | Bin {android/assets => assets}/pp/crafting_table.png | Bin {android/assets => assets}/pp/furnace.png | Bin {android/assets => assets}/pp/gui.png | Bin {android/assets => assets}/pp/health.png | Bin {android/assets => assets}/pp/inventory.png | Bin {android/assets => assets}/pp/mobs/char/0_0.png | Bin {android/assets => assets}/pp/mobs/char/0_1.png | Bin {android/assets => assets}/pp/mobs/char/0_2.png | Bin {android/assets => assets}/pp/mobs/char/0_3.png | Bin {android/assets => assets}/pp/mobs/char/1_0.png | Bin {android/assets => assets}/pp/mobs/char/1_1.png | Bin {android/assets => assets}/pp/mobs/char/1_2.png | Bin {android/assets => assets}/pp/mobs/char/1_3.png | Bin {android/assets => assets}/pp/mobs/pig/0_0.png | Bin {android/assets => assets}/pp/mobs/pig/0_1.png | Bin {android/assets => assets}/pp/mobs/pig/1_0.png | Bin {android/assets => assets}/pp/mobs/pig/1_1.png | Bin {android/assets => assets}/pp/shade.png | Bin .../assets => assets}/pp/textures/blocks/bed_l.png | Bin .../assets => assets}/pp/textures/blocks/bed_r.png | Bin .../pp/textures/blocks/bedrock.png | Bin .../pp/textures/blocks/bookshelf.png | Bin .../assets => assets}/pp/textures/blocks/bricks.png | Bin .../assets => assets}/pp/textures/blocks/cactus.png | Bin .../assets => assets}/pp/textures/blocks/cake.png | Bin .../assets => assets}/pp/textures/blocks/chest.png | Bin .../assets => assets}/pp/textures/blocks/clay.png | Bin .../pp/textures/blocks/coal_block.png | Bin .../pp/textures/blocks/coal_ore.png | Bin .../pp/textures/blocks/cobblestone.png | Bin .../pp/textures/blocks/cobblestone_mossy.png | Bin .../pp/textures/blocks/crafting_table.png | Bin .../pp/textures/blocks/dandelion.png | Bin .../pp/textures/blocks/deadbush.png | Bin .../pp/textures/blocks/diamond_block.png | Bin .../pp/textures/blocks/diamond_ore.png | Bin .../assets => assets}/pp/textures/blocks/dirt.png | Bin .../pp/textures/blocks/furnace.png | Bin .../assets => assets}/pp/textures/blocks/glass.png | Bin .../pp/textures/blocks/gold_block.png | Bin .../pp/textures/blocks/gold_ore.png | Bin .../assets => assets}/pp/textures/blocks/grass.png | Bin .../pp/textures/blocks/grass_snowed.png | Bin .../assets => assets}/pp/textures/blocks/gravel.png | Bin .../pp/textures/blocks/iron_bars.png | Bin .../pp/textures/blocks/iron_block.png | Bin .../pp/textures/blocks/iron_ore.png | Bin .../assets => assets}/pp/textures/blocks/ladder.png | Bin .../pp/textures/blocks/lapis_block.png | Bin .../pp/textures/blocks/lapis_ore.png | Bin .../pp/textures/blocks/lava_flow.png | Bin .../pp/textures/blocks/lava_still.png | Bin .../pp/textures/blocks/leaves_oak.png | Bin .../pp/textures/blocks/leaves_spruce.png | Bin .../pp/textures/blocks/log_birch.png | Bin .../pp/textures/blocks/log_oak.png | Bin .../pp/textures/blocks/log_spruce.png | Bin .../pp/textures/blocks/mushroom_brown.png | Bin .../pp/textures/blocks/mushroom_red.png | Bin .../pp/textures/blocks/noteblock.png | Bin .../pp/textures/blocks/obsidian.png | Bin .../pp/textures/blocks/planks_birch.png | Bin .../pp/textures/blocks/planks_oak.png | Bin .../pp/textures/blocks/planks_spruce.png | Bin .../assets => assets}/pp/textures/blocks/rose.png | Bin .../assets => assets}/pp/textures/blocks/sand.png | Bin .../pp/textures/blocks/sandstone.png | Bin .../pp/textures/blocks/sapling_birch.png | Bin .../pp/textures/blocks/sapling_oak.png | Bin .../pp/textures/blocks/sapling_spruce.png | Bin .../assets => assets}/pp/textures/blocks/snow.png | Bin .../assets => assets}/pp/textures/blocks/sponge.png | Bin .../pp/textures/blocks/sponge_wet.png | Bin .../assets => assets}/pp/textures/blocks/stone.png | Bin .../pp/textures/blocks/stone_slab.png | Bin .../pp/textures/blocks/stonebrick.png | Bin .../pp/textures/blocks/tallgrass.png | Bin .../pp/textures/blocks/water_flow.png | Bin .../pp/textures/blocks/water_still.png | Bin .../assets => assets}/pp/textures/blocks/web.png | Bin .../pp/textures/blocks/wool_colored_black.png | Bin .../pp/textures/blocks/wool_colored_blue.png | Bin .../pp/textures/blocks/wool_colored_brown.png | Bin .../pp/textures/blocks/wool_colored_cyan.png | Bin .../pp/textures/blocks/wool_colored_gray.png | Bin .../pp/textures/blocks/wool_colored_green.png | Bin .../pp/textures/blocks/wool_colored_light_blue.png | Bin .../pp/textures/blocks/wool_colored_lime.png | Bin .../pp/textures/blocks/wool_colored_magenta.png | Bin .../pp/textures/blocks/wool_colored_orange.png | Bin .../pp/textures/blocks/wool_colored_pink.png | Bin .../pp/textures/blocks/wool_colored_purple.png | Bin .../pp/textures/blocks/wool_colored_red.png | Bin .../pp/textures/blocks/wool_colored_silver.png | Bin .../pp/textures/blocks/wool_colored_white.png | Bin .../pp/textures/blocks/wool_colored_yellow.png | Bin .../assets => assets}/pp/textures/items/bed.png | Bin .../pp/textures/items/bucket_empty.png | Bin .../pp/textures/items/bucket_lava.png | Bin .../pp/textures/items/bucket_milk.png | Bin .../pp/textures/items/bucket_water.png | Bin .../pp/textures/items/charcoal.png | Bin .../assets => assets}/pp/textures/items/coal.png | Bin .../assets => assets}/pp/textures/items/diamond.png | Bin .../pp/textures/items/diamond_axe.png | Bin .../pp/textures/items/diamond_hoe.png | Bin .../pp/textures/items/diamond_pickaxe.png | Bin .../pp/textures/items/diamond_shovel.png | Bin .../pp/textures/items/diamond_sword.png | Bin .../pp/textures/items/gold_axe.png | Bin .../pp/textures/items/gold_hoe.png | Bin .../pp/textures/items/gold_ingot.png | Bin .../pp/textures/items/gold_pickaxe.png | Bin .../pp/textures/items/gold_shovel.png | Bin .../pp/textures/items/gold_sword.png | Bin .../pp/textures/items/iron_axe.png | Bin .../pp/textures/items/iron_hoe.png | Bin .../pp/textures/items/iron_ingot.png | Bin .../pp/textures/items/iron_pickaxe.png | Bin .../pp/textures/items/iron_shovel.png | Bin .../pp/textures/items/iron_sword.png | Bin .../pp/textures/items/lapis_lazuli.png | Bin .../pp/textures/items/porkchop_cooked.png | Bin .../pp/textures/items/porkchop_raw.png | Bin .../assets => assets}/pp/textures/items/shears.png | Bin .../pp/textures/items/snowball.png | Bin .../pp/textures/items/spawn_egg.png | Bin .../assets => assets}/pp/textures/items/stick.png | Bin .../pp/textures/items/stone_axe.png | Bin .../pp/textures/items/stone_hoe.png | Bin .../pp/textures/items/stone_pickaxe.png | Bin .../pp/textures/items/stone_shovel.png | Bin .../pp/textures/items/stone_sword.png | Bin .../pp/textures/items/wood_axe.png | Bin .../pp/textures/items/wood_hoe.png | Bin .../pp/textures/items/wood_pickaxe.png | Bin .../pp/textures/items/wood_shovel.png | Bin .../pp/textures/items/wood_sword.png | Bin {android/assets => assets}/touch_gui.png | Bin 161 files changed, 0 insertions(+), 0 deletions(-) rename {android/assets => assets}/font.fnt (100%) rename {android/assets => assets}/font.png (100%) rename {android/assets => assets}/gamelogo.png (100%) rename {android/assets => assets}/icons/icon128.png (100%) rename {android/assets => assets}/icons/icon256.png (100%) rename {android/assets => assets}/icons/icon512.png (100%) rename {android/assets => assets}/joy_background.png (100%) rename {android/assets => assets}/joy_stick.png (100%) rename {android/assets => assets}/json/crafting.json (100%) rename {android/assets => assets}/json/game_items.json (100%) rename {android/assets => assets}/json/menu_main_buttons.json (100%) rename {android/assets => assets}/json/menu_new_game_buttons.json (100%) rename {android/assets => assets}/json/menu_options_buttons.json (100%) rename {android/assets => assets}/json/texture_regions.json (100%) rename {android/assets => assets}/json/touch_buttons.json (100%) rename {android/assets => assets}/pp/allitems.png (100%) rename {android/assets => assets}/pp/background.png (100%) rename {android/assets => assets}/pp/background_top.png (100%) rename {android/assets => assets}/pp/break.png (100%) rename {android/assets => assets}/pp/buttons.png (100%) rename {android/assets => assets}/pp/chest.png (100%) rename {android/assets => assets}/pp/chest_large.png (100%) rename {android/assets => assets}/pp/crafting_table.png (100%) rename {android/assets => assets}/pp/furnace.png (100%) rename {android/assets => assets}/pp/gui.png (100%) rename {android/assets => assets}/pp/health.png (100%) rename {android/assets => assets}/pp/inventory.png (100%) rename {android/assets => assets}/pp/mobs/char/0_0.png (100%) rename {android/assets => assets}/pp/mobs/char/0_1.png (100%) rename {android/assets => assets}/pp/mobs/char/0_2.png (100%) rename {android/assets => assets}/pp/mobs/char/0_3.png (100%) rename {android/assets => assets}/pp/mobs/char/1_0.png (100%) rename {android/assets => assets}/pp/mobs/char/1_1.png (100%) rename {android/assets => assets}/pp/mobs/char/1_2.png (100%) rename {android/assets => assets}/pp/mobs/char/1_3.png (100%) rename {android/assets => assets}/pp/mobs/pig/0_0.png (100%) rename {android/assets => assets}/pp/mobs/pig/0_1.png (100%) rename {android/assets => assets}/pp/mobs/pig/1_0.png (100%) rename {android/assets => assets}/pp/mobs/pig/1_1.png (100%) rename {android/assets => assets}/pp/shade.png (100%) rename {android/assets => assets}/pp/textures/blocks/bed_l.png (100%) rename {android/assets => assets}/pp/textures/blocks/bed_r.png (100%) rename {android/assets => assets}/pp/textures/blocks/bedrock.png (100%) rename {android/assets => assets}/pp/textures/blocks/bookshelf.png (100%) rename {android/assets => assets}/pp/textures/blocks/bricks.png (100%) rename {android/assets => assets}/pp/textures/blocks/cactus.png (100%) rename {android/assets => assets}/pp/textures/blocks/cake.png (100%) rename {android/assets => assets}/pp/textures/blocks/chest.png (100%) rename {android/assets => assets}/pp/textures/blocks/clay.png (100%) rename {android/assets => assets}/pp/textures/blocks/coal_block.png (100%) rename {android/assets => assets}/pp/textures/blocks/coal_ore.png (100%) rename {android/assets => assets}/pp/textures/blocks/cobblestone.png (100%) rename {android/assets => assets}/pp/textures/blocks/cobblestone_mossy.png (100%) rename {android/assets => assets}/pp/textures/blocks/crafting_table.png (100%) rename {android/assets => assets}/pp/textures/blocks/dandelion.png (100%) rename {android/assets => assets}/pp/textures/blocks/deadbush.png (100%) rename {android/assets => assets}/pp/textures/blocks/diamond_block.png (100%) rename {android/assets => assets}/pp/textures/blocks/diamond_ore.png (100%) rename {android/assets => assets}/pp/textures/blocks/dirt.png (100%) rename {android/assets => assets}/pp/textures/blocks/furnace.png (100%) rename {android/assets => assets}/pp/textures/blocks/glass.png (100%) rename {android/assets => assets}/pp/textures/blocks/gold_block.png (100%) rename {android/assets => assets}/pp/textures/blocks/gold_ore.png (100%) rename {android/assets => assets}/pp/textures/blocks/grass.png (100%) rename {android/assets => assets}/pp/textures/blocks/grass_snowed.png (100%) rename {android/assets => assets}/pp/textures/blocks/gravel.png (100%) rename {android/assets => assets}/pp/textures/blocks/iron_bars.png (100%) rename {android/assets => assets}/pp/textures/blocks/iron_block.png (100%) rename {android/assets => assets}/pp/textures/blocks/iron_ore.png (100%) rename {android/assets => assets}/pp/textures/blocks/ladder.png (100%) rename {android/assets => assets}/pp/textures/blocks/lapis_block.png (100%) rename {android/assets => assets}/pp/textures/blocks/lapis_ore.png (100%) rename {android/assets => assets}/pp/textures/blocks/lava_flow.png (100%) rename {android/assets => assets}/pp/textures/blocks/lava_still.png (100%) rename {android/assets => assets}/pp/textures/blocks/leaves_oak.png (100%) rename {android/assets => assets}/pp/textures/blocks/leaves_spruce.png (100%) rename {android/assets => assets}/pp/textures/blocks/log_birch.png (100%) rename {android/assets => assets}/pp/textures/blocks/log_oak.png (100%) rename {android/assets => assets}/pp/textures/blocks/log_spruce.png (100%) rename {android/assets => assets}/pp/textures/blocks/mushroom_brown.png (100%) rename {android/assets => assets}/pp/textures/blocks/mushroom_red.png (100%) rename {android/assets => assets}/pp/textures/blocks/noteblock.png (100%) rename {android/assets => assets}/pp/textures/blocks/obsidian.png (100%) rename {android/assets => assets}/pp/textures/blocks/planks_birch.png (100%) rename {android/assets => assets}/pp/textures/blocks/planks_oak.png (100%) rename {android/assets => assets}/pp/textures/blocks/planks_spruce.png (100%) rename {android/assets => assets}/pp/textures/blocks/rose.png (100%) rename {android/assets => assets}/pp/textures/blocks/sand.png (100%) rename {android/assets => assets}/pp/textures/blocks/sandstone.png (100%) rename {android/assets => assets}/pp/textures/blocks/sapling_birch.png (100%) rename {android/assets => assets}/pp/textures/blocks/sapling_oak.png (100%) rename {android/assets => assets}/pp/textures/blocks/sapling_spruce.png (100%) rename {android/assets => assets}/pp/textures/blocks/snow.png (100%) rename {android/assets => assets}/pp/textures/blocks/sponge.png (100%) rename {android/assets => assets}/pp/textures/blocks/sponge_wet.png (100%) rename {android/assets => assets}/pp/textures/blocks/stone.png (100%) rename {android/assets => assets}/pp/textures/blocks/stone_slab.png (100%) rename {android/assets => assets}/pp/textures/blocks/stonebrick.png (100%) rename {android/assets => assets}/pp/textures/blocks/tallgrass.png (100%) rename {android/assets => assets}/pp/textures/blocks/water_flow.png (100%) rename {android/assets => assets}/pp/textures/blocks/water_still.png (100%) rename {android/assets => assets}/pp/textures/blocks/web.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_black.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_blue.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_brown.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_cyan.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_gray.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_green.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_light_blue.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_lime.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_magenta.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_orange.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_pink.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_purple.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_red.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_silver.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_white.png (100%) rename {android/assets => assets}/pp/textures/blocks/wool_colored_yellow.png (100%) rename {android/assets => assets}/pp/textures/items/bed.png (100%) rename {android/assets => assets}/pp/textures/items/bucket_empty.png (100%) rename {android/assets => assets}/pp/textures/items/bucket_lava.png (100%) rename {android/assets => assets}/pp/textures/items/bucket_milk.png (100%) rename {android/assets => assets}/pp/textures/items/bucket_water.png (100%) rename {android/assets => assets}/pp/textures/items/charcoal.png (100%) rename {android/assets => assets}/pp/textures/items/coal.png (100%) rename {android/assets => assets}/pp/textures/items/diamond.png (100%) rename {android/assets => assets}/pp/textures/items/diamond_axe.png (100%) rename {android/assets => assets}/pp/textures/items/diamond_hoe.png (100%) rename {android/assets => assets}/pp/textures/items/diamond_pickaxe.png (100%) rename {android/assets => assets}/pp/textures/items/diamond_shovel.png (100%) rename {android/assets => assets}/pp/textures/items/diamond_sword.png (100%) rename {android/assets => assets}/pp/textures/items/gold_axe.png (100%) rename {android/assets => assets}/pp/textures/items/gold_hoe.png (100%) rename {android/assets => assets}/pp/textures/items/gold_ingot.png (100%) rename {android/assets => assets}/pp/textures/items/gold_pickaxe.png (100%) rename {android/assets => assets}/pp/textures/items/gold_shovel.png (100%) rename {android/assets => assets}/pp/textures/items/gold_sword.png (100%) rename {android/assets => assets}/pp/textures/items/iron_axe.png (100%) rename {android/assets => assets}/pp/textures/items/iron_hoe.png (100%) rename {android/assets => assets}/pp/textures/items/iron_ingot.png (100%) rename {android/assets => assets}/pp/textures/items/iron_pickaxe.png (100%) rename {android/assets => assets}/pp/textures/items/iron_shovel.png (100%) rename {android/assets => assets}/pp/textures/items/iron_sword.png (100%) rename {android/assets => assets}/pp/textures/items/lapis_lazuli.png (100%) rename {android/assets => assets}/pp/textures/items/porkchop_cooked.png (100%) rename {android/assets => assets}/pp/textures/items/porkchop_raw.png (100%) rename {android/assets => assets}/pp/textures/items/shears.png (100%) rename {android/assets => assets}/pp/textures/items/snowball.png (100%) rename {android/assets => assets}/pp/textures/items/spawn_egg.png (100%) rename {android/assets => assets}/pp/textures/items/stick.png (100%) rename {android/assets => assets}/pp/textures/items/stone_axe.png (100%) rename {android/assets => assets}/pp/textures/items/stone_hoe.png (100%) rename {android/assets => assets}/pp/textures/items/stone_pickaxe.png (100%) rename {android/assets => assets}/pp/textures/items/stone_shovel.png (100%) rename {android/assets => assets}/pp/textures/items/stone_sword.png (100%) rename {android/assets => assets}/pp/textures/items/wood_axe.png (100%) rename {android/assets => assets}/pp/textures/items/wood_hoe.png (100%) rename {android/assets => assets}/pp/textures/items/wood_pickaxe.png (100%) rename {android/assets => assets}/pp/textures/items/wood_shovel.png (100%) rename {android/assets => assets}/pp/textures/items/wood_sword.png (100%) rename {android/assets => assets}/touch_gui.png (100%) diff --git a/android/assets/font.fnt b/assets/font.fnt similarity index 100% rename from android/assets/font.fnt rename to assets/font.fnt diff --git a/android/assets/font.png b/assets/font.png similarity index 100% rename from android/assets/font.png rename to assets/font.png diff --git a/android/assets/gamelogo.png b/assets/gamelogo.png similarity index 100% rename from android/assets/gamelogo.png rename to assets/gamelogo.png diff --git a/android/assets/icons/icon128.png b/assets/icons/icon128.png similarity index 100% rename from android/assets/icons/icon128.png rename to assets/icons/icon128.png diff --git a/android/assets/icons/icon256.png b/assets/icons/icon256.png similarity index 100% rename from android/assets/icons/icon256.png rename to assets/icons/icon256.png diff --git a/android/assets/icons/icon512.png b/assets/icons/icon512.png similarity index 100% rename from android/assets/icons/icon512.png rename to assets/icons/icon512.png diff --git a/android/assets/joy_background.png b/assets/joy_background.png similarity index 100% rename from android/assets/joy_background.png rename to assets/joy_background.png diff --git a/android/assets/joy_stick.png b/assets/joy_stick.png similarity index 100% rename from android/assets/joy_stick.png rename to assets/joy_stick.png diff --git a/android/assets/json/crafting.json b/assets/json/crafting.json similarity index 100% rename from android/assets/json/crafting.json rename to assets/json/crafting.json diff --git a/android/assets/json/game_items.json b/assets/json/game_items.json similarity index 100% rename from android/assets/json/game_items.json rename to assets/json/game_items.json diff --git a/android/assets/json/menu_main_buttons.json b/assets/json/menu_main_buttons.json similarity index 100% rename from android/assets/json/menu_main_buttons.json rename to assets/json/menu_main_buttons.json diff --git a/android/assets/json/menu_new_game_buttons.json b/assets/json/menu_new_game_buttons.json similarity index 100% rename from android/assets/json/menu_new_game_buttons.json rename to assets/json/menu_new_game_buttons.json diff --git a/android/assets/json/menu_options_buttons.json b/assets/json/menu_options_buttons.json similarity index 100% rename from android/assets/json/menu_options_buttons.json rename to assets/json/menu_options_buttons.json diff --git a/android/assets/json/texture_regions.json b/assets/json/texture_regions.json similarity index 100% rename from android/assets/json/texture_regions.json rename to assets/json/texture_regions.json diff --git a/android/assets/json/touch_buttons.json b/assets/json/touch_buttons.json similarity index 100% rename from android/assets/json/touch_buttons.json rename to assets/json/touch_buttons.json diff --git a/android/assets/pp/allitems.png b/assets/pp/allitems.png similarity index 100% rename from android/assets/pp/allitems.png rename to assets/pp/allitems.png diff --git a/android/assets/pp/background.png b/assets/pp/background.png similarity index 100% rename from android/assets/pp/background.png rename to assets/pp/background.png diff --git a/android/assets/pp/background_top.png b/assets/pp/background_top.png similarity index 100% rename from android/assets/pp/background_top.png rename to assets/pp/background_top.png diff --git a/android/assets/pp/break.png b/assets/pp/break.png similarity index 100% rename from android/assets/pp/break.png rename to assets/pp/break.png diff --git a/android/assets/pp/buttons.png b/assets/pp/buttons.png similarity index 100% rename from android/assets/pp/buttons.png rename to assets/pp/buttons.png diff --git a/android/assets/pp/chest.png b/assets/pp/chest.png similarity index 100% rename from android/assets/pp/chest.png rename to assets/pp/chest.png diff --git a/android/assets/pp/chest_large.png b/assets/pp/chest_large.png similarity index 100% rename from android/assets/pp/chest_large.png rename to assets/pp/chest_large.png diff --git a/android/assets/pp/crafting_table.png b/assets/pp/crafting_table.png similarity index 100% rename from android/assets/pp/crafting_table.png rename to assets/pp/crafting_table.png diff --git a/android/assets/pp/furnace.png b/assets/pp/furnace.png similarity index 100% rename from android/assets/pp/furnace.png rename to assets/pp/furnace.png diff --git a/android/assets/pp/gui.png b/assets/pp/gui.png similarity index 100% rename from android/assets/pp/gui.png rename to assets/pp/gui.png diff --git a/android/assets/pp/health.png b/assets/pp/health.png similarity index 100% rename from android/assets/pp/health.png rename to assets/pp/health.png diff --git a/android/assets/pp/inventory.png b/assets/pp/inventory.png similarity index 100% rename from android/assets/pp/inventory.png rename to assets/pp/inventory.png diff --git a/android/assets/pp/mobs/char/0_0.png b/assets/pp/mobs/char/0_0.png similarity index 100% rename from android/assets/pp/mobs/char/0_0.png rename to assets/pp/mobs/char/0_0.png diff --git a/android/assets/pp/mobs/char/0_1.png b/assets/pp/mobs/char/0_1.png similarity index 100% rename from android/assets/pp/mobs/char/0_1.png rename to assets/pp/mobs/char/0_1.png diff --git a/android/assets/pp/mobs/char/0_2.png b/assets/pp/mobs/char/0_2.png similarity index 100% rename from android/assets/pp/mobs/char/0_2.png rename to assets/pp/mobs/char/0_2.png diff --git a/android/assets/pp/mobs/char/0_3.png b/assets/pp/mobs/char/0_3.png similarity index 100% rename from android/assets/pp/mobs/char/0_3.png rename to assets/pp/mobs/char/0_3.png diff --git a/android/assets/pp/mobs/char/1_0.png b/assets/pp/mobs/char/1_0.png similarity index 100% rename from android/assets/pp/mobs/char/1_0.png rename to assets/pp/mobs/char/1_0.png diff --git a/android/assets/pp/mobs/char/1_1.png b/assets/pp/mobs/char/1_1.png similarity index 100% rename from android/assets/pp/mobs/char/1_1.png rename to assets/pp/mobs/char/1_1.png diff --git a/android/assets/pp/mobs/char/1_2.png b/assets/pp/mobs/char/1_2.png similarity index 100% rename from android/assets/pp/mobs/char/1_2.png rename to assets/pp/mobs/char/1_2.png diff --git a/android/assets/pp/mobs/char/1_3.png b/assets/pp/mobs/char/1_3.png similarity index 100% rename from android/assets/pp/mobs/char/1_3.png rename to assets/pp/mobs/char/1_3.png diff --git a/android/assets/pp/mobs/pig/0_0.png b/assets/pp/mobs/pig/0_0.png similarity index 100% rename from android/assets/pp/mobs/pig/0_0.png rename to assets/pp/mobs/pig/0_0.png diff --git a/android/assets/pp/mobs/pig/0_1.png b/assets/pp/mobs/pig/0_1.png similarity index 100% rename from android/assets/pp/mobs/pig/0_1.png rename to assets/pp/mobs/pig/0_1.png diff --git a/android/assets/pp/mobs/pig/1_0.png b/assets/pp/mobs/pig/1_0.png similarity index 100% rename from android/assets/pp/mobs/pig/1_0.png rename to assets/pp/mobs/pig/1_0.png diff --git a/android/assets/pp/mobs/pig/1_1.png b/assets/pp/mobs/pig/1_1.png similarity index 100% rename from android/assets/pp/mobs/pig/1_1.png rename to assets/pp/mobs/pig/1_1.png diff --git a/android/assets/pp/shade.png b/assets/pp/shade.png similarity index 100% rename from android/assets/pp/shade.png rename to assets/pp/shade.png diff --git a/android/assets/pp/textures/blocks/bed_l.png b/assets/pp/textures/blocks/bed_l.png similarity index 100% rename from android/assets/pp/textures/blocks/bed_l.png rename to assets/pp/textures/blocks/bed_l.png diff --git a/android/assets/pp/textures/blocks/bed_r.png b/assets/pp/textures/blocks/bed_r.png similarity index 100% rename from android/assets/pp/textures/blocks/bed_r.png rename to assets/pp/textures/blocks/bed_r.png diff --git a/android/assets/pp/textures/blocks/bedrock.png b/assets/pp/textures/blocks/bedrock.png similarity index 100% rename from android/assets/pp/textures/blocks/bedrock.png rename to assets/pp/textures/blocks/bedrock.png diff --git a/android/assets/pp/textures/blocks/bookshelf.png b/assets/pp/textures/blocks/bookshelf.png similarity index 100% rename from android/assets/pp/textures/blocks/bookshelf.png rename to assets/pp/textures/blocks/bookshelf.png diff --git a/android/assets/pp/textures/blocks/bricks.png b/assets/pp/textures/blocks/bricks.png similarity index 100% rename from android/assets/pp/textures/blocks/bricks.png rename to assets/pp/textures/blocks/bricks.png diff --git a/android/assets/pp/textures/blocks/cactus.png b/assets/pp/textures/blocks/cactus.png similarity index 100% rename from android/assets/pp/textures/blocks/cactus.png rename to assets/pp/textures/blocks/cactus.png diff --git a/android/assets/pp/textures/blocks/cake.png b/assets/pp/textures/blocks/cake.png similarity index 100% rename from android/assets/pp/textures/blocks/cake.png rename to assets/pp/textures/blocks/cake.png diff --git a/android/assets/pp/textures/blocks/chest.png b/assets/pp/textures/blocks/chest.png similarity index 100% rename from android/assets/pp/textures/blocks/chest.png rename to assets/pp/textures/blocks/chest.png diff --git a/android/assets/pp/textures/blocks/clay.png b/assets/pp/textures/blocks/clay.png similarity index 100% rename from android/assets/pp/textures/blocks/clay.png rename to assets/pp/textures/blocks/clay.png diff --git a/android/assets/pp/textures/blocks/coal_block.png b/assets/pp/textures/blocks/coal_block.png similarity index 100% rename from android/assets/pp/textures/blocks/coal_block.png rename to assets/pp/textures/blocks/coal_block.png diff --git a/android/assets/pp/textures/blocks/coal_ore.png b/assets/pp/textures/blocks/coal_ore.png similarity index 100% rename from android/assets/pp/textures/blocks/coal_ore.png rename to assets/pp/textures/blocks/coal_ore.png diff --git a/android/assets/pp/textures/blocks/cobblestone.png b/assets/pp/textures/blocks/cobblestone.png similarity index 100% rename from android/assets/pp/textures/blocks/cobblestone.png rename to assets/pp/textures/blocks/cobblestone.png diff --git a/android/assets/pp/textures/blocks/cobblestone_mossy.png b/assets/pp/textures/blocks/cobblestone_mossy.png similarity index 100% rename from android/assets/pp/textures/blocks/cobblestone_mossy.png rename to assets/pp/textures/blocks/cobblestone_mossy.png diff --git a/android/assets/pp/textures/blocks/crafting_table.png b/assets/pp/textures/blocks/crafting_table.png similarity index 100% rename from android/assets/pp/textures/blocks/crafting_table.png rename to assets/pp/textures/blocks/crafting_table.png diff --git a/android/assets/pp/textures/blocks/dandelion.png b/assets/pp/textures/blocks/dandelion.png similarity index 100% rename from android/assets/pp/textures/blocks/dandelion.png rename to assets/pp/textures/blocks/dandelion.png diff --git a/android/assets/pp/textures/blocks/deadbush.png b/assets/pp/textures/blocks/deadbush.png similarity index 100% rename from android/assets/pp/textures/blocks/deadbush.png rename to assets/pp/textures/blocks/deadbush.png diff --git a/android/assets/pp/textures/blocks/diamond_block.png b/assets/pp/textures/blocks/diamond_block.png similarity index 100% rename from android/assets/pp/textures/blocks/diamond_block.png rename to assets/pp/textures/blocks/diamond_block.png diff --git a/android/assets/pp/textures/blocks/diamond_ore.png b/assets/pp/textures/blocks/diamond_ore.png similarity index 100% rename from android/assets/pp/textures/blocks/diamond_ore.png rename to assets/pp/textures/blocks/diamond_ore.png diff --git a/android/assets/pp/textures/blocks/dirt.png b/assets/pp/textures/blocks/dirt.png similarity index 100% rename from android/assets/pp/textures/blocks/dirt.png rename to assets/pp/textures/blocks/dirt.png diff --git a/android/assets/pp/textures/blocks/furnace.png b/assets/pp/textures/blocks/furnace.png similarity index 100% rename from android/assets/pp/textures/blocks/furnace.png rename to assets/pp/textures/blocks/furnace.png diff --git a/android/assets/pp/textures/blocks/glass.png b/assets/pp/textures/blocks/glass.png similarity index 100% rename from android/assets/pp/textures/blocks/glass.png rename to assets/pp/textures/blocks/glass.png diff --git a/android/assets/pp/textures/blocks/gold_block.png b/assets/pp/textures/blocks/gold_block.png similarity index 100% rename from android/assets/pp/textures/blocks/gold_block.png rename to assets/pp/textures/blocks/gold_block.png diff --git a/android/assets/pp/textures/blocks/gold_ore.png b/assets/pp/textures/blocks/gold_ore.png similarity index 100% rename from android/assets/pp/textures/blocks/gold_ore.png rename to assets/pp/textures/blocks/gold_ore.png diff --git a/android/assets/pp/textures/blocks/grass.png b/assets/pp/textures/blocks/grass.png similarity index 100% rename from android/assets/pp/textures/blocks/grass.png rename to assets/pp/textures/blocks/grass.png diff --git a/android/assets/pp/textures/blocks/grass_snowed.png b/assets/pp/textures/blocks/grass_snowed.png similarity index 100% rename from android/assets/pp/textures/blocks/grass_snowed.png rename to assets/pp/textures/blocks/grass_snowed.png diff --git a/android/assets/pp/textures/blocks/gravel.png b/assets/pp/textures/blocks/gravel.png similarity index 100% rename from android/assets/pp/textures/blocks/gravel.png rename to assets/pp/textures/blocks/gravel.png diff --git a/android/assets/pp/textures/blocks/iron_bars.png b/assets/pp/textures/blocks/iron_bars.png similarity index 100% rename from android/assets/pp/textures/blocks/iron_bars.png rename to assets/pp/textures/blocks/iron_bars.png diff --git a/android/assets/pp/textures/blocks/iron_block.png b/assets/pp/textures/blocks/iron_block.png similarity index 100% rename from android/assets/pp/textures/blocks/iron_block.png rename to assets/pp/textures/blocks/iron_block.png diff --git a/android/assets/pp/textures/blocks/iron_ore.png b/assets/pp/textures/blocks/iron_ore.png similarity index 100% rename from android/assets/pp/textures/blocks/iron_ore.png rename to assets/pp/textures/blocks/iron_ore.png diff --git a/android/assets/pp/textures/blocks/ladder.png b/assets/pp/textures/blocks/ladder.png similarity index 100% rename from android/assets/pp/textures/blocks/ladder.png rename to assets/pp/textures/blocks/ladder.png diff --git a/android/assets/pp/textures/blocks/lapis_block.png b/assets/pp/textures/blocks/lapis_block.png similarity index 100% rename from android/assets/pp/textures/blocks/lapis_block.png rename to assets/pp/textures/blocks/lapis_block.png diff --git a/android/assets/pp/textures/blocks/lapis_ore.png b/assets/pp/textures/blocks/lapis_ore.png similarity index 100% rename from android/assets/pp/textures/blocks/lapis_ore.png rename to assets/pp/textures/blocks/lapis_ore.png diff --git a/android/assets/pp/textures/blocks/lava_flow.png b/assets/pp/textures/blocks/lava_flow.png similarity index 100% rename from android/assets/pp/textures/blocks/lava_flow.png rename to assets/pp/textures/blocks/lava_flow.png diff --git a/android/assets/pp/textures/blocks/lava_still.png b/assets/pp/textures/blocks/lava_still.png similarity index 100% rename from android/assets/pp/textures/blocks/lava_still.png rename to assets/pp/textures/blocks/lava_still.png diff --git a/android/assets/pp/textures/blocks/leaves_oak.png b/assets/pp/textures/blocks/leaves_oak.png similarity index 100% rename from android/assets/pp/textures/blocks/leaves_oak.png rename to assets/pp/textures/blocks/leaves_oak.png diff --git a/android/assets/pp/textures/blocks/leaves_spruce.png b/assets/pp/textures/blocks/leaves_spruce.png similarity index 100% rename from android/assets/pp/textures/blocks/leaves_spruce.png rename to assets/pp/textures/blocks/leaves_spruce.png diff --git a/android/assets/pp/textures/blocks/log_birch.png b/assets/pp/textures/blocks/log_birch.png similarity index 100% rename from android/assets/pp/textures/blocks/log_birch.png rename to assets/pp/textures/blocks/log_birch.png diff --git a/android/assets/pp/textures/blocks/log_oak.png b/assets/pp/textures/blocks/log_oak.png similarity index 100% rename from android/assets/pp/textures/blocks/log_oak.png rename to assets/pp/textures/blocks/log_oak.png diff --git a/android/assets/pp/textures/blocks/log_spruce.png b/assets/pp/textures/blocks/log_spruce.png similarity index 100% rename from android/assets/pp/textures/blocks/log_spruce.png rename to assets/pp/textures/blocks/log_spruce.png diff --git a/android/assets/pp/textures/blocks/mushroom_brown.png b/assets/pp/textures/blocks/mushroom_brown.png similarity index 100% rename from android/assets/pp/textures/blocks/mushroom_brown.png rename to assets/pp/textures/blocks/mushroom_brown.png diff --git a/android/assets/pp/textures/blocks/mushroom_red.png b/assets/pp/textures/blocks/mushroom_red.png similarity index 100% rename from android/assets/pp/textures/blocks/mushroom_red.png rename to assets/pp/textures/blocks/mushroom_red.png diff --git a/android/assets/pp/textures/blocks/noteblock.png b/assets/pp/textures/blocks/noteblock.png similarity index 100% rename from android/assets/pp/textures/blocks/noteblock.png rename to assets/pp/textures/blocks/noteblock.png diff --git a/android/assets/pp/textures/blocks/obsidian.png b/assets/pp/textures/blocks/obsidian.png similarity index 100% rename from android/assets/pp/textures/blocks/obsidian.png rename to assets/pp/textures/blocks/obsidian.png diff --git a/android/assets/pp/textures/blocks/planks_birch.png b/assets/pp/textures/blocks/planks_birch.png similarity index 100% rename from android/assets/pp/textures/blocks/planks_birch.png rename to assets/pp/textures/blocks/planks_birch.png diff --git a/android/assets/pp/textures/blocks/planks_oak.png b/assets/pp/textures/blocks/planks_oak.png similarity index 100% rename from android/assets/pp/textures/blocks/planks_oak.png rename to assets/pp/textures/blocks/planks_oak.png diff --git a/android/assets/pp/textures/blocks/planks_spruce.png b/assets/pp/textures/blocks/planks_spruce.png similarity index 100% rename from android/assets/pp/textures/blocks/planks_spruce.png rename to assets/pp/textures/blocks/planks_spruce.png diff --git a/android/assets/pp/textures/blocks/rose.png b/assets/pp/textures/blocks/rose.png similarity index 100% rename from android/assets/pp/textures/blocks/rose.png rename to assets/pp/textures/blocks/rose.png diff --git a/android/assets/pp/textures/blocks/sand.png b/assets/pp/textures/blocks/sand.png similarity index 100% rename from android/assets/pp/textures/blocks/sand.png rename to assets/pp/textures/blocks/sand.png diff --git a/android/assets/pp/textures/blocks/sandstone.png b/assets/pp/textures/blocks/sandstone.png similarity index 100% rename from android/assets/pp/textures/blocks/sandstone.png rename to assets/pp/textures/blocks/sandstone.png diff --git a/android/assets/pp/textures/blocks/sapling_birch.png b/assets/pp/textures/blocks/sapling_birch.png similarity index 100% rename from android/assets/pp/textures/blocks/sapling_birch.png rename to assets/pp/textures/blocks/sapling_birch.png diff --git a/android/assets/pp/textures/blocks/sapling_oak.png b/assets/pp/textures/blocks/sapling_oak.png similarity index 100% rename from android/assets/pp/textures/blocks/sapling_oak.png rename to assets/pp/textures/blocks/sapling_oak.png diff --git a/android/assets/pp/textures/blocks/sapling_spruce.png b/assets/pp/textures/blocks/sapling_spruce.png similarity index 100% rename from android/assets/pp/textures/blocks/sapling_spruce.png rename to assets/pp/textures/blocks/sapling_spruce.png diff --git a/android/assets/pp/textures/blocks/snow.png b/assets/pp/textures/blocks/snow.png similarity index 100% rename from android/assets/pp/textures/blocks/snow.png rename to assets/pp/textures/blocks/snow.png diff --git a/android/assets/pp/textures/blocks/sponge.png b/assets/pp/textures/blocks/sponge.png similarity index 100% rename from android/assets/pp/textures/blocks/sponge.png rename to assets/pp/textures/blocks/sponge.png diff --git a/android/assets/pp/textures/blocks/sponge_wet.png b/assets/pp/textures/blocks/sponge_wet.png similarity index 100% rename from android/assets/pp/textures/blocks/sponge_wet.png rename to assets/pp/textures/blocks/sponge_wet.png diff --git a/android/assets/pp/textures/blocks/stone.png b/assets/pp/textures/blocks/stone.png similarity index 100% rename from android/assets/pp/textures/blocks/stone.png rename to assets/pp/textures/blocks/stone.png diff --git a/android/assets/pp/textures/blocks/stone_slab.png b/assets/pp/textures/blocks/stone_slab.png similarity index 100% rename from android/assets/pp/textures/blocks/stone_slab.png rename to assets/pp/textures/blocks/stone_slab.png diff --git a/android/assets/pp/textures/blocks/stonebrick.png b/assets/pp/textures/blocks/stonebrick.png similarity index 100% rename from android/assets/pp/textures/blocks/stonebrick.png rename to assets/pp/textures/blocks/stonebrick.png diff --git a/android/assets/pp/textures/blocks/tallgrass.png b/assets/pp/textures/blocks/tallgrass.png similarity index 100% rename from android/assets/pp/textures/blocks/tallgrass.png rename to assets/pp/textures/blocks/tallgrass.png diff --git a/android/assets/pp/textures/blocks/water_flow.png b/assets/pp/textures/blocks/water_flow.png similarity index 100% rename from android/assets/pp/textures/blocks/water_flow.png rename to assets/pp/textures/blocks/water_flow.png diff --git a/android/assets/pp/textures/blocks/water_still.png b/assets/pp/textures/blocks/water_still.png similarity index 100% rename from android/assets/pp/textures/blocks/water_still.png rename to assets/pp/textures/blocks/water_still.png diff --git a/android/assets/pp/textures/blocks/web.png b/assets/pp/textures/blocks/web.png similarity index 100% rename from android/assets/pp/textures/blocks/web.png rename to assets/pp/textures/blocks/web.png diff --git a/android/assets/pp/textures/blocks/wool_colored_black.png b/assets/pp/textures/blocks/wool_colored_black.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_black.png rename to assets/pp/textures/blocks/wool_colored_black.png diff --git a/android/assets/pp/textures/blocks/wool_colored_blue.png b/assets/pp/textures/blocks/wool_colored_blue.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_blue.png rename to assets/pp/textures/blocks/wool_colored_blue.png diff --git a/android/assets/pp/textures/blocks/wool_colored_brown.png b/assets/pp/textures/blocks/wool_colored_brown.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_brown.png rename to assets/pp/textures/blocks/wool_colored_brown.png diff --git a/android/assets/pp/textures/blocks/wool_colored_cyan.png b/assets/pp/textures/blocks/wool_colored_cyan.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_cyan.png rename to assets/pp/textures/blocks/wool_colored_cyan.png diff --git a/android/assets/pp/textures/blocks/wool_colored_gray.png b/assets/pp/textures/blocks/wool_colored_gray.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_gray.png rename to assets/pp/textures/blocks/wool_colored_gray.png diff --git a/android/assets/pp/textures/blocks/wool_colored_green.png b/assets/pp/textures/blocks/wool_colored_green.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_green.png rename to assets/pp/textures/blocks/wool_colored_green.png diff --git a/android/assets/pp/textures/blocks/wool_colored_light_blue.png b/assets/pp/textures/blocks/wool_colored_light_blue.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_light_blue.png rename to assets/pp/textures/blocks/wool_colored_light_blue.png diff --git a/android/assets/pp/textures/blocks/wool_colored_lime.png b/assets/pp/textures/blocks/wool_colored_lime.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_lime.png rename to assets/pp/textures/blocks/wool_colored_lime.png diff --git a/android/assets/pp/textures/blocks/wool_colored_magenta.png b/assets/pp/textures/blocks/wool_colored_magenta.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_magenta.png rename to assets/pp/textures/blocks/wool_colored_magenta.png diff --git a/android/assets/pp/textures/blocks/wool_colored_orange.png b/assets/pp/textures/blocks/wool_colored_orange.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_orange.png rename to assets/pp/textures/blocks/wool_colored_orange.png diff --git a/android/assets/pp/textures/blocks/wool_colored_pink.png b/assets/pp/textures/blocks/wool_colored_pink.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_pink.png rename to assets/pp/textures/blocks/wool_colored_pink.png diff --git a/android/assets/pp/textures/blocks/wool_colored_purple.png b/assets/pp/textures/blocks/wool_colored_purple.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_purple.png rename to assets/pp/textures/blocks/wool_colored_purple.png diff --git a/android/assets/pp/textures/blocks/wool_colored_red.png b/assets/pp/textures/blocks/wool_colored_red.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_red.png rename to assets/pp/textures/blocks/wool_colored_red.png diff --git a/android/assets/pp/textures/blocks/wool_colored_silver.png b/assets/pp/textures/blocks/wool_colored_silver.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_silver.png rename to assets/pp/textures/blocks/wool_colored_silver.png diff --git a/android/assets/pp/textures/blocks/wool_colored_white.png b/assets/pp/textures/blocks/wool_colored_white.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_white.png rename to assets/pp/textures/blocks/wool_colored_white.png diff --git a/android/assets/pp/textures/blocks/wool_colored_yellow.png b/assets/pp/textures/blocks/wool_colored_yellow.png similarity index 100% rename from android/assets/pp/textures/blocks/wool_colored_yellow.png rename to assets/pp/textures/blocks/wool_colored_yellow.png diff --git a/android/assets/pp/textures/items/bed.png b/assets/pp/textures/items/bed.png similarity index 100% rename from android/assets/pp/textures/items/bed.png rename to assets/pp/textures/items/bed.png diff --git a/android/assets/pp/textures/items/bucket_empty.png b/assets/pp/textures/items/bucket_empty.png similarity index 100% rename from android/assets/pp/textures/items/bucket_empty.png rename to assets/pp/textures/items/bucket_empty.png diff --git a/android/assets/pp/textures/items/bucket_lava.png b/assets/pp/textures/items/bucket_lava.png similarity index 100% rename from android/assets/pp/textures/items/bucket_lava.png rename to assets/pp/textures/items/bucket_lava.png diff --git a/android/assets/pp/textures/items/bucket_milk.png b/assets/pp/textures/items/bucket_milk.png similarity index 100% rename from android/assets/pp/textures/items/bucket_milk.png rename to assets/pp/textures/items/bucket_milk.png diff --git a/android/assets/pp/textures/items/bucket_water.png b/assets/pp/textures/items/bucket_water.png similarity index 100% rename from android/assets/pp/textures/items/bucket_water.png rename to assets/pp/textures/items/bucket_water.png diff --git a/android/assets/pp/textures/items/charcoal.png b/assets/pp/textures/items/charcoal.png similarity index 100% rename from android/assets/pp/textures/items/charcoal.png rename to assets/pp/textures/items/charcoal.png diff --git a/android/assets/pp/textures/items/coal.png b/assets/pp/textures/items/coal.png similarity index 100% rename from android/assets/pp/textures/items/coal.png rename to assets/pp/textures/items/coal.png diff --git a/android/assets/pp/textures/items/diamond.png b/assets/pp/textures/items/diamond.png similarity index 100% rename from android/assets/pp/textures/items/diamond.png rename to assets/pp/textures/items/diamond.png diff --git a/android/assets/pp/textures/items/diamond_axe.png b/assets/pp/textures/items/diamond_axe.png similarity index 100% rename from android/assets/pp/textures/items/diamond_axe.png rename to assets/pp/textures/items/diamond_axe.png diff --git a/android/assets/pp/textures/items/diamond_hoe.png b/assets/pp/textures/items/diamond_hoe.png similarity index 100% rename from android/assets/pp/textures/items/diamond_hoe.png rename to assets/pp/textures/items/diamond_hoe.png diff --git a/android/assets/pp/textures/items/diamond_pickaxe.png b/assets/pp/textures/items/diamond_pickaxe.png similarity index 100% rename from android/assets/pp/textures/items/diamond_pickaxe.png rename to assets/pp/textures/items/diamond_pickaxe.png diff --git a/android/assets/pp/textures/items/diamond_shovel.png b/assets/pp/textures/items/diamond_shovel.png similarity index 100% rename from android/assets/pp/textures/items/diamond_shovel.png rename to assets/pp/textures/items/diamond_shovel.png diff --git a/android/assets/pp/textures/items/diamond_sword.png b/assets/pp/textures/items/diamond_sword.png similarity index 100% rename from android/assets/pp/textures/items/diamond_sword.png rename to assets/pp/textures/items/diamond_sword.png diff --git a/android/assets/pp/textures/items/gold_axe.png b/assets/pp/textures/items/gold_axe.png similarity index 100% rename from android/assets/pp/textures/items/gold_axe.png rename to assets/pp/textures/items/gold_axe.png diff --git a/android/assets/pp/textures/items/gold_hoe.png b/assets/pp/textures/items/gold_hoe.png similarity index 100% rename from android/assets/pp/textures/items/gold_hoe.png rename to assets/pp/textures/items/gold_hoe.png diff --git a/android/assets/pp/textures/items/gold_ingot.png b/assets/pp/textures/items/gold_ingot.png similarity index 100% rename from android/assets/pp/textures/items/gold_ingot.png rename to assets/pp/textures/items/gold_ingot.png diff --git a/android/assets/pp/textures/items/gold_pickaxe.png b/assets/pp/textures/items/gold_pickaxe.png similarity index 100% rename from android/assets/pp/textures/items/gold_pickaxe.png rename to assets/pp/textures/items/gold_pickaxe.png diff --git a/android/assets/pp/textures/items/gold_shovel.png b/assets/pp/textures/items/gold_shovel.png similarity index 100% rename from android/assets/pp/textures/items/gold_shovel.png rename to assets/pp/textures/items/gold_shovel.png diff --git a/android/assets/pp/textures/items/gold_sword.png b/assets/pp/textures/items/gold_sword.png similarity index 100% rename from android/assets/pp/textures/items/gold_sword.png rename to assets/pp/textures/items/gold_sword.png diff --git a/android/assets/pp/textures/items/iron_axe.png b/assets/pp/textures/items/iron_axe.png similarity index 100% rename from android/assets/pp/textures/items/iron_axe.png rename to assets/pp/textures/items/iron_axe.png diff --git a/android/assets/pp/textures/items/iron_hoe.png b/assets/pp/textures/items/iron_hoe.png similarity index 100% rename from android/assets/pp/textures/items/iron_hoe.png rename to assets/pp/textures/items/iron_hoe.png diff --git a/android/assets/pp/textures/items/iron_ingot.png b/assets/pp/textures/items/iron_ingot.png similarity index 100% rename from android/assets/pp/textures/items/iron_ingot.png rename to assets/pp/textures/items/iron_ingot.png diff --git a/android/assets/pp/textures/items/iron_pickaxe.png b/assets/pp/textures/items/iron_pickaxe.png similarity index 100% rename from android/assets/pp/textures/items/iron_pickaxe.png rename to assets/pp/textures/items/iron_pickaxe.png diff --git a/android/assets/pp/textures/items/iron_shovel.png b/assets/pp/textures/items/iron_shovel.png similarity index 100% rename from android/assets/pp/textures/items/iron_shovel.png rename to assets/pp/textures/items/iron_shovel.png diff --git a/android/assets/pp/textures/items/iron_sword.png b/assets/pp/textures/items/iron_sword.png similarity index 100% rename from android/assets/pp/textures/items/iron_sword.png rename to assets/pp/textures/items/iron_sword.png diff --git a/android/assets/pp/textures/items/lapis_lazuli.png b/assets/pp/textures/items/lapis_lazuli.png similarity index 100% rename from android/assets/pp/textures/items/lapis_lazuli.png rename to assets/pp/textures/items/lapis_lazuli.png diff --git a/android/assets/pp/textures/items/porkchop_cooked.png b/assets/pp/textures/items/porkchop_cooked.png similarity index 100% rename from android/assets/pp/textures/items/porkchop_cooked.png rename to assets/pp/textures/items/porkchop_cooked.png diff --git a/android/assets/pp/textures/items/porkchop_raw.png b/assets/pp/textures/items/porkchop_raw.png similarity index 100% rename from android/assets/pp/textures/items/porkchop_raw.png rename to assets/pp/textures/items/porkchop_raw.png diff --git a/android/assets/pp/textures/items/shears.png b/assets/pp/textures/items/shears.png similarity index 100% rename from android/assets/pp/textures/items/shears.png rename to assets/pp/textures/items/shears.png diff --git a/android/assets/pp/textures/items/snowball.png b/assets/pp/textures/items/snowball.png similarity index 100% rename from android/assets/pp/textures/items/snowball.png rename to assets/pp/textures/items/snowball.png diff --git a/android/assets/pp/textures/items/spawn_egg.png b/assets/pp/textures/items/spawn_egg.png similarity index 100% rename from android/assets/pp/textures/items/spawn_egg.png rename to assets/pp/textures/items/spawn_egg.png diff --git a/android/assets/pp/textures/items/stick.png b/assets/pp/textures/items/stick.png similarity index 100% rename from android/assets/pp/textures/items/stick.png rename to assets/pp/textures/items/stick.png diff --git a/android/assets/pp/textures/items/stone_axe.png b/assets/pp/textures/items/stone_axe.png similarity index 100% rename from android/assets/pp/textures/items/stone_axe.png rename to assets/pp/textures/items/stone_axe.png diff --git a/android/assets/pp/textures/items/stone_hoe.png b/assets/pp/textures/items/stone_hoe.png similarity index 100% rename from android/assets/pp/textures/items/stone_hoe.png rename to assets/pp/textures/items/stone_hoe.png diff --git a/android/assets/pp/textures/items/stone_pickaxe.png b/assets/pp/textures/items/stone_pickaxe.png similarity index 100% rename from android/assets/pp/textures/items/stone_pickaxe.png rename to assets/pp/textures/items/stone_pickaxe.png diff --git a/android/assets/pp/textures/items/stone_shovel.png b/assets/pp/textures/items/stone_shovel.png similarity index 100% rename from android/assets/pp/textures/items/stone_shovel.png rename to assets/pp/textures/items/stone_shovel.png diff --git a/android/assets/pp/textures/items/stone_sword.png b/assets/pp/textures/items/stone_sword.png similarity index 100% rename from android/assets/pp/textures/items/stone_sword.png rename to assets/pp/textures/items/stone_sword.png diff --git a/android/assets/pp/textures/items/wood_axe.png b/assets/pp/textures/items/wood_axe.png similarity index 100% rename from android/assets/pp/textures/items/wood_axe.png rename to assets/pp/textures/items/wood_axe.png diff --git a/android/assets/pp/textures/items/wood_hoe.png b/assets/pp/textures/items/wood_hoe.png similarity index 100% rename from android/assets/pp/textures/items/wood_hoe.png rename to assets/pp/textures/items/wood_hoe.png diff --git a/android/assets/pp/textures/items/wood_pickaxe.png b/assets/pp/textures/items/wood_pickaxe.png similarity index 100% rename from android/assets/pp/textures/items/wood_pickaxe.png rename to assets/pp/textures/items/wood_pickaxe.png diff --git a/android/assets/pp/textures/items/wood_shovel.png b/assets/pp/textures/items/wood_shovel.png similarity index 100% rename from android/assets/pp/textures/items/wood_shovel.png rename to assets/pp/textures/items/wood_shovel.png diff --git a/android/assets/pp/textures/items/wood_sword.png b/assets/pp/textures/items/wood_sword.png similarity index 100% rename from android/assets/pp/textures/items/wood_sword.png rename to assets/pp/textures/items/wood_sword.png diff --git a/android/assets/touch_gui.png b/assets/touch_gui.png similarity index 100% rename from android/assets/touch_gui.png rename to assets/touch_gui.png -- 2.29.2 From 4ad92d4055405f5acda70baa38177a6b414fa9bf Mon Sep 17 00:00:00 2001 From: fredboy Date: Sat, 25 May 2024 10:47:42 +0700 Subject: [PATCH 13/16] Softlink assets --- android/assets | 1 + desktop/assets | 1 + desktop/build.gradle | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 120000 android/assets create mode 120000 desktop/assets diff --git a/android/assets b/android/assets new file mode 120000 index 0000000..ec2e4be --- /dev/null +++ b/android/assets @@ -0,0 +1 @@ +../assets \ No newline at end of file diff --git a/desktop/assets b/desktop/assets new file mode 120000 index 0000000..ec2e4be --- /dev/null +++ b/desktop/assets @@ -0,0 +1 @@ +../assets \ No newline at end of file diff --git a/desktop/build.gradle b/desktop/build.gradle index 9127345..f909ef1 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -8,10 +8,10 @@ java.targetCompatibility = JavaVersion.VERSION_17 java.sourceCompatibility = JavaVersion.VERSION_1_8 sourceSets.main.java.srcDirs = ["src/"] -sourceSets.main.resources.srcDirs = ["../android/assets"] +sourceSets.main.resources.srcDirs = ["assets/"] project.ext.mainClassName = "ru.deadsoftware.cavedroid.desktop.DesktopLauncher" -project.ext.assetsDir = new File("../android/assets") +project.ext.assetsDir = new File("assets/") task run(dependsOn: build, type: JavaExec) { main = project.mainClassName -- 2.29.2 From 3a443514027417133d7a7e18766720dfea028a87 Mon Sep 17 00:00:00 2001 From: fredboy Date: Sat, 25 May 2024 11:52:14 +0700 Subject: [PATCH 14/16] MainComponent in kotlin --- .../deadsoftware/cavedroid/MainComponent.java | 21 ------------------ .../deadsoftware/cavedroid/MainComponent.kt | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 21 deletions(-) delete mode 100644 core/src/ru/deadsoftware/cavedroid/MainComponent.java create mode 100644 core/src/ru/deadsoftware/cavedroid/MainComponent.kt diff --git a/core/src/ru/deadsoftware/cavedroid/MainComponent.java b/core/src/ru/deadsoftware/cavedroid/MainComponent.java deleted file mode 100644 index b487c6d..0000000 --- a/core/src/ru/deadsoftware/cavedroid/MainComponent.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.deadsoftware.cavedroid; - -import dagger.Component; -import ru.deadsoftware.cavedroid.game.GameScreen; -import ru.deadsoftware.cavedroid.menu.MenuScreen; -import ru.deadsoftware.cavedroid.misc.utils.AssetLoader; -import ru.deadsoftware.cavedroid.prefs.PreferencesStore; - -import javax.inject.Singleton; - -@Singleton -@Component(dependencies = {CaveGame.class, PreferencesStore.class}) -public interface MainComponent { - GameScreen getGameScreen(); - - MenuScreen getMenuScreen(); - - MainConfig getMainConfig(); - - AssetLoader getAssetLoader(); -} diff --git a/core/src/ru/deadsoftware/cavedroid/MainComponent.kt b/core/src/ru/deadsoftware/cavedroid/MainComponent.kt new file mode 100644 index 0000000..b2a77ee --- /dev/null +++ b/core/src/ru/deadsoftware/cavedroid/MainComponent.kt @@ -0,0 +1,22 @@ +package ru.deadsoftware.cavedroid + +import dagger.Component +import ru.deadsoftware.cavedroid.game.GameScreen +import ru.deadsoftware.cavedroid.menu.MenuScreen +import ru.deadsoftware.cavedroid.misc.utils.AssetLoader +import ru.deadsoftware.cavedroid.prefs.PreferencesStore +import javax.inject.Singleton + +@Singleton +@Component(dependencies = [CaveGame::class, PreferencesStore::class]) +interface MainComponent { + + val gameScreen: GameScreen + + val menuScreen: MenuScreen + + val mainConfig: MainConfig + + val assetLoader: AssetLoader + +} \ No newline at end of file -- 2.29.2 From 6cfaee44cc3731b18ec0a400359f9dcfeeed6f5e Mon Sep 17 00:00:00 2001 From: fredboy Date: Sat, 25 May 2024 16:27:46 +0700 Subject: [PATCH 15/16] Restructure project and use kotlin dsl --- android/assets | 1 - android/build.gradle | 147 ------------------ android/build.gradle.kts | 131 ++++++++++++++++ android/project.properties | 9 -- .../debug/res/drawable-hdpi/ic_launcher.png | Bin .../debug/res/drawable-mdpi/ic_launcher.png | Bin .../debug/res/drawable-xhdpi/ic_launcher.png | Bin .../debug/res/drawable-xxhdpi/ic_launcher.png | Bin .../res/drawable-xxxhdpi/ic_launcher.png | Bin .../res/drawable/ic_launcher_foreground.xml | 0 .../{ => src}/debug/res/values/strings.xml | 0 android/{ => src/main}/AndroidManifest.xml | 0 android/src/main/assets | 1 + .../deadsoftware/cavedroid/AndroidLauncher.kt | 0 .../cavedroid/AndroidPreferencesStore.kt | 0 .../res/drawable-anydpi-v26/ic_launcher.xml | 0 .../main}/res/drawable-hdpi/ic_launcher.png | Bin .../main}/res/drawable-mdpi/ic_launcher.png | Bin .../main}/res/drawable-xhdpi/ic_launcher.png | Bin .../main}/res/drawable-xxhdpi/ic_launcher.png | Bin .../res/drawable-xxxhdpi/ic_launcher.png | Bin .../res/drawable/ic_launcher_background.xml | 0 .../res/drawable/ic_launcher_foreground.xml | 0 android/{ => src/main}/res/values/strings.xml | 0 android/{ => src/main}/res/values/styles.xml | 0 .../main}/res/xml/backup_descriptor.xml | 0 build.gradle | 44 ------ build.gradle.kts | 30 ++++ buildSrc/build.gradle.kts | 7 + buildSrc/src/main/kotlin/ApplicationInfo.kt | 11 ++ buildSrc/src/main/kotlin/Dependencies.kt | 49 ++++++ buildSrc/src/main/kotlin/Versions.kt | 63 ++++++++ core/build.gradle | 26 ---- core/build.gradle.kts | 26 ++++ .../ru/deadsoftware/cavedroid/MainConfig.java | 0 .../cavedroid/game/GameComponent.java | 0 .../cavedroid/game/GameModule.java | 0 .../cavedroid/game/GamePhysics.java | 0 .../deadsoftware/cavedroid/game/GameProc.java | 0 .../cavedroid/game/GameRenderer.java | 0 .../cavedroid/game/GameScope.java | 0 .../cavedroid/game/GameScreen.java | 0 .../cavedroid/game/GameUiWindow.java | 0 .../deadsoftware/cavedroid/game/mobs/Mob.java | 0 .../cavedroid/game/mobs/player/Player.java | 0 .../cavedroid/game/objects/TouchButton.java | 0 .../game/objects/drop/DropController.java | 0 .../cavedroid/game/world/GameWorld.java | 0 .../cavedroid/menu/MenuComponent.java | 0 .../deadsoftware/cavedroid/menu/MenuProc.java | 0 .../cavedroid/menu/MenuScope.java | 0 .../cavedroid/menu/MenuScreen.java | 0 .../cavedroid/menu/objects/Button.java | 0 .../menu/objects/ButtonEventListener.java | 0 .../menu/objects/ButtonRenderer.java | 0 .../cavedroid/menu/submenus/Menu.java | 0 .../cavedroid/menu/submenus/MenuMain.java | 0 .../cavedroid/menu/submenus/MenuNewGame.java | 0 .../deadsoftware/cavedroid/misc/Assets.java | 0 .../deadsoftware/cavedroid/misc/Renderer.java | 0 .../ru/deadsoftware/cavedroid/CaveGame.kt | 0 .../deadsoftware/cavedroid/MainComponent.kt | 0 .../cavedroid/game/GameItemsHolder.kt | 0 .../game/actions/CommonBlockActionUtils.kt | 0 .../actions/placeblock/IPlaceBlockAction.kt | 0 .../PlaceBlockItemToBackgroundAction.kt | 0 .../PlaceBlockItemToForegroundAction.kt | 0 .../actions/placeblock/PlaceSlabAction.kt | 0 .../actions/updateblock/IUpdateBlockAction.kt | 0 .../updateblock/UpdateBedLeftAction.kt | 0 .../updateblock/UpdateBedRightAction.kt | 0 .../actions/updateblock/UpdateGrassAction.kt | 0 .../updateblock/UpdateRequiresBlockAction.kt | 0 .../updateblock/UpdateSnowedGrassAction.kt | 0 .../game/actions/useblock/IUseBlockAction.kt | 0 .../game/actions/useblock/UseChestAction.kt | 0 .../useblock/UseCraftingTableAction.kt | 0 .../game/actions/useblock/UseFurnaceAction.kt | 0 .../game/actions/useitem/IUseItemAction.kt | 0 .../game/actions/useitem/UseBedAction.kt | 0 .../actions/useitem/UseEmptyBucketAction.kt | 0 .../actions/useitem/UseLavaBucketAction.kt | 0 .../actions/useitem/UsePigSpawnEggAction.kt | 0 .../actions/useitem/UseWaterBucketAction.kt | 0 .../game/debug/DebugInfoStringsProvider.kt | 0 .../cavedroid/game/input/IGameInputHandler.kt | 0 .../cavedroid/game/input/InputUtils.kt | 0 .../cavedroid/game/input/Joystick.kt | 0 .../game/input/action/IGameInputAction.kt | 0 .../game/input/action/KeyboardInputAction.kt | 0 .../game/input/action/MouseInputAction.kt | 0 .../action/keys/KeyboardInputActionKey.kt | 0 .../input/action/keys/MouseInputActionKey.kt | 0 .../CloseGameWindowKeyboardInputHandler.kt | 0 .../keyboard/DropItemKeyboardInputHandler.kt | 0 .../keyboard/FlyDownKeyboardInputHandler.kt | 0 .../keyboard/FlyUpKeyboardInputHandler.kt | 0 .../keyboard/GoLeftKeyboardInputHandler.kt | 0 .../keyboard/GoRightKeyboardInputHandler.kt | 0 .../keyboard/JumpKeyboardInputHandler.kt | 0 ...eCursorControlsModeKeyboardInputHandler.kt | 0 .../OpenInventoryKeyboardInputHandler.kt | 0 .../keyboard/PauseGameKeyboardInputHandler.kt | 0 .../SelectHotbarSlotKeyboardInputHandler.kt | 0 .../keyboard/StopSwimKeyboardInputHandler.kt | 0 .../keyboard/SwimUpKeyboardInputHandler.kt | 0 .../ToggleControlsModeKeyboardInputHandler.kt | 0 .../ToggleDebugInfoKeyboardInputHandler.kt | 0 .../ToggleGameModeKeyboardInputHandler.kt | 0 .../ToggleMinimapKeyboardInputHandler.kt | 0 .../TurnOnFlyModeKeyboardInputHandler.kt | 0 ...AbstractInventoryItemsMouseInputHandler.kt | 0 .../handler/mouse/AttackMouseInputHandler.kt | 0 .../mouse/CloseGameWindowMouseInputHandler.kt | 0 ...reativeInventoryScrollMouseInputHandler.kt | 0 .../handler/mouse/CursorMouseInputHandler.kt | 0 .../handler/mouse/HotbarMouseInputHandler.kt | 0 ...lectChestInventoryItemMouseInputHandler.kt | 0 ...tCraftingInventoryItemMouseInputHandler.kt | 0 ...tCreativeInventoryItemMouseInputHandler.kt | 0 ...ctFurnaceInventoryItemMouseInputHandler.kt | 0 ...tSurvivalInventoryItemMouseInputHandler.kt | 0 .../handler/mouse/UseItemMouseInputHandler.kt | 0 .../handler/touch/JoystickInputHandler.kt | 0 .../input/mapper/KeyboardInputActionMapper.kt | 0 .../input/mapper/MouseInputActionMapper.kt | 0 .../cavedroid/game/mobs/FallingBlock.kt | 0 .../cavedroid/game/mobs/MobSaveDataMapper.kt | 0 .../cavedroid/game/mobs/MobsController.kt | 0 .../cavedroid/game/mobs/PeacefulMob.kt | 0 .../deadsoftware/cavedroid/game/mobs/Pig.kt | 0 .../cavedroid/game/mobs/player/Inventory.kt | 0 .../cavedroid/game/model/block/Block.kt | 0 .../game/model/block/BlockAnimationInfo.kt | 0 .../game/model/block/BlockDropInfo.kt | 0 .../game/model/block/BlockMargins.kt | 0 .../game/model/block/CommonBlockParams.kt | 0 .../game/model/craft/CraftingRecipe.kt | 0 .../cavedroid/game/model/dto/BlockDto.kt | 0 .../cavedroid/game/model/dto/CraftingDto.kt | 0 .../cavedroid/game/model/dto/GameItemsDto.kt | 0 .../cavedroid/game/model/dto/ItemDto.kt | 0 .../cavedroid/game/model/dto/SaveDataDto.kt | 0 .../game/model/item/CommonItemParams.kt | 0 .../game/model/item/InventoryItem.kt | 0 .../cavedroid/game/model/item/Item.kt | 0 .../game/model/mapper/BlockMapper.kt | 0 .../cavedroid/game/model/mapper/ItemMapper.kt | 0 .../cavedroid/game/model/world/Biome.kt | 0 .../world/generator/WorldGeneratorConfig.kt | 0 .../cavedroid/game/objects/container/Chest.kt | 0 .../game/objects/container/Container.kt | 0 .../objects/container/ContainerController.kt | 0 .../game/objects/container/Furnace.kt | 0 .../cavedroid/game/objects/drop/Drop.kt | 0 .../game/render/BackgroundBlocksRenderer.kt | 0 .../cavedroid/game/render/BlocksRenderer.kt | 0 .../cavedroid/game/render/DebugRenderer.kt | 0 .../cavedroid/game/render/DropsRenderer.kt | 0 .../game/render/ForegroundBlocksRenderer.kt | 0 .../cavedroid/game/render/HudRenderer.kt | 0 .../cavedroid/game/render/IGameRenderer.kt | 0 .../cavedroid/game/render/MobsRenderer.kt | 0 .../game/render/TouchControlsRenderer.kt | 0 .../cavedroid/game/render/WindowsRenderer.kt | 0 .../render/windows/AbstractWindowRenderer.kt | 0 .../render/windows/ChestWindowRenderer.kt | 0 .../render/windows/CraftingWindowRenderer.kt | 0 .../render/windows/CreativeWindowRenderer.kt | 0 .../render/windows/FurnaceWindowRenderer.kt | 0 .../render/windows/SurvivalWindowRenderer.kt | 0 .../cavedroid/game/save/GameSaveData.kt | 0 .../cavedroid/game/save/GameSaveLoader.kt | 0 .../cavedroid/game/ui/TooltipManager.kt | 0 .../game/ui/windows/GameWindowsConfigs.kt | 0 .../game/ui/windows/GameWindowsManager.kt | 0 .../inventory/AbstractInventoryWindow.kt | 0 .../AbstractInventoryWindowWithCraftGrid.kt | 0 .../windows/inventory/ChestInventoryWindow.kt | 0 .../inventory/CraftingInventoryWindow.kt | 0 .../inventory/CreativeInventoryWindow.kt | 0 .../inventory/FurnaceInventoryWindow.kt | 0 .../inventory/SurvivalInventoryWindow.kt | 0 .../GameWorldBlocksLogicControllerTask.kt | 0 .../GameWorldFluidsLogicControllerTask.kt | 0 .../game/world/GameWorldGenerator.kt | 0 .../world/GameWorldMobDamageControllerTask.kt | 0 .../menu/objects/BooleanOptionButton.kt | 0 .../cavedroid/menu/submenus/MenuOptions.kt | 0 .../cavedroid/menu/submenus/MenusFactory.kt | 0 .../deadsoftware/cavedroid/misc/Saveable.kt | 0 .../multibind}/BindKeyboardInputHandler.kt | 0 .../multibind}/BindMouseInputHandler.kt | 0 .../multibind}/BindPlaceBlockAction.kt | 0 .../annotations/multibind}/BindRenderer.kt | 0 .../multibind}/BindUpdateBlockAction.kt | 0 .../multibind}/BindUseBlockAction.kt | 0 .../multibind}/BindUseItemAction.kt | 0 .../multibind}/MultibindingConfig.kt | 0 .../misc/utils/ArrayMapExtensions.kt | 0 .../cavedroid/misc/utils/AssetLoader.kt | 0 .../cavedroid/misc/utils/GdxExtensions.kt | 0 .../cavedroid/misc/utils/ItemUtils.kt | 0 .../cavedroid/misc/utils/MeasureUnitsUtils.kt | 0 .../cavedroid/misc/utils/RenderingUtils.kt | 0 .../cavedroid/misc/utils/SpriteOrigin.kt | 0 .../cavedroid/misc/utils/SpriteUtils.kt | 0 .../cavedroid/misc/utils/mobs/MobSprites.kt | 0 .../cavedroid/prefs/PreferencesStore.kt | 0 desktop/assets | 1 - desktop/build.gradle | 50 ------ desktop/build.gradle.kts | 41 +++++ .../cavedroid/desktop/DesktopLauncher.kt | 54 +++++++ .../desktop/DesktopPreferencesStore.kt | 0 desktop/src/main/resources | 1 + .../cavedroid/desktop/DesktopLauncher.java | 47 ------ settings.gradle | 2 - settings.gradle.kts | 3 + 218 files changed, 417 insertions(+), 327 deletions(-) delete mode 120000 android/assets delete mode 100644 android/build.gradle create mode 100644 android/build.gradle.kts delete mode 100644 android/project.properties rename android/{ => src}/debug/res/drawable-hdpi/ic_launcher.png (100%) rename android/{ => src}/debug/res/drawable-mdpi/ic_launcher.png (100%) rename android/{ => src}/debug/res/drawable-xhdpi/ic_launcher.png (100%) rename android/{ => src}/debug/res/drawable-xxhdpi/ic_launcher.png (100%) rename android/{ => src}/debug/res/drawable-xxxhdpi/ic_launcher.png (100%) rename android/{ => src}/debug/res/drawable/ic_launcher_foreground.xml (100%) rename android/{ => src}/debug/res/values/strings.xml (100%) rename android/{ => src/main}/AndroidManifest.xml (100%) create mode 120000 android/src/main/assets rename android/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/AndroidLauncher.kt (100%) rename android/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/AndroidPreferencesStore.kt (100%) rename android/{ => src/main}/res/drawable-anydpi-v26/ic_launcher.xml (100%) rename android/{ => src/main}/res/drawable-hdpi/ic_launcher.png (100%) rename android/{ => src/main}/res/drawable-mdpi/ic_launcher.png (100%) rename android/{ => src/main}/res/drawable-xhdpi/ic_launcher.png (100%) rename android/{ => src/main}/res/drawable-xxhdpi/ic_launcher.png (100%) rename android/{ => src/main}/res/drawable-xxxhdpi/ic_launcher.png (100%) rename android/{ => src/main}/res/drawable/ic_launcher_background.xml (100%) rename android/{ => src/main}/res/drawable/ic_launcher_foreground.xml (100%) rename android/{ => src/main}/res/values/strings.xml (100%) rename android/{ => src/main}/res/values/styles.xml (100%) rename android/{ => src/main}/res/xml/backup_descriptor.xml (100%) delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/ApplicationInfo.kt create mode 100644 buildSrc/src/main/kotlin/Dependencies.kt create mode 100644 buildSrc/src/main/kotlin/Versions.kt delete mode 100644 core/build.gradle create mode 100644 core/build.gradle.kts rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/MainConfig.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameComponent.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameModule.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GamePhysics.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameProc.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameRenderer.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameScope.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameScreen.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/GameUiWindow.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/mobs/Mob.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/mobs/player/Player.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/objects/TouchButton.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/game/world/GameWorld.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/MenuComponent.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/MenuProc.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/MenuScope.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/MenuScreen.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/objects/Button.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/objects/ButtonEventListener.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/objects/ButtonRenderer.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/submenus/Menu.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/menu/submenus/MenuNewGame.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/misc/Assets.java (100%) rename core/src/{ => main/java}/ru/deadsoftware/cavedroid/misc/Renderer.java (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/CaveGame.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/MainComponent.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/CommonBlockActionUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/placeblock/IPlaceBlockAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToBackgroundAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToForegroundAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/IUpdateBlockAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSnowedGrassAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useblock/IUseBlockAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useblock/UseChestAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useblock/UseCraftingTableAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useblock/UseFurnaceAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/IUseItemAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/UseBedAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/UseEmptyBucketAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/UseLavaBucketAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/UsePigSpawnEggAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/actions/useitem/UseWaterBucketAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/debug/DebugInfoStringsProvider.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/IGameInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/InputUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/Joystick.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/action/IGameInputAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/action/KeyboardInputAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/action/MouseInputAction.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/action/keys/KeyboardInputActionKey.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/action/keys/MouseInputActionKey.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/DropItemKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyDownKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyUpKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoLeftKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoRightKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/JumpKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/OpenInventoryKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SelectHotbarSlotKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/StopSwimKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SwimUpKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleGameModeKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/AbstractInventoryItemsMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/AttackMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/HotbarMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectChestInventoryItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCraftingInventoryItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCreativeInventoryItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectFurnaceInventoryItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectSurvivalInventoryItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/mapper/KeyboardInputActionMapper.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/input/mapper/MouseInputActionMapper.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/Pig.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/block/Block.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/block/BlockAnimationInfo.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/block/BlockDropInfo.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/block/BlockMargins.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/craft/CraftingRecipe.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/dto/CraftingDto.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/item/CommonItemParams.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/item/Item.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/world/Biome.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/model/world/generator/WorldGeneratorConfig.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/objects/container/Container.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/BackgroundBlocksRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/BlocksRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/DebugRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/DropsRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/ForegroundBlocksRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/IGameRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/MobsRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/WindowsRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/AbstractWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/ChestWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/CraftingWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/CreativeWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/FurnaceWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/TooltipManager.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsConfigs.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsManager.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindowWithCraftGrid.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/ChestInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CraftingInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CreativeInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/FurnaceInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/ui/windows/inventory/SurvivalInventoryWindow.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/game/world/GameWorldMobDamageControllerTask.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/menu/objects/BooleanOptionButton.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/menu/submenus/MenuOptions.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/Saveable.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindKeyboardInputHandler.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindMouseInputHandler.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindPlaceBlockAction.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindRenderer.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindUpdateBlockAction.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindUseBlockAction.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/BindUseItemAction.kt (100%) rename core/src/{ru/deadsoftware/cavedroid/misc/annotations/multibinding => main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind}/MultibindingConfig.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/ArrayMapExtensions.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/AssetLoader.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/ItemUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/MeasureUnitsUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/SpriteOrigin.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/SpriteUtils.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/misc/utils/mobs/MobSprites.kt (100%) rename core/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/prefs/PreferencesStore.kt (100%) delete mode 120000 desktop/assets delete mode 100644 desktop/build.gradle create mode 100644 desktop/build.gradle.kts create mode 100644 desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.kt rename desktop/src/{ => main/kotlin}/ru/deadsoftware/cavedroid/desktop/DesktopPreferencesStore.kt (100%) create mode 120000 desktop/src/main/resources delete mode 100644 desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/android/assets b/android/assets deleted file mode 120000 index ec2e4be..0000000 --- a/android/assets +++ /dev/null @@ -1 +0,0 @@ -../assets \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index d52b9e9..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,147 +0,0 @@ -buildscript { - configurations { natives } -} - -plugins { - id "com.android.application" - id "kotlin-android" -} - -def keystorePropertiesFile = rootProject.file("keystore.properties") -def keystoreProperties = new Properties() -keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) - -android { - namespace "ru.deadsoftware.cavedroid" - compileSdkVersion 34 - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['assets'] - jniLibs.srcDirs = ['libs'] - } - debug { - res.srcDirs = ['debug/res'] - } - } - compileOptions { - sourceCompatibility 17 - targetCompatibility 17 - } - packagingOptions { - exclude 'META-INF/robovm/ios/robovm.xml' - } - defaultConfig { - applicationId "ru.deadsoftware.cavedroid" - minSdkVersion 19 - targetSdkVersion 34 - versionCode 25 - versionName "alpha0.9.2" - - multiDexEnabled true - } - applicationVariants.all { variant -> - variant.outputs.all { - outputFileName = "android-${versionName}.apk" - } - } - - signingConfigs { - release_config { - storeFile file(keystoreProperties['releaseKeystorePath']) - storePassword keystoreProperties['releaseKeystorePassword'] - keyAlias keystoreProperties['releaseKeyAlias'] - keyPassword keystoreProperties['releaseKeyPassword'] - } - } - - buildTypes { - release { - minifyEnabled false - signingConfig signingConfigs.release_config - } - debug { - applicationIdSuffix ".debug" - } - } - buildFeatures { - buildConfig true - } - -} - - -// called every time gradle gets executed, takes the native dependencies of -// the natives configuration, and extracts them to the proper libs/ folders -// so they get packed with the APK. -task copyAndroidNatives { - doFirst { - file("libs/armeabi/").mkdirs() - file("libs/armeabi-v7a/").mkdirs() - file("libs/arm64-v8a/").mkdirs() - file("libs/x86_64/").mkdirs() - file("libs/x86/").mkdirs() - - configurations.natives.files.each { jar -> - def outputDir = null - if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") - if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") - if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi") - if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") - if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") - if(outputDir != null) { - copy { - from zipTree(jar) - into outputDir - include "*.so" - } - } - } - } -} - -tasks.whenTaskAdded { packageTask -> - if (packageTask.name.contains("package")) { - packageTask.dependsOn 'copyAndroidNatives' - } -} - -task run(type: Exec) { - def path - def localProperties = project.file("../local.properties") - if (localProperties.exists()) { - Properties properties = new Properties() - localProperties.withInputStream { instr -> - properties.load(instr) - } - def sdkDir = properties.getProperty('sdk.dir') - if (sdkDir) { - path = sdkDir - } else { - path = "$System.env.ANDROID_HOME" - } - } else { - path = "$System.env.ANDROID_HOME" - } - - def adb = path + "/platform-tools/adb" - commandLine "$adb", 'shell', 'am', 'start', '-n', 'ru.deadsoftware.cavedroid/ru.deadsoftware.cavedroid.AndroidLauncher' -} - -dependencies { - implementation project(":core") - implementation platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion") - api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" - natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" - - configurations.implementation { - exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8' - } -} \ No newline at end of file diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 0000000..40e158e --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,131 @@ +import java.io.FileInputStream +import java.util.Properties + +private val natives by configurations.creating + +plugins { + id("com.android.application") + id("kotlin-android") +} + +private val keystorePropertiesFile = rootProject.file("keystore.properties") +private val keystoreProperties = if (keystorePropertiesFile.exists()) { + Properties().apply { + load(FileInputStream(keystorePropertiesFile)) + } +} else { + null +} + + +android { + namespace = ApplicationInfo.packageName + compileSdk = 34 + + sourceSets { + + named("main") { + jniLibs.srcDir("libs") + } + + named("debug") { + res.srcDir("src/debug/res") + } + + } + + compileOptions { + sourceCompatibility = ApplicationInfo.sourceCompatibility + targetCompatibility = ApplicationInfo.sourceCompatibility + } + + defaultConfig { + applicationId = ApplicationInfo.packageName + minSdk = 19 + targetSdk = 34 + + versionCode = ApplicationInfo.versionCode + versionName = ApplicationInfo.versionName + + multiDexEnabled = true + } + + applicationVariants.asSequence() + .flatMap { variant -> variant.outputs.asSequence() } + .mapNotNull { output -> output as? com.android.build.gradle.internal.api.BaseVariantOutputImpl } + .forEach { output -> output.outputFileName = "android-${ApplicationInfo.versionName}.apk" } + + val releaseConfig = signingConfigs.create("release_config") + with(releaseConfig) { + storeFile = keystoreProperties?.get("releaseKeystorePath")?.let(::file) + storePassword = keystoreProperties?.get("releaseKeystorePassword")?.toString() + keyAlias = keystoreProperties?.get("releaseKeyAlias")?.toString() + keyPassword = keystoreProperties?.get("releaseKeyPassword")?.toString() + } + + buildTypes { + release { + isMinifyEnabled = false + signingConfig = releaseConfig + } + + debug { + applicationIdSuffix = ".debug" + } + } + + buildFeatures { + buildConfig = true + } +} + +// called every time gradle gets executed, takes the native dependencies of +// the natives configuration, and extracts them to the proper libs/ folders +// so they get packed with the APK. +task("copyAndroidNatives") { + doFirst { + val armeabiV7Dir = file("libs/armeabi-v7a/").apply { mkdirs() } + val arm64Dir = file("libs/arm64-v8a/").apply { mkdirs() } + val x86Dir = file("libs/x86/").apply { mkdirs() } + val amd64Dir = file("libs/x86_64/").apply { mkdirs() } + + natives.files.forEach { jar -> + val outputDir = when { + jar.name.endsWith("natives-armeabi-v7a.jar") -> armeabiV7Dir + jar.name.endsWith("natives-arm64-v8a.jar") -> arm64Dir + jar.name.endsWith("natives-x86.jar") -> x86Dir + jar.name.endsWith("natives-x86_64.jar") -> amd64Dir + else -> null + } + + if (outputDir != null) { + copy { + from(zipTree(jar)) + into(outputDir) + include("*.so") + } + } + } + } +} + +tasks.whenTaskAdded { + if (name.contains("package")) { + dependsOn("copyAndroidNatives") + } +} + +dependencies { + implementation((project(":core"))) + implementation(platform(Dependencies.Kotlin.bom)) + + implementation(Dependencies.LibGDX.gdx) + implementation(Dependencies.LibGDX.Android.backend) + + natives(Dependencies.LibGDX.Android.Natives.armeabi) + natives(Dependencies.LibGDX.Android.Natives.arm64) + natives(Dependencies.LibGDX.Android.Natives.x86) + natives(Dependencies.LibGDX.Android.Natives.x86_64) + + configurations["implementation"].exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8") +} \ No newline at end of file diff --git a/android/project.properties b/android/project.properties deleted file mode 100644 index 3fefa92..0000000 --- a/android/project.properties +++ /dev/null @@ -1,9 +0,0 @@ -# This file is used by the Eclipse ADT plugin. It is unnecessary for IDEA and Android Studio projects, which -# configure Proguard and the Android target via the build.gradle file. - -# To enable ProGuard to work with Eclipse ADT, uncomment this (available properties: sdk.dir, user.home) -# and ensure proguard.jar in the Android SDK is up to date (or alternately reduce the android target to 23 or lower): -# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-rules.pro - -# Project target. -target=android-19 diff --git a/android/debug/res/drawable-hdpi/ic_launcher.png b/android/src/debug/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from android/debug/res/drawable-hdpi/ic_launcher.png rename to android/src/debug/res/drawable-hdpi/ic_launcher.png diff --git a/android/debug/res/drawable-mdpi/ic_launcher.png b/android/src/debug/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from android/debug/res/drawable-mdpi/ic_launcher.png rename to android/src/debug/res/drawable-mdpi/ic_launcher.png diff --git a/android/debug/res/drawable-xhdpi/ic_launcher.png b/android/src/debug/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from android/debug/res/drawable-xhdpi/ic_launcher.png rename to android/src/debug/res/drawable-xhdpi/ic_launcher.png diff --git a/android/debug/res/drawable-xxhdpi/ic_launcher.png b/android/src/debug/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from android/debug/res/drawable-xxhdpi/ic_launcher.png rename to android/src/debug/res/drawable-xxhdpi/ic_launcher.png diff --git a/android/debug/res/drawable-xxxhdpi/ic_launcher.png b/android/src/debug/res/drawable-xxxhdpi/ic_launcher.png similarity index 100% rename from android/debug/res/drawable-xxxhdpi/ic_launcher.png rename to android/src/debug/res/drawable-xxxhdpi/ic_launcher.png diff --git a/android/debug/res/drawable/ic_launcher_foreground.xml b/android/src/debug/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from android/debug/res/drawable/ic_launcher_foreground.xml rename to android/src/debug/res/drawable/ic_launcher_foreground.xml diff --git a/android/debug/res/values/strings.xml b/android/src/debug/res/values/strings.xml similarity index 100% rename from android/debug/res/values/strings.xml rename to android/src/debug/res/values/strings.xml diff --git a/android/AndroidManifest.xml b/android/src/main/AndroidManifest.xml similarity index 100% rename from android/AndroidManifest.xml rename to android/src/main/AndroidManifest.xml diff --git a/android/src/main/assets b/android/src/main/assets new file mode 120000 index 0000000..2978ef3 --- /dev/null +++ b/android/src/main/assets @@ -0,0 +1 @@ +../../../assets \ No newline at end of file diff --git a/android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt b/android/src/main/kotlin/ru/deadsoftware/cavedroid/AndroidLauncher.kt similarity index 100% rename from android/src/ru/deadsoftware/cavedroid/AndroidLauncher.kt rename to android/src/main/kotlin/ru/deadsoftware/cavedroid/AndroidLauncher.kt diff --git a/android/src/ru/deadsoftware/cavedroid/AndroidPreferencesStore.kt b/android/src/main/kotlin/ru/deadsoftware/cavedroid/AndroidPreferencesStore.kt similarity index 100% rename from android/src/ru/deadsoftware/cavedroid/AndroidPreferencesStore.kt rename to android/src/main/kotlin/ru/deadsoftware/cavedroid/AndroidPreferencesStore.kt diff --git a/android/res/drawable-anydpi-v26/ic_launcher.xml b/android/src/main/res/drawable-anydpi-v26/ic_launcher.xml similarity index 100% rename from android/res/drawable-anydpi-v26/ic_launcher.xml rename to android/src/main/res/drawable-anydpi-v26/ic_launcher.xml diff --git a/android/res/drawable-hdpi/ic_launcher.png b/android/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from android/res/drawable-hdpi/ic_launcher.png rename to android/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/android/res/drawable-mdpi/ic_launcher.png b/android/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from android/res/drawable-mdpi/ic_launcher.png rename to android/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/android/res/drawable-xhdpi/ic_launcher.png b/android/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from android/res/drawable-xhdpi/ic_launcher.png rename to android/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/android/res/drawable-xxhdpi/ic_launcher.png b/android/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from android/res/drawable-xxhdpi/ic_launcher.png rename to android/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/android/res/drawable-xxxhdpi/ic_launcher.png b/android/src/main/res/drawable-xxxhdpi/ic_launcher.png similarity index 100% rename from android/res/drawable-xxxhdpi/ic_launcher.png rename to android/src/main/res/drawable-xxxhdpi/ic_launcher.png diff --git a/android/res/drawable/ic_launcher_background.xml b/android/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from android/res/drawable/ic_launcher_background.xml rename to android/src/main/res/drawable/ic_launcher_background.xml diff --git a/android/res/drawable/ic_launcher_foreground.xml b/android/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from android/res/drawable/ic_launcher_foreground.xml rename to android/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/android/res/values/strings.xml b/android/src/main/res/values/strings.xml similarity index 100% rename from android/res/values/strings.xml rename to android/src/main/res/values/strings.xml diff --git a/android/res/values/styles.xml b/android/src/main/res/values/styles.xml similarity index 100% rename from android/res/values/styles.xml rename to android/src/main/res/values/styles.xml diff --git a/android/res/xml/backup_descriptor.xml b/android/src/main/res/xml/backup_descriptor.xml similarity index 100% rename from android/res/xml/backup_descriptor.xml rename to android/src/main/res/xml/backup_descriptor.xml diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 60a1bb3..0000000 --- a/build.gradle +++ /dev/null @@ -1,44 +0,0 @@ -buildscript { - ext { - appName = "CaveDroid" - - gdxVersion = '1.12.0' - - guavaVersion = '28.1' - - daggerVersion = '2.51.1' - - kotlinVersion = '1.9.24' - kspVersion = '1.9.24-1.0.20' - kotlinSerializationVersion = '1.6.3' - - kotlinpoetKspVersion = '1.16.0' - } - - repositories { - mavenLocal() - mavenCentral() - maven { url "https://plugins.gradle.org/m2/" } - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - google() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.2.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" - } -} - -allprojects { - version = 'alpha0.9.2' - - repositories { - mavenLocal() - mavenCentral() - google() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - maven { url "https://oss.sonatype.org/content/repositories/releases/" } - maven { url "https://jitpack.io" } - maven { url "https://mvn.fredboy.ru/releases/" } - } -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..203acec --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,30 @@ +buildscript { + repositories { + mavenLocal() + mavenCentral() + google() + maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") } + maven { url = uri("https://oss.sonatype.org/content/repositories/releases/") } + maven { url = uri("https://jitpack.io") } + maven { url = uri("https://mvn.fredboy.ru/releases/") } + } + + dependencies { + classpath(Dependencies.androidGradlePlugin) + classpath(Dependencies.Kotlin.gradlePlugin) + } +} + +allprojects { + version = ApplicationInfo.versionName + + repositories { + mavenLocal() + mavenCentral() + google() + maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") } + maven { url = uri("https://oss.sonatype.org/content/repositories/releases/") } + maven { url = uri("https://jitpack.io") } + maven { url = uri("https://mvn.fredboy.ru/releases/") } + } +} \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..876c922 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +} diff --git a/buildSrc/src/main/kotlin/ApplicationInfo.kt b/buildSrc/src/main/kotlin/ApplicationInfo.kt new file mode 100644 index 0000000..05676c4 --- /dev/null +++ b/buildSrc/src/main/kotlin/ApplicationInfo.kt @@ -0,0 +1,11 @@ +import org.gradle.api.JavaVersion + +object ApplicationInfo { + const val name = "CaveDroid" + const val versionName = "alpha0.9.2" + const val versionCode = 25 + + const val packageName = "ru.deadsoftware.cavedroid" + + val sourceCompatibility = JavaVersion.VERSION_17 +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt new file mode 100644 index 0000000..bfe2c54 --- /dev/null +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -0,0 +1,49 @@ +object Dependencies { + + object LibGDX { + const val gdx = "com.badlogicgames.gdx:gdx:${Versions.gdx}" + + object Android { + const val backend = "com.badlogicgames.gdx:gdx-backend-android:${Versions.gdx}" + + object Natives { + const val armeabi = "com.badlogicgames.gdx:gdx-platform:${Versions.gdx}:natives-armeabi-v7a" + const val arm64 = "com.badlogicgames.gdx:gdx-platform:${Versions.gdx}:natives-arm64-v8a" + const val x86 = "com.badlogicgames.gdx:gdx-platform:${Versions.gdx}:natives-x86" + const val x86_64 = "com.badlogicgames.gdx:gdx-platform:${Versions.gdx}:natives-x86_64" + } + } + + object Desktop { + const val backend = "com.badlogicgames.gdx:gdx-backend-lwjgl3:${Versions.gdx}" + const val natives = "com.badlogicgames.gdx:gdx-platform:${Versions.gdx}:natives-desktop" + } + } + + object Dagger { + const val dagger = "com.google.dagger:dagger:${Versions.dagger}" + const val compiler = "com.google.dagger:dagger-compiler:${Versions.dagger}" + } + + object Kotlin { + const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}" + const val bom = "org.jetbrains.kotlin:kotlin-bom:${Versions.kotlin}" + const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}" + + object Serialization { + const val json = "org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.kotlinxSerialization}" + const val protobuf = "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:${Versions.kotlinxSerialization}" + } + } + + object Automultibind { + const val annotations = "ru.fredboy:automultibind-annotations:${Versions.automultibind}" + const val ksp = "ru.fredboy:automultibind-ksp:${Versions.automultibind}" + } + + const val androidGradlePlugin = "com.android.tools.build:gradle:${Versions.agp}" + + // TODO: Remove after complete kotlin migration + const val jetbrainsAnnotations = "org.jetbrains:annotations:${Versions.jetbrainsAnnotations}" + +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt new file mode 100644 index 0000000..69bfd29 --- /dev/null +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -0,0 +1,63 @@ +object Versions { + + /** + * Android gradle plugin version + */ + const val agp = "8.2.2" + + /** + * LibGDX version + * + * [Source](https://github.com/libgdx/libgdx) + */ + const val gdx = "1.12.0" + + /** + * Dagger version + * + * [Source](https://github.com/google/dagger) + */ + const val dagger = "2.51.1" + + /** + * Kotlin version + * + * [Source](https://github.com/JetBrains/kotlin) + */ + const val kotlin = "1.9.24" + + /** + * Kotlinx serialization version + * + * [Source](https://github.com/Kotlin/kotlinx.serialization/) + */ + const val kotlinxSerialization = "1.6.3" + + /** + * Kotlin Symbol Processing version + * + * [Source](https://github.com/google/ksp) + */ + const val ksp = "1.9.24-1.0.20" + + /** + * Kotlin poet version + * + * [Source](https://github.com/square/kotlinpoet) + */ + const val kotlinPoetKsp = "1.16.0" + + /** + * JetBrains annotations version + * + * [Source](https://github.com/JetBrains/java-annotations) + */ + const val jetbrainsAnnotations = "23.1.0" + + /** + * Automultibind version + * + * [Source](https://github.com/fredboy/automultibind) + */ + const val automultibind = "1.0.0" +} \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle deleted file mode 100644 index bd932c3..0000000 --- a/core/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -plugins { - id "java-library" - id "org.jetbrains.kotlin.jvm" - id "kotlin" - id "idea" - id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlinVersion" - id 'com.google.devtools.ksp' version "$kspVersion" -} - -java.targetCompatibility = JavaVersion.VERSION_17 -java.sourceCompatibility = JavaVersion.VERSION_17 - -sourceSets.main.java.srcDirs = ["src/"] - -dependencies { - implementation "ru.fredboy:automultibind-annotations:1.0.0" - ksp "ru.fredboy:automultibind-ksp:1.0.0" - - api "com.badlogicgames.gdx:gdx:$gdxVersion" - api "com.google.dagger:dagger:$daggerVersion" - implementation 'org.jetbrains:annotations:23.1.0' - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlinSerializationVersion" - ksp "com.google.dagger:dagger-compiler:$daggerVersion" -} diff --git a/core/build.gradle.kts b/core/build.gradle.kts new file mode 100644 index 0000000..276f49d --- /dev/null +++ b/core/build.gradle.kts @@ -0,0 +1,26 @@ +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") + id("kotlin") + id("idea") + id("org.jetbrains.kotlin.plugin.serialization") version Versions.kotlin + id ("com.google.devtools.ksp") version Versions.ksp +} + +java.sourceCompatibility = ApplicationInfo.sourceCompatibility +java.targetCompatibility = ApplicationInfo.sourceCompatibility + +dependencies { + implementation(Dependencies.Automultibind.annotations) + ksp(Dependencies.Automultibind.ksp) + + implementation(Dependencies.LibGDX.gdx) + implementation(Dependencies.Dagger.dagger) + + implementation(Dependencies.jetbrainsAnnotations) + implementation(Dependencies.Kotlin.stdlib) + implementation(Dependencies.Kotlin.Serialization.json) + implementation(Dependencies.Kotlin.Serialization.protobuf) + + ksp(Dependencies.Dagger.compiler) +} \ No newline at end of file diff --git a/core/src/ru/deadsoftware/cavedroid/MainConfig.java b/core/src/main/java/ru/deadsoftware/cavedroid/MainConfig.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/MainConfig.java rename to core/src/main/java/ru/deadsoftware/cavedroid/MainConfig.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameComponent.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameComponent.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameComponent.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameModule.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameModule.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameModule.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GamePhysics.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GamePhysics.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GamePhysics.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameProc.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameProc.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameProc.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameRenderer.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameScope.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameScope.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameScope.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameScope.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameScreen.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameScreen.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameScreen.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameScreen.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameUiWindow.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/GameUiWindow.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameUiWindow.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/GameUiWindow.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/mobs/Mob.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/Mob.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/mobs/Mob.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/mobs/player/Player.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/player/Player.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/mobs/player/Player.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/TouchButton.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/objects/TouchButton.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/TouchButton.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/objects/TouchButton.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java b/core/src/main/java/ru/deadsoftware/cavedroid/game/world/GameWorld.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/world/GameWorld.java rename to core/src/main/java/ru/deadsoftware/cavedroid/game/world/GameWorld.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuComponent.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuComponent.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/MenuComponent.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuComponent.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuProc.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuScope.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScope.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/MenuScope.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScope.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuScreen.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScreen.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/MenuScreen.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/MenuScreen.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/objects/Button.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/Button.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/objects/Button.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/Button.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/objects/ButtonEventListener.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/ButtonEventListener.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/objects/ButtonEventListener.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/ButtonEventListener.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/objects/ButtonRenderer.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/ButtonRenderer.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/objects/ButtonRenderer.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/objects/ButtonRenderer.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/Menu.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/submenus/Menu.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/Menu.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuMain.java diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuNewGame.java b/core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuNewGame.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuNewGame.java rename to core/src/main/java/ru/deadsoftware/cavedroid/menu/submenus/MenuNewGame.java diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Assets.java b/core/src/main/java/ru/deadsoftware/cavedroid/misc/Assets.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/Assets.java rename to core/src/main/java/ru/deadsoftware/cavedroid/misc/Assets.java diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Renderer.java b/core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/Renderer.java rename to core/src/main/java/ru/deadsoftware/cavedroid/misc/Renderer.java diff --git a/core/src/ru/deadsoftware/cavedroid/CaveGame.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/CaveGame.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt diff --git a/core/src/ru/deadsoftware/cavedroid/MainComponent.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/MainComponent.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/MainComponent.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/CommonBlockActionUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/CommonBlockActionUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/CommonBlockActionUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/CommonBlockActionUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/IPlaceBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/IPlaceBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/IPlaceBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/IPlaceBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToBackgroundAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToBackgroundAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToBackgroundAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToBackgroundAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToForegroundAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToForegroundAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToForegroundAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceBlockItemToForegroundAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/placeblock/PlaceSlabAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/IUpdateBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/IUpdateBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/IUpdateBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/IUpdateBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedLeftAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateBedRightAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateGrassAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateRequiresBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSnowedGrassAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSnowedGrassAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSnowedGrassAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/updateblock/UpdateSnowedGrassAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useblock/IUseBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/IUseBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useblock/IUseBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/IUseBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseChestAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseChestAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseChestAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseChestAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseCraftingTableAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseCraftingTableAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseCraftingTableAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseCraftingTableAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseFurnaceAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseFurnaceAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useblock/UseFurnaceAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useblock/UseFurnaceAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/IUseItemAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/IUseItemAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/IUseItemAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/IUseItemAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseBedAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseBedAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseBedAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseBedAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseEmptyBucketAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseEmptyBucketAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseEmptyBucketAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseEmptyBucketAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseLavaBucketAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseLavaBucketAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseLavaBucketAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseLavaBucketAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UsePigSpawnEggAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UsePigSpawnEggAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UsePigSpawnEggAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UsePigSpawnEggAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseWaterBucketAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseWaterBucketAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/actions/useitem/UseWaterBucketAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/actions/useitem/UseWaterBucketAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/debug/DebugInfoStringsProvider.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/debug/DebugInfoStringsProvider.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/debug/DebugInfoStringsProvider.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/debug/DebugInfoStringsProvider.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/IGameInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/IGameInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/IGameInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/IGameInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/InputUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/InputUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/InputUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/InputUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/Joystick.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/Joystick.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/Joystick.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/Joystick.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/action/IGameInputAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/IGameInputAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/action/IGameInputAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/IGameInputAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/action/KeyboardInputAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/KeyboardInputAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/action/KeyboardInputAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/KeyboardInputAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/action/MouseInputAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/MouseInputAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/action/MouseInputAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/MouseInputAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/action/keys/KeyboardInputActionKey.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/keys/KeyboardInputActionKey.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/action/keys/KeyboardInputActionKey.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/keys/KeyboardInputActionKey.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/action/keys/MouseInputActionKey.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/keys/MouseInputActionKey.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/action/keys/MouseInputActionKey.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/action/keys/MouseInputActionKey.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/DropItemKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/DropItemKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/DropItemKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/DropItemKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyDownKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyDownKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyDownKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyDownKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyUpKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyUpKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyUpKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/FlyUpKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoLeftKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoLeftKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoLeftKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoLeftKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoRightKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoRightKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoRightKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/GoRightKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/JumpKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/JumpKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/JumpKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/JumpKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/MoveCursorControlsModeKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/OpenInventoryKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/OpenInventoryKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/OpenInventoryKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/OpenInventoryKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/PauseGameKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SelectHotbarSlotKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SelectHotbarSlotKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SelectHotbarSlotKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SelectHotbarSlotKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/StopSwimKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/StopSwimKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/StopSwimKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/StopSwimKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SwimUpKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SwimUpKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SwimUpKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/SwimUpKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleControlsModeKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleDebugInfoKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleGameModeKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleGameModeKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleGameModeKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleGameModeKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/ToggleMinimapKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/keyboard/TurnOnFlyModeKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/AbstractInventoryItemsMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/AbstractInventoryItemsMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/AbstractInventoryItemsMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/AbstractInventoryItemsMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/AttackMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/AttackMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/AttackMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/AttackMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CreativeInventoryScrollMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/HotbarMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/HotbarMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/HotbarMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/HotbarMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectChestInventoryItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectChestInventoryItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectChestInventoryItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectChestInventoryItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCraftingInventoryItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCraftingInventoryItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCraftingInventoryItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCraftingInventoryItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCreativeInventoryItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCreativeInventoryItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCreativeInventoryItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectCreativeInventoryItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectFurnaceInventoryItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectFurnaceInventoryItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectFurnaceInventoryItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectFurnaceInventoryItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectSurvivalInventoryItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectSurvivalInventoryItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectSurvivalInventoryItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/SelectSurvivalInventoryItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/mapper/KeyboardInputActionMapper.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/mapper/KeyboardInputActionMapper.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/mapper/KeyboardInputActionMapper.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/mapper/KeyboardInputActionMapper.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/mapper/MouseInputActionMapper.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/mapper/MouseInputActionMapper.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/input/mapper/MouseInputActionMapper.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/input/mapper/MouseInputActionMapper.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/FallingBlock.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/MobSaveDataMapper.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/MobsController.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/PeacefulMob.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/Pig.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/Pig.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/Pig.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/mobs/player/Inventory.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/Block.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/block/Block.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/Block.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/BlockAnimationInfo.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockAnimationInfo.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/block/BlockAnimationInfo.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockAnimationInfo.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/BlockDropInfo.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockDropInfo.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/block/BlockDropInfo.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockDropInfo.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/BlockMargins.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockMargins.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/block/BlockMargins.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/BlockMargins.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/block/CommonBlockParams.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/craft/CraftingRecipe.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/craft/CraftingRecipe.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/craft/CraftingRecipe.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/craft/CraftingRecipe.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/BlockDto.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/CraftingDto.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/CraftingDto.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/dto/CraftingDto.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/CraftingDto.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/ItemDto.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/dto/SaveDataDto.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/CommonItemParams.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/CommonItemParams.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/item/CommonItemParams.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/CommonItemParams.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/InventoryItem.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/Item.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/item/Item.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/item/Item.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/world/Biome.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/world/Biome.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/world/Biome.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/world/Biome.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/world/generator/WorldGeneratorConfig.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/world/generator/WorldGeneratorConfig.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/model/world/generator/WorldGeneratorConfig.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/model/world/generator/WorldGeneratorConfig.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Chest.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Container.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/container/Container.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Container.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/ContainerController.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/container/Furnace.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/objects/drop/Drop.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/BackgroundBlocksRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/BackgroundBlocksRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/BackgroundBlocksRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/BackgroundBlocksRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/BlocksRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/BlocksRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/BlocksRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/BlocksRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/DebugRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/DebugRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/DebugRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/DebugRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/DropsRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/DropsRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/DropsRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/DropsRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/ForegroundBlocksRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/ForegroundBlocksRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/ForegroundBlocksRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/ForegroundBlocksRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/HudRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/IGameRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/IGameRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/IGameRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/IGameRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/MobsRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/MobsRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/MobsRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/MobsRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/TouchControlsRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/WindowsRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/WindowsRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/WindowsRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/WindowsRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/AbstractWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/AbstractWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/AbstractWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/AbstractWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/ChestWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/ChestWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/ChestWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/ChestWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/CraftingWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/CraftingWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/CraftingWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/CraftingWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/CreativeWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/CreativeWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/CreativeWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/CreativeWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/FurnaceWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/FurnaceWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/FurnaceWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/FurnaceWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/save/GameSaveData.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/save/GameSaveLoader.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/TooltipManager.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/TooltipManager.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/TooltipManager.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/TooltipManager.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsConfigs.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsConfigs.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsConfigs.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsConfigs.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsManager.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsManager.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsManager.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/GameWindowsManager.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindowWithCraftGrid.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindowWithCraftGrid.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindowWithCraftGrid.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/AbstractInventoryWindowWithCraftGrid.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/ChestInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/ChestInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/ChestInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/ChestInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CraftingInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CraftingInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CraftingInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CraftingInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CreativeInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CreativeInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CreativeInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/CreativeInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/FurnaceInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/FurnaceInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/FurnaceInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/FurnaceInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/SurvivalInventoryWindow.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/SurvivalInventoryWindow.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/ui/windows/inventory/SurvivalInventoryWindow.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/ui/windows/inventory/SurvivalInventoryWindow.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldBlocksLogicControllerTask.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldFluidsLogicControllerTask.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldGenerator.kt diff --git a/core/src/ru/deadsoftware/cavedroid/game/world/GameWorldMobDamageControllerTask.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldMobDamageControllerTask.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/game/world/GameWorldMobDamageControllerTask.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/game/world/GameWorldMobDamageControllerTask.kt diff --git a/core/src/ru/deadsoftware/cavedroid/menu/objects/BooleanOptionButton.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/objects/BooleanOptionButton.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/objects/BooleanOptionButton.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/objects/BooleanOptionButton.kt diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuOptions.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenuOptions.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/submenus/MenuOptions.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenuOptions.kt diff --git a/core/src/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/menu/submenus/MenusFactory.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/Saveable.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/Saveable.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/Saveable.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindKeyboardInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindKeyboardInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindKeyboardInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindKeyboardInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindMouseInputHandler.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindMouseInputHandler.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindMouseInputHandler.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindMouseInputHandler.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindPlaceBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindPlaceBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindPlaceBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindPlaceBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindRenderer.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindRenderer.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindRenderer.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindRenderer.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUpdateBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUpdateBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUpdateBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUpdateBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUseBlockAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUseBlockAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUseBlockAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUseBlockAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUseItemAction.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUseItemAction.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/BindUseItemAction.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/BindUseItemAction.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/MultibindingConfig.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/MultibindingConfig.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/annotations/multibinding/MultibindingConfig.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/annotations/multibind/MultibindingConfig.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/ArrayMapExtensions.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/ArrayMapExtensions.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/ArrayMapExtensions.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/ArrayMapExtensions.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/AssetLoader.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/AssetLoader.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/AssetLoader.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/AssetLoader.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/GdxExtensions.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/ItemUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/ItemUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/ItemUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/ItemUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/MeasureUnitsUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/MeasureUnitsUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/MeasureUnitsUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/MeasureUnitsUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/SpriteOrigin.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/SpriteOrigin.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/SpriteOrigin.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/SpriteOrigin.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/SpriteUtils.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/SpriteUtils.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/SpriteUtils.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/SpriteUtils.kt diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/mobs/MobSprites.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/mobs/MobSprites.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/misc/utils/mobs/MobSprites.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/misc/utils/mobs/MobSprites.kt diff --git a/core/src/ru/deadsoftware/cavedroid/prefs/PreferencesStore.kt b/core/src/main/kotlin/ru/deadsoftware/cavedroid/prefs/PreferencesStore.kt similarity index 100% rename from core/src/ru/deadsoftware/cavedroid/prefs/PreferencesStore.kt rename to core/src/main/kotlin/ru/deadsoftware/cavedroid/prefs/PreferencesStore.kt diff --git a/desktop/assets b/desktop/assets deleted file mode 120000 index ec2e4be..0000000 --- a/desktop/assets +++ /dev/null @@ -1 +0,0 @@ -../assets \ No newline at end of file diff --git a/desktop/build.gradle b/desktop/build.gradle deleted file mode 100644 index f909ef1..0000000 --- a/desktop/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -plugins { - id 'java-library' - id 'kotlin' - id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlinVersion" -} - -java.targetCompatibility = JavaVersion.VERSION_17 -java.sourceCompatibility = JavaVersion.VERSION_1_8 - -sourceSets.main.java.srcDirs = ["src/"] -sourceSets.main.resources.srcDirs = ["assets/"] - -project.ext.mainClassName = "ru.deadsoftware.cavedroid.desktop.DesktopLauncher" -project.ext.assetsDir = new File("assets/") - -task run(dependsOn: build, type: JavaExec) { - main = project.mainClassName - classpath = sourceSets.main.runtimeClasspath - standardInput = System.in - workingDir = project.assetsDir - ignoreExitValue = true as JavaExecSpec - args "--debug" -} - -task runTouch(dependsOn: build, type: JavaExec) { - main = project.mainClassName - classpath = sourceSets.main.runtimeClasspath - standardInput = System.in - workingDir = project.assetsDir - ignoreExitValue = true as JavaExecSpec - args "--touch", "--debug" -} - -task dist(dependsOn: build, type: Jar) { - duplicatesStrategy = DuplicatesStrategy.EXCLUDE - manifest { - attributes 'Main-Class': project.mainClassName - } - from { - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } - with jar -} - -dependencies { - implementation project(":core") - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinSerializationVersion" - api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion" - api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" -} diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts new file mode 100644 index 0000000..5e2203e --- /dev/null +++ b/desktop/build.gradle.kts @@ -0,0 +1,41 @@ +plugins { + id("kotlin") +} + +java.sourceCompatibility = ApplicationInfo.sourceCompatibility +java.targetCompatibility = ApplicationInfo.sourceCompatibility + +private val desktopLauncherClassName = "ru.deadsoftware.cavedroid.desktop.DesktopLauncher" + +tasks.register("run") { + dependsOn("build") + mainClass = desktopLauncherClassName + classpath = sourceSets["main"].runtimeClasspath + workingDir = sourceSets["main"].resources.sourceDirectories.first() + args("--debug") +} + +tasks.register("runTouch") { + dependsOn("build") + mainClass = desktopLauncherClassName + classpath = sourceSets["main"].runtimeClasspath + workingDir = sourceSets["main"].resources.sourceDirectories.first() + args("--touch", "--debug") +} + +tasks.register("dist") { + dependsOn("build") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + manifest { + attributes["Main-Class"] = desktopLauncherClassName + } + from(configurations.runtimeClasspath.get().resolve().map { it.takeIf(File::isDirectory) ?: zipTree(it) }) +} + +dependencies { + implementation(project(":core")) + + implementation(Dependencies.LibGDX.gdx) + implementation(Dependencies.LibGDX.Desktop.backend) + implementation(Dependencies.LibGDX.Desktop.natives) +} diff --git a/desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.kt b/desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.kt new file mode 100644 index 0000000..b4b3db4 --- /dev/null +++ b/desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.kt @@ -0,0 +1,54 @@ +package ru.deadsoftware.cavedroid.desktop + +import com.badlogic.gdx.Files +import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application +import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration +import ru.deadsoftware.cavedroid.CaveGame + +internal object DesktopLauncher { + + @JvmStatic + fun main(arg: Array) { + val config = Lwjgl3ApplicationConfiguration() + + with(config) { + setWindowIcon( + /* fileType = */ Files.FileType.Internal, + /* ...filePaths = */ "icons/icon512.png", "icons/icon256.png", "icons/icon128.png" + ) + setTitle("CaveDroid") + setWindowedMode(960, 540) + useVsync(true) + } + + var touch = false + var debug = false + var assetsPath: String? = null + + for (anArg in arg) { + if (anArg == "--touch") { + touch = true + } + + if (anArg == "--debug") { + debug = true + } + + if (anArg.startsWith("--assets")) { + val splitArg: Array = anArg.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + if (splitArg.size >= 2) { + assetsPath = splitArg[1] + } + } + } + + val caveGame = CaveGame( + gameDataDirectoryPath = System.getProperty("user.home") + "/.cavedroid", + isTouchScreen = touch, + isDebug = debug, + preferencesStore = DesktopPreferencesStore(), + ) + + Lwjgl3Application(caveGame, config) + } +} \ No newline at end of file diff --git a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopPreferencesStore.kt b/desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopPreferencesStore.kt similarity index 100% rename from desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopPreferencesStore.kt rename to desktop/src/main/kotlin/ru/deadsoftware/cavedroid/desktop/DesktopPreferencesStore.kt diff --git a/desktop/src/main/resources b/desktop/src/main/resources new file mode 120000 index 0000000..2978ef3 --- /dev/null +++ b/desktop/src/main/resources @@ -0,0 +1 @@ +../../../assets \ No newline at end of file diff --git a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java b/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java deleted file mode 100644 index 7137497..0000000 --- a/desktop/src/ru/deadsoftware/cavedroid/desktop/DesktopLauncher.java +++ /dev/null @@ -1,47 +0,0 @@ -package ru.deadsoftware.cavedroid.desktop; - -import com.badlogic.gdx.Files; -import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; -import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; -import ru.deadsoftware.cavedroid.CaveGame; - -class DesktopLauncher { - public static void main(String[] arg) { - Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); - config.setWindowIcon(Files.FileType.Internal, - "icons/icon512.png", "icons/icon256.png", "icons/icon128.png"); - config.setTitle("CaveDroid"); - config.setWindowedMode(960, 540); - config.useVsync(true); - - boolean touch = false; - boolean debug = false; - String assetsPath = null; - - for (String anArg : arg) { - if (anArg.equals("--touch")) { - touch = true; - } - - if (anArg.equals("--debug")) { - debug = true; - } - - if (anArg.startsWith("--assets")) { - String[] splitArg = anArg.split("="); - if (splitArg.length >= 2) { - assetsPath = splitArg[1]; - } - } - } - - CaveGame caveGame = new CaveGame( - System.getProperty("user.home") + "/.cavedroid", - touch, - debug, - new DesktopPreferencesStore() - ); - - new Lwjgl3Application(caveGame, config); - } -} diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 99367df..0000000 --- a/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -include 'desktop', 'android', 'core' - diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..8b9f274 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,3 @@ +include("android") +include("desktop") +include("core") -- 2.29.2 From 7ed5ef095b81522fa416d2d7f313b7da1953ab35 Mon Sep 17 00:00:00 2001 From: fredboy Date: Sat, 25 May 2024 16:31:39 +0700 Subject: [PATCH 16/16] Update version script --- up-version.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/up-version.sh b/up-version.sh index 7637355..80fa78e 100755 --- a/up-version.sh +++ b/up-version.sh @@ -4,12 +4,12 @@ new_version=$1 new_version_string=$(echo $new_version | sed 's/\(alpha\|beta\)\(.*\)/\1 \2/') -sed -i 's/\(version\s=\s\)'"'"'.*'"'"'/\1'"'"''"$new_version"''"'"'/g' build.gradle -sed -i 's/\(versionName\s\)\".*\"/\1\"'"$new_version"'\"/g' android/build.gradle -sed -i 's/\(^\s*versionCode\s\)\([0-9]*\)/echo "\1$((\2+1))"/ge' android/build.gradle -sed -i 's/\(public static final String VERSION = \)\".*\"/\1\"'"$new_version_string"'\"/' core/src/ru/deadsoftware/cavedroid/CaveGame.java +sed -i 's/\(const val versionName = \)\".*\"/\1\"'"$new_version"'\"/g' buildSrc/src/main/kotlin/ApplicationInfo.kt +sed -i 's/\(\s*const val versionCode = \)\([0-9]*\)/echo "\1$((\2+1))"/ge' buildSrc/src/main/kotlin/ApplicationInfo.kt +sed -i 's/\(const val VERSION = \)\".*\"/\1\"'"$new_version_string"'\"/' core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt -git add build.gradle android/build.gradle core/src/ru/deadsoftware/cavedroid/CaveGame.java +git add buildSrc/src/main/kotlin/ApplicationInfo.kt core/src/main/kotlin/ru/deadsoftware/cavedroid/CaveGame.kt git commit -m "Update version" git tag "$new_version" +q \ No newline at end of file -- 2.29.2