diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index f5c137c80..f73dbbbd4 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -36,6 +36,11 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { */ open var actorNowPlaying: ActorHumanoid? = null + open var gameInitialised = false + internal set + open var gameFullyLoaded = false + internal set + val ACTORCONTAINER_INITIAL_SIZE = 64 val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) @@ -44,6 +49,8 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { } override fun show() { + // the very basic show() implementation + gameInitialised = true } override fun render(delta: Float) { diff --git a/src/net/torvald/terrarum/LoadScreen.kt b/src/net/torvald/terrarum/LoadScreen.kt index a4dc02403..99fad6dd4 100644 --- a/src/net/torvald/terrarum/LoadScreen.kt +++ b/src/net/torvald/terrarum/LoadScreen.kt @@ -14,7 +14,7 @@ import net.torvald.terrarum.modulebasegame.Ingame */ object LoadScreen : ScreenAdapter() { - var screenToLoad: Ingame? = null + var screenToLoad: IngameInstance? = null private lateinit var screenLoadingThread: Thread diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index 30f890989..31b716ab0 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -132,10 +132,10 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { //private val ingameDrawThread: ThreadIngameDraw // draw must be on the main thread - var gameInitialised = false - private set - var gameFullyLoaded = false - private set + override var gameInitialised = false + internal set + override var gameFullyLoaded = false + internal set private val TILE_SIZEF = FeaturesDrawer.TILE_SIZE.toFloat() @@ -168,7 +168,8 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { //BlocksDrawer.world = this.world FeaturesDrawer.world = this.world - gameInitialised = true + + super.show() // gameInitialised = true } data class GameSaveData( diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt new file mode 100644 index 000000000..c6f5d07a4 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt @@ -0,0 +1,86 @@ +package net.torvald.terrarum.modulebasegame.ui + +import com.badlogic.gdx.graphics.Camera +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.random.HQRNG +import net.torvald.terrarum.LoadScreen +import net.torvald.terrarum.Second +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.BuildingMaker +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.ui.UICanvas + +/** + * Created by minjaesong on 2018-12-08. + */ +class UIProxyNewBuildingMaker : UICanvas() { + + override var width: Int = 0 + override var height: Int = 0 + override var openCloseTime: Second = 0f + + override fun updateUI(delta: Float) { + } + + override fun renderUI(batch: SpriteBatch, camera: Camera) { + } + + override fun doOpening(delta: Float) { + } + + override fun doClosing(delta: Float) { + TODO("not implemented") + } + + override fun endOpening(delta: Float) { + val ingame = BuildingMaker(Terrarum.batch) + + Terrarum.ingame = ingame + LoadScreen.screenToLoad = ingame + Terrarum.setScreen(LoadScreen) + } + + override fun endClosing(delta: Float) { + TODO("not implemented") + } + + override fun dispose() { + TODO("not implemented") + } + + override fun mouseMoved(screenX: Int, screenY: Int): Boolean { + return super.mouseMoved(screenX, screenY) + } + + override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean { + return super.touchDragged(screenX, screenY, pointer) + } + + override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + return super.touchDown(screenX, screenY, pointer, button) + } + + override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + return super.touchUp(screenX, screenY, pointer, button) + } + + override fun scrolled(amount: Int): Boolean { + return super.scrolled(amount) + } + + override fun keyDown(keycode: Int): Boolean { + return super.keyDown(keycode) + } + + override fun keyUp(keycode: Int): Boolean { + return super.keyUp(keycode) + } + + override fun keyTyped(character: Char): Boolean { + return super.keyTyped(character) + } + + override fun resize(width: Int, height: Int) { + super.resize(width, height) + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt new file mode 100644 index 000000000..c32edf3c4 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt @@ -0,0 +1,88 @@ +package net.torvald.terrarum.modulebasegame.ui + +import com.badlogic.gdx.graphics.Camera +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.random.HQRNG +import net.torvald.terrarum.LoadScreen +import net.torvald.terrarum.Second +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.ui.UICanvas + +/** + * Created by minjaesong on 2018-12-08. + */ +class UIProxyNewRandomGame : UICanvas() { + + override var width: Int = 0 + override var height: Int = 0 + override var openCloseTime: Second = 0f + + override fun updateUI(delta: Float) { + } + + override fun renderUI(batch: SpriteBatch, camera: Camera) { + } + + override fun doOpening(delta: Float) { + } + + override fun doClosing(delta: Float) { + TODO("not implemented") + } + + override fun endOpening(delta: Float) { + val ingame = Ingame(Terrarum.batch) + ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) + //ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(8192, 2048, 0x51621DL) + ingame.gameLoadMode = Ingame.GameLoadMode.CREATE_NEW + + Terrarum.ingame = ingame + LoadScreen.screenToLoad = ingame + Terrarum.setScreen(LoadScreen) + } + + override fun endClosing(delta: Float) { + TODO("not implemented") + } + + override fun dispose() { + TODO("not implemented") + } + + override fun mouseMoved(screenX: Int, screenY: Int): Boolean { + return super.mouseMoved(screenX, screenY) + } + + override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean { + return super.touchDragged(screenX, screenY, pointer) + } + + override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + return super.touchDown(screenX, screenY, pointer, button) + } + + override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + return super.touchUp(screenX, screenY, pointer, button) + } + + override fun scrolled(amount: Int): Boolean { + return super.scrolled(amount) + } + + override fun keyDown(keycode: Int): Boolean { + return super.keyDown(keycode) + } + + override fun keyUp(keycode: Int): Boolean { + return super.keyUp(keycode) + } + + override fun keyTyped(character: Char): Boolean { + return super.keyTyped(character) + } + + override fun resize(width: Int, height: Int) { + super.resize(width, height) + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt index 16be34a86..9613363a5 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt @@ -108,27 +108,6 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode) : UICanvas() { throw NullPointerException("No parent node to return") } } - else if (it.labelText.contains("Start New Random Game")) { - if (!startNewGameCalled) { - startNewGameCalled = true - - - printdbg(this, 1) - - val ingame = Ingame(Terrarum.batch) - ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) - //ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(8192, 2048, 0x51621DL) - ingame.gameLoadMode = Ingame.GameLoadMode.CREATE_NEW - - printdbg(this, 2) - - Terrarum.ingame = ingame - LoadScreen.screenToLoad = ingame - Terrarum.setScreen(LoadScreen) - - printdbg(this, 3) - } - } else { // check if target exists //println("current node: ${currentRemoConContents.data}") diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt index 2a4b768e1..6a0356811 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt @@ -7,8 +7,11 @@ import java.util.* object UITitleRemoConYaml { - // YAML indent with a space, separate label and class with " : " (\x20\x3A\x20) - + /** + * YAML indent with a space, separate label and class with " : " (\x20\x3A\x20) + * + * The class must be the UICanvas + */ val menus = """ - MENU_MODE_SINGLEPLAYER : net.torvald.terrarum.modulebasegame.ui.UITitleCharactersList - CONTEXT_CHARACTER_NEW @@ -34,8 +37,8 @@ object UITitleRemoConYaml { val debugTools = """ - Development Tools $ - - Building Maker - - Start New Random Game + - Building Maker : net.torvald.terrarum.modulebasegame.ui.UIProxyNewBuildingMaker + - Start New Random Game : net.torvald.terrarum.modulebasegame.ui.UIProxyNewRandomGame - MENU_LABEL_RETURN """.trimIndent() diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt index 12cb5c500..0751f0bb2 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt @@ -730,6 +730,7 @@ internal object BlocksDrawer { // write to colour buffer + // As the texture size is very small, multithreading it would be less effective for (y in 0 until tilesBuffer.height) { for (x in 0 until tilesBuffer.width) { val color = sourceBuffer[y][x]