From 1a00f73d529a708d18f59e8b3d9f7f3716f7c41f Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 2 Jul 2019 04:57:43 +0900 Subject: [PATCH] no more context fuckups on apploader --- .idea/misc.xml | 2 +- assets/graphics/fonts/7x13_Tamzen7x14b.tga | 2 +- src/net/torvald/UnsafePtr.kt | 41 ++++- src/net/torvald/terrarum/AppLoader.java | 151 +++++++++++++----- .../terrarum/FuckingWorldRenderer.kt.unused | 6 +- src/net/torvald/terrarum/GlslTilingTest.kt | 2 +- src/net/torvald/terrarum/LoadScreen.kt | 34 ++-- .../torvald/terrarum/MusicComposerApp.java | 61 +++++++ .../terrarum/MusicComposerStandalone.kt | 7 + src/net/torvald/terrarum/Terrarum.kt | 93 +++-------- src/net/torvald/terrarum/TitleScreen.kt | 22 +-- .../torvald/terrarum/UIItemInventoryElem.kt | 14 +- .../terrarum/UIItemInventoryElemSimple.kt | 12 +- .../terrarum/blockproperties/BlockPropUtil.kt | 42 +++-- .../torvald/terrarum/blockstats/BlockStats.kt | 4 +- .../terrarum/blockstats/MinimapComposer.kt | 3 +- src/net/torvald/terrarum/console/Version.kt | 2 +- .../gamecontroller/IngameController.kt | 62 +++---- .../torvald/terrarum/gameworld/BlockLayer.kt | 2 +- .../terrarum/itemproperties/ItemCodex.kt | 8 +- .../itemproperties/ItemEffectsLuaAPI.kt | 1 - .../terrarum/modulebasegame/BuildingMaker.kt | 4 +- .../{Ingame.kt => TerrarumIngame.kt} | 16 +- .../modulebasegame/console/AVTracker.kt | 4 +- .../modulebasegame/console/ActorsList.kt | 6 +- .../modulebasegame/console/CheatWarnTest.kt | 4 +- .../modulebasegame/console/ExportAV.kt | 4 +- .../terrarum/modulebasegame/console/GetAV.kt | 6 +- .../modulebasegame/console/GsonTest.kt | 4 +- .../modulebasegame/console/Inventory.kt | 4 +- .../terrarum/modulebasegame/console/Seed.kt | 1 - .../terrarum/modulebasegame/console/SetAV.kt | 4 +- .../modulebasegame/console/SetBulletin.kt | 4 +- .../modulebasegame/console/SetScale.kt | 4 +- .../modulebasegame/console/SetTime.kt | 4 +- .../modulebasegame/console/SetTimeDelta.kt | 4 +- .../console/SpawnPhysTestBall.kt | 1 - .../console/SpawnPhysTestLunarLander.kt | 1 - .../modulebasegame/console/SpawnTikiTorch.kt | 1 - .../modulebasegame/console/Teleport.kt | 6 +- .../modulebasegame/console/ToggleNoClip.kt | 4 +- .../debuggerapp/ActorValueTracker.kt | 4 +- .../gameactors/ActorHumanoid.kt | 6 +- .../gameactors/ActorInventory.kt | 6 +- .../gameactors/PlayerBuilder.kt | 4 +- .../gameactors/ai/SmarterSlimes.kt | 4 +- .../physicssolver/CollisionSolver.kt | 6 +- .../modulebasegame/gameitems/BlockBase.kt | 6 +- .../gameitems/PickaxeGeneric.kt | 6 +- .../modulebasegame/ui/MessageWindow.kt | 6 +- .../modulebasegame/ui/Notification.kt | 10 +- .../terrarum/modulebasegame/ui/UIBasicInfo.kt | 4 +- .../modulebasegame/ui/UICheatDetected.kt | 9 +- .../terrarum/modulebasegame/ui/UIInventory.kt | 10 +- .../modulebasegame/ui/UIInventoryFull.kt | 38 ++--- .../ui/UIItemInventoryDynamicList.kt | 6 +- .../modulebasegame/ui/UIItemPlayerInfoCell.kt | 19 +-- .../ui/UIItemSavegameInfoCell.kt | 3 +- .../modulebasegame/ui/UIPaletteSelector.kt | 8 +- .../ui/UIProxyNewBuildingMaker.kt | 7 +- .../modulebasegame/ui/UIProxyNewRandomGame.kt | 19 ++- .../modulebasegame/ui/UIQuickslotBar.kt | 11 +- .../terrarum/modulebasegame/ui/UIRemoCon.kt | 3 +- .../modulebasegame/ui/UITitleRemoConRoot.kt | 6 +- .../terrarum/modulebasegame/ui/UITooltip.kt | 3 +- .../modulebasegame/ui/uiQuickslotPie.kt | 8 +- .../modulebasegame/weather/WeatherMixer.kt | 6 +- .../worldgenerator/WorldGenerator.kt | 10 +- .../terrarum/swingapp/IMStringReader.kt | 15 +- .../torvald/terrarum/tests/NoiseGenerator.kt | 6 +- src/net/torvald/terrarum/tests/UITestPad1.kt | 4 +- src/net/torvald/terrarum/tests/UnsafeTest.kt | 21 ++- .../terrarum/ui/BasicDebugInfoWindow.kt | 54 +++---- src/net/torvald/terrarum/ui/ConsoleWindow.kt | 16 +- src/net/torvald/terrarum/ui/UIHandler.kt | 4 +- .../terrarum/ui/UIItemModuleInfoCell.kt | 34 ++-- src/net/torvald/terrarum/ui/UIItemTextArea.kt | 12 +- .../torvald/terrarum/ui/UIItemTextButton.kt | 4 +- src/net/torvald/terrarum/ui/UINSMenu.kt | 10 +- .../worlddrawer/LightmapRendererNew.kt | 129 ++++----------- work_files/graphics/gui/composer/mockup.psd | 4 +- 81 files changed, 635 insertions(+), 563 deletions(-) create mode 100644 src/net/torvald/terrarum/MusicComposerApp.java create mode 100644 src/net/torvald/terrarum/MusicComposerStandalone.kt rename src/net/torvald/terrarum/modulebasegame/{Ingame.kt => TerrarumIngame.kt} (98%) diff --git a/.idea/misc.xml b/.idea/misc.xml index c3fc748c8..0e217bae5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -38,7 +38,7 @@ - + \ No newline at end of file diff --git a/assets/graphics/fonts/7x13_Tamzen7x14b.tga b/assets/graphics/fonts/7x13_Tamzen7x14b.tga index 33d3b9c5b..c1010945d 100644 --- a/assets/graphics/fonts/7x13_Tamzen7x14b.tga +++ b/assets/graphics/fonts/7x13_Tamzen7x14b.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27ced0df21293f95493c98f1342a8924e8440471264bb4478395ce31a87c5b46 +oid sha256:04fc4f4d12b18e3412f70c03640679521782ee3a090ecc027758e118f083e4ce size 93228 diff --git a/src/net/torvald/UnsafePtr.kt b/src/net/torvald/UnsafePtr.kt index 998f0c2e9..0c6e426da 100644 --- a/src/net/torvald/UnsafePtr.kt +++ b/src/net/torvald/UnsafePtr.kt @@ -22,15 +22,36 @@ object UnsafeHelper { val ptr = unsafe.allocateMemory(size) return UnsafePtr(ptr, size) } + + fun memcpy(src: UnsafePtr, fromIndex: Long, dest: UnsafePtr, toIndex: Long, copyLength: Long) { + // unsafe.copyMemory(srcAddress, destAddress, bytes); in case no src for the sun.misc.Unsafe is available :D + unsafe.copyMemory(src.ptr + fromIndex, dest.ptr + toIndex, copyLength) + } + + fun memcpy(srcAddress: Long, destAddress: Long, copyLength: Long) = unsafe.copyMemory(srcAddress, destAddress, copyLength) } /** * To allocate a memory, use UnsafeHelper.allocate(long) + * + * All the getFloat/Int/whatever methods will follow the endianness of your system, + * e.g. it'll be Little Endian on x86, Big Endian on PPC, User-defined on ARM; therefore these functions should not be + * used when the portability matters (e.g. Savefile). In such situations, do byte-wise operations will be needed. */ -class UnsafePtr(val ptr: Long, val allocSize: Long) { +class UnsafePtr(pointer: Long, allocSize: Long) { var destroyed = false private set + var ptr: Long = pointer + private set + + var size: Long = allocSize + private set + + fun realloc(newSize: Long) { + ptr = UnsafeHelper.unsafe.reallocateMemory(ptr, newSize) + } + fun destroy() { if (!destroyed) { UnsafeHelper.unsafe.freeMemory(ptr) @@ -42,7 +63,7 @@ class UnsafePtr(val ptr: Long, val allocSize: Long) { } } - private inline fun checkNullPtr(index: Long) { + private inline fun checkNullPtr(index: Long) { // ignore what IDEA says and do inline this if (destroyed) throw NullPointerException("The pointer is already destroyed ($this)") // OOB Check: debugging purposes only -- comment out for the production @@ -59,6 +80,11 @@ class UnsafePtr(val ptr: Long, val allocSize: Long) { return UnsafeHelper.unsafe.getFloat(ptr + index) } + fun getInt(index: Long): Int { + checkNullPtr(index) + return UnsafeHelper.unsafe.getInt(ptr + index) + } + operator fun set(index: Long, value: Byte) { checkNullPtr(index) UnsafeHelper.unsafe.putByte(ptr + index, value) @@ -69,10 +95,15 @@ class UnsafePtr(val ptr: Long, val allocSize: Long) { UnsafeHelper.unsafe.putFloat(ptr + index, value) } - fun fillWith(byte: Byte) { - UnsafeHelper.unsafe.setMemory(ptr, allocSize, byte) + fun setInt(index: Long, value: Int) { + checkNullPtr(index) + UnsafeHelper.unsafe.putInt(ptr + index, value) } - override fun toString() = "0x${ptr.toString(16)} with size $allocSize" + fun fillWith(byte: Byte) { + UnsafeHelper.unsafe.setMemory(ptr, size, byte) + } + + override fun toString() = "0x${ptr.toString(16)} with size $size" override fun equals(other: Any?) = this.ptr == (other as UnsafePtr).ptr } \ No newline at end of file diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 0cc5f9d37..ea52912d0 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -1,9 +1,6 @@ package net.torvald.terrarum; -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.Files; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Screen; +import com.badlogic.gdx.*; import com.badlogic.gdx.audio.AudioDevice; import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; @@ -13,7 +10,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.glutils.FrameBuffer; import com.badlogic.gdx.graphics.glutils.ShaderProgram; +import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.utils.Disposable; +import com.badlogic.gdx.utils.GdxRuntimeException; import com.badlogic.gdx.utils.ScreenUtils; import com.github.strikerx3.jxinput.XInputDevice; import com.google.gson.JsonArray; @@ -21,14 +20,15 @@ import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import net.torvald.gdx.graphics.PixmapIO2; import net.torvald.getcpuname.GetCpuName; +import net.torvald.terrarum.concurrent.ThreadParallel; import net.torvald.terrarum.controller.GdxControllerAdapter; import net.torvald.terrarum.controller.TerrarumController; import net.torvald.terrarum.controller.XinputControllerAdapter; import net.torvald.terrarum.gamecontroller.KeyToggler; import net.torvald.terrarum.gameworld.GameWorld; import net.torvald.terrarum.imagefont.TinyAlphNum; -import net.torvald.terrarum.modulebasegame.Ingame; import net.torvald.terrarum.modulebasegame.IngameRenderer; +import net.torvald.terrarum.modulebasegame.TerrarumIngame; import net.torvald.terrarum.utils.JsonFetcher; import net.torvald.terrarum.utils.JsonWriter; import net.torvald.terrarumsansbitmap.gdx.GameFontBase; @@ -51,13 +51,23 @@ import static net.torvald.terrarum.TerrarumKt.gdxClearAndSetBlend; */ public class AppLoader implements ApplicationListener { + public static final String GAME_NAME = "Terrarum"; + public static final String COPYRIGHT_DATE_NAME = "Copyright 2013-2019 Torvald (minjaesong)"; + /** - * 0xAA_BB_XXXX - * AA: Major version - * BB: Minor version - * XXXX: Revision (Repository commits, or something arbitrary) + *

+ * Version numbering that follows Semantic Versioning 2.0.0 (https://semver.org/) + *

+ * + *

+ * 0xAA_BB_XXXX, where: + *

+ *
  • AA: Major version
  • + *
  • BB: Minor version
  • + *
  • XXXX: Patch version
  • *

    * e.g. 0x02010034 will be translated as 2.1.52 + *

    */ public static final int VERSION_RAW = 0x00_02_0590; @@ -110,6 +120,9 @@ public class AppLoader implements ApplicationListener { /** * Singleton pattern implementation in Java. * + * This function exists because the limitation in the Java language and the design of the GDX itself, where + * not everything (more like not every method) can be static. + * * @return */ public static AppLoader getINSTANCE() { @@ -119,8 +132,6 @@ public class AppLoader implements ApplicationListener { return INSTANCE; } - public static final String GAME_NAME = "Terrarum"; - public static final String COPYRIGHT_DATE_NAME = "Copyright 2013-2019 Torvald (minjaesong)"; public static String GAME_LOCALE = System.getProperty("user.language") + System.getProperty("user.country"); public static final String systemArch = System.getProperty("os.arch"); @@ -129,8 +140,13 @@ public class AppLoader implements ApplicationListener { public static String renderer = "(a super-fancy virtual photoradiator)"; public static String rendererVendor = "(radiosity)"; + public static int THREADS = ThreadParallel.INSTANCE.getThreadCount(); + public static boolean MULTITHREAD; + public static final boolean is32BitJVM = !System.getProperty("sun.arch.data.model").contains("64"); + public static int GL_VERSION; + public static final int MINIMAL_GL_VERSION = 320; public static final float TV_SAFE_GRAPHICS = 0.05f; // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf) public static final float TV_SAFE_ACTION = 0.035f; // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf) @@ -206,15 +222,18 @@ public class AppLoader implements ApplicationListener { public static ShaderProgram shaderColLUT; public static Mesh fullscreenQuad; - private OrthographicCamera camera; - private SpriteBatch logoBatch; + private static OrthographicCamera camera; + private static SpriteBatch logoBatch; public static TextureRegion logo; public static AudioDevice audioDevice; - private com.badlogic.gdx.graphics.Color gradWhiteTop = new com.badlogic.gdx.graphics.Color(0xf8f8f8ff); - private com.badlogic.gdx.graphics.Color gradWhiteBottom = new com.badlogic.gdx.graphics.Color(0xd8d8d8ff); + public static SpriteBatch batch; + public static ShapeRenderer shapeRender; - public Screen screen; + private static com.badlogic.gdx.graphics.Color gradWhiteTop = new com.badlogic.gdx.graphics.Color(0xf8f8f8ff); + private static com.badlogic.gdx.graphics.Color gradWhiteBottom = new com.badlogic.gdx.graphics.Color(0xd8d8d8ff); + + private static Screen currenScreen; public static int screenW = 0; public static int screenH = 0; @@ -234,10 +253,10 @@ public class AppLoader implements ApplicationListener { public static final double UPDATE_RATE = 1.0 / 60.0; // TODO set it like 1/100, because apparent framerate is limited by update rate - private float loadTimer = 0f; - private final float showupTime = 100f / 1000f; + private static float loadTimer = 0f; + private static final float showupTime = 100f / 1000f; - private FrameBuffer renderFBO; + private static FrameBuffer renderFBO; public static CommonResourcePool resourcePool; public static HashSet tempFilePool = new HashSet(); @@ -294,6 +313,7 @@ public class AppLoader implements ApplicationListener { appConfig.foregroundFPS = getConfigInt("displayfps"); appConfig.title = GAME_NAME; appConfig.forceExit = false; + appConfig.samples = 4; // force the AA on, if the graphics driver didn't do already // load app icon int[] appIconSizes = new int[]{256,128,64,32,16}; @@ -310,11 +330,36 @@ public class AppLoader implements ApplicationListener { //KeyToggler.INSTANCE.forceSet(Input.Keys.F11, true); } + // set some more configuration vars + MULTITHREAD = ThreadParallel.INSTANCE.getThreadCount() >= 3 && getConfigBoolean("multithread"); + new LwjglApplication(new AppLoader(appConfig), appConfig); } @Override public void create() { + Gdx.graphics.setContinuousRendering(true); + + GAME_LOCALE = getConfigString("language"); + printdbg(this, "locale = " + GAME_LOCALE); + + String glInfo = Gdx.graphics.getGLVersion().getDebugVersionString(); + + GL_VERSION = Gdx.graphics.getGLVersion().getMajorVersion() * 100 + + Gdx.graphics.getGLVersion().getMinorVersion() * 10 + + Gdx.graphics.getGLVersion().getReleaseVersion(); + + System.out.println("GL_VERSION = " + GL_VERSION); + System.out.println("GL info:\n" + glInfo); // debug info + + + if (GL_VERSION < MINIMAL_GL_VERSION) { + // TODO notify properly + throw new GdxRuntimeException("Graphics device not capable -- device's GL_VERSION: " + GL_VERSION + + ", required: " + MINIMAL_GL_VERSION); + } + + resourcePool = CommonResourcePool.INSTANCE; resourcePool.addToLoadingList("blockmarkings_common", () -> new TextureRegionPack(Gdx.files.internal("assets/graphics/blocks/block_markings_common.tga"), 16, 16, 0, 0, 0, 0, false)); @@ -325,6 +370,9 @@ public class AppLoader implements ApplicationListener { logoBatch = new SpriteBatch(); camera = new OrthographicCamera(((float) appConfig.width), ((float) appConfig.height)); + batch = new SpriteBatch(); + shapeRender = new ShapeRenderer(); + initViewPort(appConfig.width, appConfig.height); // logo here :p @@ -416,6 +464,10 @@ public class AppLoader implements ApplicationListener { postInit(); } + AppLoader.setDebugTime("GDX.rawDelta", (long) (Gdx.graphics.getRawDeltaTime() * 1000_000_000f)); + AppLoader.setDebugTime("GDX.smtDelta", (long) (Gdx.graphics.getDeltaTime() * 1000_000_000f)); + + FrameBufferManager.begin(renderFBO); gdxClearAndSetBlend(.094f, .094f, .094f, 0f); setCameraPosition(0, 0); @@ -423,7 +475,7 @@ public class AppLoader implements ApplicationListener { // draw splash screen when predefined screen is null // because in normal operation, the only time screen == null is when the app is cold-launched // you can't have a text drawn here :v - if (screen == null) { + if (currenScreen == null) { shaderBayerSkyboxFill.begin(); shaderBayerSkyboxFill.setUniformMatrix("u_projTrans", camera.combined); shaderBayerSkyboxFill.setUniformf("parallax_size", 0f); @@ -450,15 +502,20 @@ public class AppLoader implements ApplicationListener { if (loadTimer >= showupTime) { // hand over the scene control to this single class; Terrarum must call // 'AppLoader.getINSTANCE().screen.render(delta)', this is not redundant at all! - setScreen(Terrarum.INSTANCE); + + printdbg(this, "!! Force set current screen and ingame instance to TitleScreen !!"); + + IngameInstance title = new TitleScreen(batch); + Terrarum.INSTANCE.setCurrentIngameInstance(title); + setScreen(title); } } // draw the screen else { - screen.render((float) UPDATE_RATE); + currenScreen.render((float) UPDATE_RATE); } - KeyToggler.INSTANCE.update(screen instanceof Ingame); + KeyToggler.INSTANCE.update(currenScreen instanceof TerrarumIngame); // nested FBOs are just not a thing in GL! net.torvald.terrarum.FrameBufferManager.end(); @@ -489,6 +546,7 @@ public class AppLoader implements ApplicationListener { splashDisplayed = true; GLOBAL_RENDER_TIMER += 1; + } @Override @@ -506,7 +564,7 @@ public class AppLoader implements ApplicationListener { if (screenW % 2 == 1) screenW -= 1; if (screenH % 2 == 1) screenH -= 1; - if (screen != null) screen.resize(screenW, screenH); + if (currenScreen != null) currenScreen.resize(screenW, screenH); if (renderFBO == null || @@ -539,9 +597,9 @@ public class AppLoader implements ApplicationListener { System.out.println("Goodbye !"); - if (screen != null) { - screen.hide(); - screen.dispose(); + if (currenScreen != null) { + currenScreen.hide(); + currenScreen.dispose(); } //IngameRenderer.INSTANCE.dispose(); @@ -549,7 +607,6 @@ public class AppLoader implements ApplicationListener { //MinimapComposer.INSTANCE.dispose(); //FloatDrawer.INSTANCE.dispose(); - //Terrarum.INSTANCE.dispose(); shaderBayerSkyboxFill.dispose(); shaderHicolour.dispose(); @@ -573,43 +630,55 @@ public class AppLoader implements ApplicationListener { GameWorld.Companion.makeNullWorld().dispose(); + Terrarum.INSTANCE.dispose(); + deleteTempfiles(); } @Override public void pause() { - if (screen != null) screen.pause(); + if (currenScreen != null) currenScreen.pause(); } @Override public void resume() { - if (screen != null) screen.resume(); + if (currenScreen != null) currenScreen.resume(); } - public void setScreen(Screen screen) { - printdbg(this, "Changing screen to " + screen.getClass().getCanonicalName()); + public static void setScreen(Screen screen) { + printdbg("[AppLoader-Static]", "Changing screen to " + screen.getClass().getCanonicalName()); // this whole thing is directtly copied from com.badlogic.gdx.Game - if (this.screen != null) { - this.screen.hide(); - this.screen.dispose(); + if (currenScreen != null) { + printdbg("[AppLoader-Static]", "Screen before change: " + currenScreen.getClass().getCanonicalName()); + + currenScreen.hide(); + currenScreen.dispose(); } - this.screen = screen; - if (this.screen != null) { - this.screen.show(); - this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + else { + printdbg("[AppLoader-Static]", "Screen before change: null"); } + + currenScreen = screen; + + currenScreen.show(); + currenScreen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + + System.gc(); - printdbg(this, "Screen transisiton complete: " + this.screen.getClass().getCanonicalName()); + printdbg("[AppLoader-Static]", "Screen transition complete: " + currenScreen.getClass().getCanonicalName()); } - + /** * Init stuffs which needs GL context */ private void postInit() { + Terrarum.initialise(); + + textureWhiteSquare = new Texture(Gdx.files.internal("assets/graphics/ortho_line_tex_2px.tga")); textureWhiteSquare.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest); diff --git a/src/net/torvald/terrarum/FuckingWorldRenderer.kt.unused b/src/net/torvald/terrarum/FuckingWorldRenderer.kt.unused index 46bd739fa..c54aa9b46 100644 --- a/src/net/torvald/terrarum/FuckingWorldRenderer.kt.unused +++ b/src/net/torvald/terrarum/FuckingWorldRenderer.kt.unused @@ -925,7 +925,7 @@ class Ingame(batch: SpriteBatch) : IngameInstance(batch) { actorContainer.forEachIndexed { i, actor -> if (actor is ActorWithBody) { batch.color = Color.WHITE - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, actor.referenceID.toString(), actor.hitbox.startX.toFloat(), actor.hitbox.canonicalY.toFloat() + 4 @@ -950,12 +950,12 @@ class Ingame(batch: SpriteBatch) : IngameInstance(batch) { // velocity batch.color = Color.CHARTREUSE//GameFontBase.codeToCol["g"] - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, "${0x7F.toChar()}X ${actor.externalForce.x}", actor.hitbox.startX.toFloat(), actor.hitbox.canonicalY.toFloat() + 4 + 8 ) - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, "${0x7F.toChar()}Y ${actor.externalForce.y}", actor.hitbox.startX.toFloat(), actor.hitbox.canonicalY.toFloat() + 4 + 8 * 2 diff --git a/src/net/torvald/terrarum/GlslTilingTest.kt b/src/net/torvald/terrarum/GlslTilingTest.kt index 018202bfd..09bce12c3 100644 --- a/src/net/torvald/terrarum/GlslTilingTest.kt +++ b/src/net/torvald/terrarum/GlslTilingTest.kt @@ -60,7 +60,7 @@ object GlslTilingTest : ApplicationAdapter() { //ErrorDisp.title = "Error in shader ${shader.vertexShaderSource}" //ErrorDisp.text = shader.log.split('\n') - //AppLoader.getINSTANCE().setScreen(ErrorDisp) + //AppLoader.setScreen(ErrorDisp) System.exit(1) } diff --git a/src/net/torvald/terrarum/LoadScreen.kt b/src/net/torvald/terrarum/LoadScreen.kt index d8d703bbf..a5f04aacf 100644 --- a/src/net/torvald/terrarum/LoadScreen.kt +++ b/src/net/torvald/terrarum/LoadScreen.kt @@ -8,8 +8,8 @@ import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.jme3.math.FastMath -import net.torvald.util.HistoryArray import net.torvald.terrarum.langpack.Lang +import net.torvald.util.HistoryArray /** * Created by minjaesong on 2017-07-13. @@ -97,10 +97,10 @@ object LoadScreen : ScreenAdapter() { textFbo = FrameBuffer( Pixmap.Format.RGBA4444, maxOf( - Terrarum.fontGame.getWidth(Lang["MENU_IO_LOADING"]), - Terrarum.fontGame.getWidth(Lang["ERROR_GENERIC_TEXT"]) + AppLoader.fontGame.getWidth(Lang["MENU_IO_LOADING"]), + AppLoader.fontGame.getWidth(Lang["ERROR_GENERIC_TEXT"]) ), - Terrarum.fontGame.lineHeight.toInt(), + AppLoader.fontGame.lineHeight.toInt(), true ) @@ -122,7 +122,7 @@ object LoadScreen : ScreenAdapter() { override fun render(delta: Float) { val delta = Gdx.graphics.rawDeltaTime - glideDispY = Terrarum.HEIGHT - 100f - Terrarum.fontGame.lineHeight + glideDispY = Terrarum.HEIGHT - 100f - AppLoader.fontGame.lineHeight arrowObjGlideSize = arrowObjTex.width + 2f * Terrarum.WIDTH @@ -155,7 +155,7 @@ object LoadScreen : ScreenAdapter() { val textToPrint = if (errorTrapped) Lang["ERROR_GENERIC_TEXT"] else Lang["MENU_IO_LOADING"] - val textWidth = Terrarum.fontGame.getWidth(textToPrint).toFloat() + val textWidth = AppLoader.fontGame.getWidth(textToPrint).toFloat() if (!doContextChange) { // draw text to FBO @@ -164,20 +164,20 @@ object LoadScreen : ScreenAdapter() { blendNormal(Terrarum.batch) - Terrarum.fontGame + AppLoader.fontGame it.color = Color.WHITE - Terrarum.fontGame.draw(it, textToPrint, ((textFbo.width - textWidth) / 2).toInt().toFloat(), 0f) + AppLoader.fontGame.draw(it, textToPrint, ((textFbo.width - textWidth) / 2).toInt().toFloat(), 0f) blendMul(Terrarum.batch) // draw colour overlay, flipped it.draw(textOverlayTex, (textFbo.width - textWidth) / 2f, - Terrarum.fontGame.lineHeight, + AppLoader.fontGame.lineHeight, textWidth, - -Terrarum.fontGame.lineHeight + -AppLoader.fontGame.lineHeight ) } } @@ -234,15 +234,15 @@ object LoadScreen : ScreenAdapter() { // message backgrounds it.color = messageBackgroundColour - it.fillRect(0f, 60f, Terrarum.WIDTH.toFloat(), 40f + (messages.size) * Terrarum.fontGame.lineHeight) + it.fillRect(0f, 60f, Terrarum.WIDTH.toFloat(), 40f + (messages.size) * AppLoader.fontGame.lineHeight) // log messages it.color = messageForegroundColour for (i in 0 until messages.elemCount) { - Terrarum.fontGame.draw(it, + AppLoader.fontGame.draw(it, messages[i] ?: "", AppLoader.getTvSafeGraphicsWidth() + 16f, - 80f + (messages.size - i - 1) * Terrarum.fontGame.lineHeight + 80f + (messages.size - i - 1) * AppLoader.fontGame.lineHeight ) } } @@ -259,15 +259,15 @@ object LoadScreen : ScreenAdapter() { // message backgrounds it.color = messageBackgroundColour - it.fillRect(0f, 60f, Terrarum.WIDTH.toFloat(), 40f + (messages.size) * Terrarum.fontGame.lineHeight) + it.fillRect(0f, 60f, Terrarum.WIDTH.toFloat(), 40f + (messages.size) * AppLoader.fontGame.lineHeight) // log messages it.color = messageForegroundColour for (i in 0 until messages.elemCount) { - Terrarum.fontGame.draw(it, + AppLoader.fontGame.draw(it, messages[i] ?: "", AppLoader.getTvSafeGraphicsWidth() + 16f, - 80f + (messages.size - i - 1) * Terrarum.fontGame.lineHeight + 80f + (messages.size - i - 1) * AppLoader.fontGame.lineHeight ) } } @@ -276,7 +276,7 @@ object LoadScreen : ScreenAdapter() { Thread.sleep(80) - Terrarum.setScreen(screenToLoad!!) + AppLoader.setScreen(screenToLoad!!) } } diff --git a/src/net/torvald/terrarum/MusicComposerApp.java b/src/net/torvald/terrarum/MusicComposerApp.java new file mode 100644 index 000000000..718e1d57d --- /dev/null +++ b/src/net/torvald/terrarum/MusicComposerApp.java @@ -0,0 +1,61 @@ +package net.torvald.terrarum; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Files; +import com.badlogic.gdx.backends.lwjgl.LwjglApplication; +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; +import com.badlogic.gdx.graphics.Texture; +import net.torvald.terrarumsansbitmap.gdx.GameFontBase; + +import java.io.File; + +/** + * Created by minjaesong on 2019-06-27. + */ +public class MusicComposerApp extends ApplicationAdapter { + + public static LwjglApplicationConfiguration appConfig; + public static GameFontBase fontGame; + + public MusicComposerApp(LwjglApplicationConfiguration appConfig) { + this.appConfig = appConfig; + } + + public void main(String[] args) { + + LwjglApplicationConfiguration appConfig = new LwjglApplicationConfiguration(); + appConfig.useGL30 = true; // utilising some GL trickeries, need this to be TRUE + appConfig.resizable = false;//true; + //appConfig.width = 1110; // photographic ratio (1.5:1) + //appConfig.height = 740; // photographic ratio (1.5:1) + appConfig.width = 1000;;; + appConfig.height = 666; + appConfig.backgroundFPS = 9999; + appConfig.foregroundFPS = 9999; + appConfig.title = "Speelklok"; + appConfig.forceExit = false; + + // load app icon + int[] appIconSizes = new int[]{256,128,64,32,16}; + for (int size : appIconSizes) { + String name = "assets/appicon" + size + ".png"; + if (new File("./" + name).exists()) { + appConfig.addIcon(name, Files.FileType.Internal); + } + } + + new LwjglApplication(new MusicComposerApp(appConfig), appConfig); + } + + @Override + public void create() { + fontGame = new GameFontBase("assets/graphics/fonts/terrarum-sans-bitmap", false, true, + Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest, false, 256, false + ); + } + + @Override + public void dispose() { + super.dispose(); + } +} diff --git a/src/net/torvald/terrarum/MusicComposerStandalone.kt b/src/net/torvald/terrarum/MusicComposerStandalone.kt new file mode 100644 index 000000000..60410906a --- /dev/null +++ b/src/net/torvald/terrarum/MusicComposerStandalone.kt @@ -0,0 +1,7 @@ +package net.torvald.terrarum + +/** + * Created by minjaesong on 2019-06-27. + */ +class MusicComposerStandalone { +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 070d28e5b..31bbd78dc 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -10,21 +10,17 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.utils.Disposable -import com.badlogic.gdx.utils.GdxRuntimeException import com.jme3.math.FastMath import net.torvald.random.HQRNG import net.torvald.terrarum.AppLoader.* -import net.torvald.terrarum.concurrent.ThreadParallel import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ActorID -import net.torvald.terrarum.imagefont.TinyAlphNum import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarumsansbitmap.gdx.GameFontBase import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.util.CircularArray -import org.lwjgl.BufferUtils import java.io.File import kotlin.math.absoluteValue @@ -38,15 +34,15 @@ typealias RGBA8888 = Int * * LibGDX Version Created by minjaesong on 2017-06-15. */ -object Terrarum : Screen, Disposable { +object Terrarum : Disposable { /** * All singleplayer "Player" must have this exact reference ID. */ const val PLAYER_REF_ID: Int = 0x91A7E2 - lateinit var batch: SpriteBatch - lateinit var shapeRender: ShapeRenderer // DO NOT USE!! for very limited applications e.g. WeatherMixer + var batch: SpriteBatch = AppLoader.batch + var shapeRender: ShapeRenderer = AppLoader.shapeRender // DO NOT USE!! for very limited applications e.g. WeatherMixer inline fun inShapeRenderer(shapeRendererType: ShapeRenderer.ShapeType = ShapeRenderer.ShapeType.Filled, action: (ShapeRenderer) -> Unit) { shapeRender.begin(shapeRendererType) action(shapeRender) @@ -85,6 +81,7 @@ object Terrarum : Screen, Disposable { /** Current ingame instance the game is holding */ var ingame: IngameInstance? = null + private set private val javaHeapCircularArray = CircularArray(64) private val nativeHeapCircularArray = CircularArray(64) @@ -118,11 +115,6 @@ object Terrarum : Screen, Disposable { } - - - val fontGame: GameFontBase = AppLoader.fontGame - val fontSmallNumbers: TinyAlphNum = AppLoader.fontSmallNumbers - // 0x0 - 0xF: Game-related // 0x10 - 0x1F: Config // 0x100 and onward: unit tests for dev @@ -144,20 +136,6 @@ object Terrarum : Screen, Disposable { val STATE_ID_TOOL_NOISEGEN = 0x200 val STATE_ID_TOOL_RUMBLE_DIAGNOSIS = 0x201 - /** Available CPU threads */ - val THREADS = ThreadParallel.threadCount //Runtime.getRuntime().availableProcessors() + 1 - - /** - * If the game is multithreading. - * True if: - * - * THREADS >= 2 and config "multithread" is true - */ - val MULTITHREAD: Boolean - get() = THREADS >= 3 && getConfigBoolean("multithread") - - const val NAME = AppLoader.GAME_NAME - lateinit var testTexture: Texture @@ -170,7 +148,7 @@ object Terrarum : Screen, Disposable { println("[Terrarum] init called by:") Thread.currentThread().stackTrace.forEach { println("... $it") } - println("[Terrarum] $NAME version ${AppLoader.getVERSION_STRING()}") + println("[Terrarum] ${AppLoader.GAME_NAME} version ${AppLoader.getVERSION_STRING()}") println("[Terrarum] LibGDX version ${com.badlogic.gdx.Version.VERSION}") @@ -193,6 +171,11 @@ object Terrarum : Screen, Disposable { } + @JvmStatic fun initialise() { + // dummy init method + } + + val RENDER_FPS = getConfigInt("displayfps") val USE_VSYNC = getConfigBoolean("usevsync") var VSYNC = USE_VSYNC @@ -202,7 +185,7 @@ object Terrarum : Screen, Disposable { Gdx.graphics.glVersion.minorVersion * 10 + Gdx.graphics.glVersion.releaseVersion val MINIMAL_GL_VERSION = 210 - val GL_MAX_TEXTURE_SIZE: Int + /*val GL_MAX_TEXTURE_SIZE: Int get() { val intBuffer = BufferUtils.createIntBuffer(16) // size must be at least 16, or else LWJGL complains Gdx.gl.glGetIntegerv(GL20.GL_MAX_TEXTURE_SIZE, intBuffer) @@ -211,33 +194,28 @@ object Terrarum : Screen, Disposable { return intBuffer.get() } - val MINIMAL_GL_MAX_TEXTURE_SIZE = 4096 + val MINIMAL_GL_MAX_TEXTURE_SIZE = 4096*/ - override fun show() { + fun setCurrentIngameInstance(ingame: IngameInstance) { + this.ingame = ingame + + printdbg(this, "Accepting new ingame instance '${ingame.javaClass.canonicalName}', called by:") + Thread.currentThread().stackTrace.forEach { printdbg(this, it) } + } + + private fun showxxx() { testTexture = Texture(Gdx.files.internal("./assets/test_texture.tga")) - val glInfo = Gdx.graphics.glVersion.debugVersionString - - println("GL_VERSION = $GL_VERSION") - println("GL_MAX_TEXTURE_SIZE = $GL_MAX_TEXTURE_SIZE") - println("GL info:\n$glInfo") // debug info - - - if (GL_VERSION < MINIMAL_GL_VERSION || GL_MAX_TEXTURE_SIZE < MINIMAL_GL_MAX_TEXTURE_SIZE) { - // TODO notify properly - throw GdxRuntimeException("Graphics device not capable -- device's GL_VERSION: $GL_VERSION, required: $MINIMAL_GL_VERSION; GL_MAX_TEXTURE_SIZE: $GL_MAX_TEXTURE_SIZE, required: $MINIMAL_GL_MAX_TEXTURE_SIZE") - } - // resize fullscreen quad? TextureRegionPack.globalFlipY = true // !! TO MAKE LEGACY CODE RENDER ON ITS POSITION !! Gdx.graphics.isContinuousRendering = true - batch = SpriteBatch() - shapeRender = ShapeRenderer() + //batch = SpriteBatch() + //shapeRender = ShapeRenderer() AppLoader.GAME_LOCALE = getConfigString("language") @@ -257,25 +235,7 @@ object Terrarum : Screen, Disposable { // title screen - AppLoader.getINSTANCE().setScreen(TitleScreen(batch)) - } - - fun setScreen(screen: Screen) { - AppLoader.getINSTANCE().setScreen(screen) - } - - override fun render(delta: Float) { - AppLoader.setDebugTime("GDX.rawDelta", Gdx.graphics.rawDeltaTime.times(1000_000_000f).toLong()) - AppLoader.setDebugTime("GDX.smtDelta", Gdx.graphics.deltaTime.times(1000_000_000f).toLong()) - AppLoader.getINSTANCE().screen.render(delta) - } - - override fun pause() { - AppLoader.getINSTANCE().screen.pause() - } - - override fun resume() { - AppLoader.getINSTANCE().screen.resume() + AppLoader.setScreen(TitleScreen(batch)) } /** Don't call this! Call AppLoader.dispose() */ @@ -284,16 +244,13 @@ object Terrarum : Screen, Disposable { ingame?.dispose() } - override fun hide() { - AppLoader.getINSTANCE().screen.hide() - } /** For the actual resize, call AppLoader.resize() */ - override fun resize(width: Int, height: Int) { + /*fun resize(width: Int, height: Int) { ingame?.resize(width, height) printdbg(this, "newsize: ${Gdx.graphics.width}x${Gdx.graphics.height} | internal: ${width}x$height") - } + }*/ diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt index 7fbcc55da..c0e63387c 100644 --- a/src/net/torvald/terrarum/TitleScreen.kt +++ b/src/net/torvald/terrarum/TitleScreen.kt @@ -2,7 +2,6 @@ package net.torvald.terrarum import com.badlogic.gdx.Gdx import com.badlogic.gdx.InputAdapter -import com.badlogic.gdx.Screen import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.Pixmap @@ -20,8 +19,8 @@ import net.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.IngameRenderer +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.HumanoidNPC import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.gameworld.WorldTime @@ -35,7 +34,9 @@ import net.torvald.terrarum.worlddrawer.WorldCamera /** * Created by minjaesong on 2017-09-02. */ -class TitleScreen(val batch: SpriteBatch) : Screen { +class TitleScreen(batch: SpriteBatch) : IngameInstance(batch) { + + // todo register titlescreen as the ingame, similar in a way that the buildingmaker did var camera = OrthographicCamera(Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) @@ -229,7 +230,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen { } fun renderScreen() { - Gdx.graphics.setTitle(Ingame.getCanonicalTitle()) + Gdx.graphics.setTitle(TerrarumIngame.getCanonicalTitle()) //camera.setToOrtho(true, Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) @@ -267,16 +268,16 @@ class TitleScreen(val batch: SpriteBatch) : Screen { ) COPYTING.forEachIndexed { index, s -> - val textWidth = Terrarum.fontGame.getWidth(s) - Terrarum.fontGame.draw(batch, s, + val textWidth = AppLoader.fontGame.getWidth(s) + AppLoader.fontGame.draw(batch, s, (Terrarum.WIDTH - textWidth - 1f).toInt().toFloat(), - (Terrarum.HEIGHT - Terrarum.fontGame.lineHeight * (COPYTING.size - index) - 1f).toInt().toFloat() + (Terrarum.HEIGHT - AppLoader.fontGame.lineHeight * (COPYTING.size - index) - 1f).toInt().toFloat() ) } - Terrarum.fontGame.draw(batch, "${AppLoader.GAME_NAME} ${AppLoader.getVERSION_STRING()}", + AppLoader.fontGame.draw(batch, "${AppLoader.GAME_NAME} ${AppLoader.getVERSION_STRING()}", 1f.toInt().toFloat(), - (Terrarum.HEIGHT - Terrarum.fontGame.lineHeight - 1f).toInt().toFloat() + (Terrarum.HEIGHT - AppLoader.fontGame.lineHeight - 1f).toInt().toFloat() ) } @@ -317,7 +318,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen { fun setCameraPosition(newX: Float, newY: Float) { - Ingame.setCameraPosition(batch, camera, newX, newY) + TerrarumIngame.setCameraPosition(batch, camera, newX, newY) } @@ -415,4 +416,5 @@ class TitleScreen(val batch: SpriteBatch) : Screen { TODO("not implemented") } } + } \ No newline at end of file diff --git a/src/net/torvald/terrarum/UIItemInventoryElem.kt b/src/net/torvald/terrarum/UIItemInventoryElem.kt index f56b5fff5..3325e85b5 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElem.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElem.kt @@ -7,7 +7,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes @@ -104,7 +104,7 @@ class UIItemInventoryElem( batch.color = item!!.nameColour mul if (mouseUp) mouseOverTextCol else inactiveTextCol // draw name of the item if (AppLoader.IS_DEVELOPMENT_BUILD) { - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, // print static id, dynamic id, and count "${item!!.originalID}/${item!!.dynamicID}" + (if (amount > 0 && item!!.stackable) "$fwsp($amountString)" else if (amount != 1) "$fwsp!!$amountString!!" else ""), posX + textOffsetX, @@ -112,7 +112,7 @@ class UIItemInventoryElem( ) } else { - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, // print name and amount in parens item!!.name + (if (amount > 0 && item!!.stackable) "$fwsp($amountString)" else if (amount != 1) "$fwsp!!$amountString!!" else "") + // TEMPORARY print eqipped slot info as well @@ -143,8 +143,8 @@ class UIItemInventoryElem( if (quickslot != null) { val label = quickslot!!.plus(0xE010).toChar() - val labelW = Terrarum.fontGame.getWidth("$label") - Terrarum.fontGame.draw(batch, "$label", barOffset + barFullLen - labelW, posY + textOffsetY) + val labelW = AppLoader.fontGame.getWidth("$label") + AppLoader.fontGame.draw(batch, "$label", barOffset + barFullLen - labelW, posY + textOffsetY) } } @@ -156,7 +156,7 @@ class UIItemInventoryElem( override fun keyDown(keycode: Int): Boolean { if (item != null && Terrarum.ingame != null && keycode in Input.Keys.NUM_0..Input.Keys.NUM_9) { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false @@ -194,7 +194,7 @@ class UIItemInventoryElem( TODO("Equip position is NULL, does this mean it's single-consume items like a potion? (from item: \"$item\" with itemID: ${item?.originalID}/${item?.dynamicID})") } - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false diff --git a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt index e704b8ae9..3543af14f 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt @@ -7,7 +7,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes @@ -116,10 +116,10 @@ class UIItemInventoryElemSimple( } - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, amountString, - posX + (width - Terrarum.fontSmallNumbers.getWidth(amountString)).toFloat(), - posY + (height - Terrarum.fontSmallNumbers.H).toFloat() + posX + (width - AppLoader.fontSmallNumbers.getWidth(amountString)).toFloat(), + posY + (height - AppLoader.fontSmallNumbers.H).toFloat() ) } @@ -133,7 +133,7 @@ class UIItemInventoryElemSimple( override fun keyDown(keycode: Int): Boolean { if (item != null && Terrarum.ingame != null && keycode in Input.Keys.NUM_0..Input.Keys.NUM_9) { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false val inventory = player.inventory @@ -168,7 +168,7 @@ class UIItemInventoryElemSimple( // equip da shit val itemEquipSlot = item!!.equipPosition - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false if (item != ItemCodex[player.inventory.itemEquipped.get(itemEquipSlot)]) { // if this item is unequipped, equip it diff --git a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt index acdfaf214..6f0fbaa7e 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt @@ -15,7 +15,7 @@ import net.torvald.terrarum.worlddrawer.LightmapRenderer */ object BlockPropUtil { var flickerFuncX: Second = 0f // saves current status (time) of func - val flickerFuncDomain: Second = 0.1f // time between two noise sample + val flickerFuncDomain: Second = 0.08f // time between two noise sample val flickerFuncRange = 0.012f // intensity [0, 1] var breathFuncX = 0f @@ -30,31 +30,27 @@ object BlockPropUtil { var flickerP0 = getNewRandom() var flickerP1 = getNewRandom() - var flickerP2 = getNewRandom() - var flickerP3 = getNewRandom() init { } private fun getTorchFlicker(baseLum: Cvec): Cvec { - val funcY = FastMath.interpolateCatmullRom(0.0f, flickerFuncX / flickerFuncDomain, - flickerP0, flickerP1, flickerP2, flickerP3 - ) + val funcY = FastMath.interpolateLinear(flickerFuncX / flickerFuncDomain, flickerP0, flickerP1) - return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) + return alterBrightnessUniform(baseLum, funcY) } private fun getSlowBreath(baseLum: Cvec): Cvec { val funcY = FastMath.sin(FastMath.PI * breathFuncX / breathCycleDuration) * breathRange - return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) + return alterBrightnessUniform(baseLum, funcY) } private fun getPulsate(baseLum: Cvec): Cvec { val funcY = FastMath.sin(FastMath.PI * pulsateFuncX / pulsateCycleDuration) * pulsateRange - return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) + return alterBrightnessUniform(baseLum, funcY) } /** @@ -63,21 +59,17 @@ object BlockPropUtil { internal fun dynamicLumFuncTickClock() { // FPS-time compensation if (Gdx.graphics.framesPerSecond > 0) { - flickerFuncX += Gdx.graphics.rawDeltaTime * 1000f - breathFuncX += Gdx.graphics.rawDeltaTime * 1000f - pulsateFuncX += Gdx.graphics.rawDeltaTime * 1000f + flickerFuncX += Gdx.graphics.rawDeltaTime + breathFuncX += Gdx.graphics.rawDeltaTime + pulsateFuncX += Gdx.graphics.rawDeltaTime } // flicker-related vars if (flickerFuncX > flickerFuncDomain) { flickerFuncX -= flickerFuncDomain - //flickerPatternThis = flickerPatternNext - //flickerPatternNext = getNewRandom() flickerP0 = flickerP1 - flickerP1 = flickerP2 - flickerP2 = flickerP3 - flickerP3 = getNewRandom() + flickerP1 = getNewRandom() } // breath-related vars @@ -101,4 +93,20 @@ object BlockPropUtil { else -> baseLum } } + + /** + * Darken or brighten colour by 'brighten' argument + * + * @param data Raw channel value (0-255) per channel + * @param brighten (-1.0 - 1.0) negative means darkening + * @return processed colour + */ + private fun alterBrightnessUniform(data: Cvec, brighten: Float): Cvec { + return Cvec( + data.r + brighten, + data.g + brighten, + data.b + brighten, + data.a + brighten + ) + } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/blockstats/BlockStats.kt b/src/net/torvald/terrarum/blockstats/BlockStats.kt index 4823f431a..8d281c0ac 100644 --- a/src/net/torvald/terrarum/blockstats/BlockStats.kt +++ b/src/net/torvald/terrarum/blockstats/BlockStats.kt @@ -3,7 +3,7 @@ package net.torvald.terrarum.blockstats import com.jme3.math.FastMath import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.CreateTileAtlas import java.util.* @@ -26,7 +26,7 @@ object BlockStats { // Get stats on no-zoomed screen area. In other words, will behave as if screen zoom were 1.0 // no matter how the screen is zoomed. val map = (Terrarum.ingame!!.world) - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return val renderWidth = FastMath.ceil(Terrarum.WIDTH.toFloat()) diff --git a/src/net/torvald/terrarum/blockstats/MinimapComposer.kt b/src/net/torvald/terrarum/blockstats/MinimapComposer.kt index edf11fb54..95d5778d0 100644 --- a/src/net/torvald/terrarum/blockstats/MinimapComposer.kt +++ b/src/net/torvald/terrarum/blockstats/MinimapComposer.kt @@ -7,7 +7,6 @@ import com.badlogic.gdx.utils.GdxRuntimeException import com.badlogic.gdx.utils.Queue import net.torvald.terrarum.AppLoader import net.torvald.terrarum.AppLoader.printdbg -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.worlddrawer.BlocksDrawer @@ -60,7 +59,7 @@ object MinimapComposer : Disposable { private val liveTilesMeta = Array(TILES_IN_X * TILES_IN_Y) { LiveTileMeta(revalidate = true) } private val updaterQueue = Queue(TILES_IN_X * TILES_IN_Y * 2) - private var currentThreads = Array(maxOf(1, Terrarum.THREADS.times(2).div(3))) { + private var currentThreads = Array(maxOf(1, AppLoader.THREADS.times(2).div(3))) { Thread() } diff --git a/src/net/torvald/terrarum/console/Version.kt b/src/net/torvald/terrarum/console/Version.kt index fd919c964..b9af9b391 100644 --- a/src/net/torvald/terrarum/console/Version.kt +++ b/src/net/torvald/terrarum/console/Version.kt @@ -11,7 +11,7 @@ import net.torvald.terrarum.langpack.Lang internal object Version : ConsoleCommand { override fun execute(args: Array) { - Echo("${Terrarum.NAME} ${AppLoader.getVERSION_STRING()}") + Echo("${AppLoader.GAME_NAME} ${AppLoader.getVERSION_STRING()}") Echo("Polyglot language pack version ${Lang.POLYGLOT_VERSION}") Echo("GL_VERSION: ${Terrarum.GL_VERSION}") Echo("Renderer: ${Gdx.graphics.glVersion.rendererString}, ${Gdx.graphics.glVersion.vendorString}") diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index 907c7ae63..5594a11ca 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -10,14 +10,14 @@ import net.torvald.terrarum.controller.TerrarumController import net.torvald.terrarum.floorInt import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameworld.fmod -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.WorldCamera /** * Created by minjaesong on 2015-12-31. */ -class IngameController(val ingame: Ingame) : InputAdapter() { +class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() { val hasGamepad: Boolean @@ -29,10 +29,10 @@ class IngameController(val ingame: Ingame) : InputAdapter() { /** position of the mouse (pixelwise) relative to the world (also, currently pointing world-wise coordinate, if the world coordinate is pixel-wise) */ val mouseX: Float - get() = WorldCamera.x + Gdx.input.x / (ingame.screenZoom) + get() = WorldCamera.x + Gdx.input.x / (terrarumIngame.screenZoom) /** position of the mouse (pixelwise) relative to the world (also, currently pointing world-wise coordinate, if the world coordinate is pixel-wise)*/ val mouseY: Float - get() = WorldCamera.y + Gdx.input.y / (ingame.screenZoom) + get() = WorldCamera.y + Gdx.input.y / (terrarumIngame.screenZoom) /** currently pointing tile coordinate */ val mouseTileX: Int get() = (mouseX / CreateTileAtlas.TILE_SIZE).floorInt() @@ -54,14 +54,14 @@ class IngameController(val ingame: Ingame) : InputAdapter() { // Use item: assuming the player has only one effective grip (EquipPosition.HAND_GRIP) // don't separate Player from this! Physics will break, esp. airborne manoeuvre - if (ingame.canPlayerControl) { + if (terrarumIngame.canPlayerControl) { // fire world click events; the event is defined as Ingame's (or any others') WorldClick event - if (ingame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? + if (terrarumIngame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? if ( Gdx.input.isButtonPressed(AppLoader.getConfigInt("mouseprimary")) || Gdx.input.isButtonPressed(AppLoader.getConfigInt("mousesecondary"))) { - ingame.worldPrimaryClickStart(AppLoader.UPDATE_RATE.toFloat()) + terrarumIngame.worldPrimaryClickStart(AppLoader.UPDATE_RATE.toFloat()) } /*if Gdx.input.isButtonPressed(AppLoader.getConfigInt("mousesecondary")) { ingame.worldSecondaryClickStart(AppLoader.UPDATE_RATE.toFloat()) @@ -79,35 +79,35 @@ class IngameController(val ingame: Ingame) : InputAdapter() { override fun keyDown(keycode: Int): Boolean { - if (ingame.canPlayerControl) { - ingame.actorNowPlaying?.keyDown(keycode) + if (terrarumIngame.canPlayerControl) { + terrarumIngame.actorNowPlaying?.keyDown(keycode) // quickslot by number keys val quickslotKeys = AppLoader.getConfigIntArray("keyquickslots") if (keycode in quickslotKeys) { - ingame.actorNowPlaying?.actorValue?.set(AVKey.__PLAYER_QUICKSLOTSEL, quickslotKeys.indexOf(keycode)) + terrarumIngame.actorNowPlaying?.actorValue?.set(AVKey.__PLAYER_QUICKSLOTSEL, quickslotKeys.indexOf(keycode)) } // pie menu if (AppLoader.getConfigIntArray("keyquickselalt").contains(keycode) || keycode == AppLoader.getConfigInt("keyquicksel")) { - ingame.uiPieMenu.setAsOpen() - ingame.uiQuickBar.setAsClose() + terrarumIngame.uiPieMenu.setAsOpen() + terrarumIngame.uiQuickBar.setAsClose() } } - ingame.uiContainer.forEach { it.keyDown(keycode) } // for KeyboardControlled UIcanvases + terrarumIngame.uiContainer.forEach { it.keyDown(keycode) } // for KeyboardControlled UIcanvases // Debug UIs if (keycode == Input.Keys.GRAVE) { - ingame.consoleHandler.toggleOpening() + terrarumIngame.consoleHandler.toggleOpening() } // screenshot key if (keycode == Input.Keys.F12 && !f12Down) { AppLoader.requestScreenshot() - ingame.sendNotification("Screenshot taken") + terrarumIngame.sendNotification("Screenshot taken") f12Down = true println("Screenshot taken.") } @@ -118,11 +118,11 @@ class IngameController(val ingame: Ingame) : InputAdapter() { override fun keyUp(keycode: Int): Boolean { if (AppLoader.getConfigIntArray("keyquickselalt").contains(keycode) || keycode == AppLoader.getConfigInt("keyquicksel")) { - ingame.uiPieMenu.setAsClose() - ingame.uiQuickBar.setAsOpen() + terrarumIngame.uiPieMenu.setAsClose() + terrarumIngame.uiQuickBar.setAsOpen() } - ingame.uiContainer.forEach { it.keyUp(keycode) } // for KeyboardControlled UIcanvases + terrarumIngame.uiContainer.forEach { it.keyUp(keycode) } // for KeyboardControlled UIcanvases // screenshot key @@ -133,25 +133,25 @@ class IngameController(val ingame: Ingame) : InputAdapter() { } override fun keyTyped(character: Char): Boolean { - ingame.uiContainer.forEach { if (it.isVisible) it.keyTyped(character) } + terrarumIngame.uiContainer.forEach { if (it.isVisible) it.keyTyped(character) } return true } override fun mouseMoved(screenX: Int, screenY: Int): Boolean { - ingame.uiContainer.forEach { it.mouseMoved(screenX, screenY) } + terrarumIngame.uiContainer.forEach { it.mouseMoved(screenX, screenY) } return true } override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { // don't separate Player from this! Physics will break, esp. airborne manoeuvre - if (ingame.canPlayerControl) { + if (terrarumIngame.canPlayerControl) { // fire world click events; the event is defined as Ingame's (or any others') WorldClick event - if (ingame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? + if (terrarumIngame.uiContainer.map { if ((it.isOpening || it.isOpened) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right? if ( button == AppLoader.getConfigInt("mouseprimary") || button == AppLoader.getConfigInt("mousesecondary")) { - ingame.worldPrimaryClickEnd(AppLoader.UPDATE_RATE.toFloat()) + terrarumIngame.worldPrimaryClickEnd(AppLoader.UPDATE_RATE.toFloat()) } /*if (button == AppLoader.getConfigInt("mousesecondary")) { ingame.worldSecondaryClickEnd(AppLoader.UPDATE_RATE.toFloat()) @@ -160,33 +160,33 @@ class IngameController(val ingame: Ingame) : InputAdapter() { } - ingame.uiContainer.forEach { it.touchUp(screenX, screenY, pointer, button) } // for MouseControlled UIcanvases + terrarumIngame.uiContainer.forEach { it.touchUp(screenX, screenY, pointer, button) } // for MouseControlled UIcanvases return true } override fun scrolled(amount: Int): Boolean { - if (ingame.canPlayerControl) { + if (terrarumIngame.canPlayerControl) { // quickslot by wheel - if (ingame.actorNowPlaying != null) { - ingame.actorNowPlaying!!.actorValue.set( + if (terrarumIngame.actorNowPlaying != null) { + terrarumIngame.actorNowPlaying!!.actorValue.set( AVKey.__PLAYER_QUICKSLOTSEL, - (ingame.actorNowPlaying!!.actorValue.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL)!! - amount) fmod ingame.actorNowPlaying!!.inventory.quickSlot.size + (terrarumIngame.actorNowPlaying!!.actorValue.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL)!! - amount) fmod terrarumIngame.actorNowPlaying!!.inventory.quickSlot.size ) } } - ingame.uiContainer.forEach { it.scrolled(amount) } + terrarumIngame.uiContainer.forEach { it.scrolled(amount) } return true } override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean { - ingame.uiContainer.forEach { it.touchDragged(screenX, screenY, pointer) } + terrarumIngame.uiContainer.forEach { it.touchDragged(screenX, screenY, pointer) } return true } override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { - ingame.uiContainer.forEach { it.touchDown(screenX, screenY, pointer, button) } + terrarumIngame.uiContainer.forEach { it.touchDown(screenX, screenY, pointer, button) } return true } diff --git a/src/net/torvald/terrarum/gameworld/BlockLayer.kt b/src/net/torvald/terrarum/gameworld/BlockLayer.kt index ac9a844cc..32b195e46 100644 --- a/src/net/torvald/terrarum/gameworld/BlockLayer.kt +++ b/src/net/torvald/terrarum/gameworld/BlockLayer.kt @@ -140,7 +140,7 @@ open class BlockLayer(val width: Int, val height: Int) : Disposable { override fun dispose() { ptr.destroy() //directByteBuffer.clear() - printdbg(this, "BlockLayer successfully freed") + printdbg(this, "BlockLayer with ptr ($ptr) successfully freed") } companion object { diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt index e69322cba..151e41236 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt @@ -8,7 +8,7 @@ import net.torvald.terrarum.blockproperties.Fluid import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem import net.torvald.terrarum.worlddrawer.BlocksDrawer import java.util.* @@ -195,7 +195,7 @@ object ItemCodex { } override fun startPrimaryUse(delta: Float): Boolean { - val ingame = Terrarum.ingame!! as Ingame // must be in here + val ingame = Terrarum.ingame!! as TerrarumIngame // must be in here ingame.world.setFluid(Terrarum.mouseTileX, Terrarum.mouseTileY, Fluid.WATER, 4f) return true } @@ -222,7 +222,7 @@ object ItemCodex { } override fun startPrimaryUse(delta: Float): Boolean { - val ingame = Terrarum.ingame!! as Ingame // must be in here + val ingame = Terrarum.ingame!! as TerrarumIngame // must be in here ingame.world.setFluid(Terrarum.mouseTileX, Terrarum.mouseTileY, Fluid.LAVA, 4f) return true } @@ -257,7 +257,7 @@ object ItemCodex { return dynamicItemDescription[code]!! } else { - val a = (Terrarum.ingame!! as Ingame).getActorByID(code) // actor item + val a = (Terrarum.ingame!! as TerrarumIngame).getActorByID(code) // actor item if (a is CanBeAnItem) return a.itemData return null diff --git a/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt b/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt index 80c27149e..e38f64b5b 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt @@ -2,7 +2,6 @@ package net.torvald.terrarum.itemproperties import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.ai.toLua -import net.torvald.terrarum.modulebasegame.Ingame import org.luaj.vm2.Globals import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index 3b798d671..e2c79f8d6 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -318,7 +318,7 @@ class BuildingMaker(batch: SpriteBatch) : IngameInstance(batch) { private var updateAkku = 0.0 override fun render(delta: Float) { - Gdx.graphics.setTitle(Ingame.getCanonicalTitle()) + Gdx.graphics.setTitle(TerrarumIngame.getCanonicalTitle()) // ASYNCHRONOUS UPDATE AND RENDER // @@ -590,7 +590,7 @@ class MovableWorldCamera(val parent: BuildingMaker) : ActorHumanoid(0, usePhysic class YamlCommandExit : YamlInvokable { override fun invoke(args: Array) { - Terrarum.setScreen(TitleScreen(Terrarum.batch)) + AppLoader.setScreen(TitleScreen(Terrarum.batch)) } } diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt similarity index 98% rename from src/net/torvald/terrarum/modulebasegame/Ingame.kt rename to src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index dac1e5ad7..e8a7c29bc 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -39,10 +39,12 @@ import java.util.concurrent.locks.ReentrantLock /** + * Ingame instance for the game Terrarum. + * * Created by minjaesong on 2017-06-16. */ -open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { +open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { private val ACTOR_UPDATE_RANGE = 4096 @@ -240,7 +242,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { printdbg(this, "loaded successfully.") } else { - LoadScreen.addMessage("${Terrarum.NAME} version ${AppLoader.getVERSION_STRING()}") + LoadScreen.addMessage("${AppLoader.GAME_NAME} version ${AppLoader.getVERSION_STRING()}") LoadScreen.addMessage("Creating new world") @@ -416,7 +418,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { /////////////// // prod code // /////////////// - private class ThreadIngameUpdate(val ingame: Ingame): Runnable { + private class ThreadIngameUpdate(val terrarumIngame: TerrarumIngame): Runnable { override fun run() { TODO() } @@ -425,6 +427,8 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { private var updateAkku = 0.0 override fun render(delta: Float) { + println("Vitun Perkeleen TerrarumIngame") + // Q&D solution for LoadScreen and Ingame, where while LoadScreen is working, Ingame now no longer has GL Context // there's still things to load which needs GL context to be present if (!gameFullyLoaded) { @@ -660,12 +664,12 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { if (false) { // don't multithread this for now, it's SLOWER //if (Terrarum.MULTITHREAD && actorContainerActive.size > Terrarum.THREADS) { val actors = actorContainerActive.size.toFloat() // set up indices - for (i in 0..Terrarum.THREADS - 1) { + for (i in 0..AppLoader.THREADS - 1) { ThreadParallel.map( i, "ActorUpdate", ThreadActorUpdate( - actors.div(Terrarum.THREADS).times(i).roundInt(), - actors.div(Terrarum.THREADS).times(i + 1).roundInt() - 1 + actors.div(AppLoader.THREADS).times(i).roundInt(), + actors.div(AppLoader.THREADS).times(i + 1).roundInt() - 1 ) ) } diff --git a/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt b/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt index 41ebe9182..7fb93cb57 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt @@ -4,7 +4,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.debuggerapp.ActorValueTracker import java.util.* @@ -16,7 +16,7 @@ internal object AVTracker : ConsoleCommand { override fun execute(args: Array) { if (args.size < 2) { - jPanelInstances.add(ActorValueTracker((Terrarum.ingame!! as Ingame).actorNowPlaying)) + jPanelInstances.add(ActorValueTracker((Terrarum.ingame!! as TerrarumIngame).actorNowPlaying)) } else { try { diff --git a/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt b/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt index afb68ec97..a00c4c01a 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt @@ -4,7 +4,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.debuggerapp.ActorsLister -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import java.util.* /** @@ -15,8 +15,8 @@ internal object ActorsList : ConsoleCommand { override fun execute(args: Array) { jPanelInstances.add(ActorsLister( - (Terrarum.ingame!! as Ingame).actorContainerActive, - (Terrarum.ingame!! as Ingame).actorContainerInactive) + (Terrarum.ingame!! as TerrarumIngame).actorContainerActive, + (Terrarum.ingame!! as TerrarumIngame).actorContainerInactive) ) } diff --git a/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt b/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt index deb611823..97d216753 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt @@ -2,12 +2,12 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame object CheatWarnTest : ConsoleCommand { override fun execute(args: Array) { - (Terrarum.ingame as? Ingame)?.uiCheatMotherfuckerNootNoot?.setAsOpen() + (Terrarum.ingame as? TerrarumIngame)?.uiCheatMotherfuckerNootNoot?.setAsOpen() } override fun printUsage() { diff --git a/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt index 75ca928a7..49d2adde6 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.utils.JsonWriter import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import java.io.IOException @@ -16,7 +16,7 @@ internal object ExportAV : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2) { try { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return JsonWriter.writeToFile( diff --git a/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt b/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt index 70aae284c..b08e2f168 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-19. @@ -14,8 +14,8 @@ internal object GetAV : ConsoleCommand { override fun execute(args: Array) { try { - val ingame = Terrarum.ingame!! as Ingame - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val ingame = Terrarum.ingame!! as TerrarumIngame + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return diff --git a/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt b/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt index 4725fcbfe..04c1c10e9 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt @@ -4,7 +4,7 @@ import net.torvald.terrarum.AppLoader import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.utils.JsonWriter import java.io.BufferedWriter import java.io.FileWriter @@ -20,7 +20,7 @@ internal object GsonTest : ConsoleCommand { val jsonBuilder = JsonWriter.getJsonBuilder() - val jsonString = jsonBuilder.toJson((Terrarum.ingame!! as Ingame).actorNowPlaying) + val jsonString = jsonBuilder.toJson((Terrarum.ingame!! as TerrarumIngame).actorNowPlaying) //val avelem = Gson().toJson((Terrarum.ingame!! as Ingame).actorNowPlaying) //val jsonString = avelem.toString() diff --git a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt index d41c521b3..8a38ffec8 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.Pocketed /** @@ -13,7 +13,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.Pocketed */ internal object Inventory : ConsoleCommand { - private var target: Pocketed? = (Terrarum.ingame!! as Ingame).actorNowPlaying + private var target: Pocketed? = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying override fun execute(args: Array) { if (args.size == 1) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/Seed.kt b/src/net/torvald/terrarum/modulebasegame/console/Seed.kt index f00be304b..9ad46cd40 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Seed.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Seed.kt @@ -4,7 +4,6 @@ import net.torvald.terrarum.* import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-06-16. diff --git a/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt b/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt index 8543c271d..fbd403e5c 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-15. @@ -63,7 +63,7 @@ internal object SetAV : ConsoleCommand { return } - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) { EchoError("Player does not exist") println("[SetAV] Player does not exist") diff --git a/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt b/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt index f541469d9..ca8412413 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt @@ -2,7 +2,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-23. @@ -11,7 +11,7 @@ internal object SetBulletin : ConsoleCommand { override fun execute(args: Array) { //send(Lang["ERROR_SAVE_CORRUPTED"], Lang["MENU_LABEL_CONTINUE_QUESTION"]) - (Terrarum.ingame!! as Ingame).sendNotification(args.sliceArray(1..args.lastIndex)) + (Terrarum.ingame!! as TerrarumIngame).sendNotification(args.sliceArray(1..args.lastIndex)) println("sent notifinator") } diff --git a/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt b/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt index a39ca92ec..9657f9f17 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt @@ -4,7 +4,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.gameactors.ActorWBMovable /** @@ -14,7 +14,7 @@ internal object SetScale : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2 || args.size == 3) { try { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return diff --git a/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt b/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt index 5f0503550..f0894a864 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt @@ -4,14 +4,14 @@ import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-03-20. */ internal object SetTime : ConsoleCommand { override fun execute(args: Array) { - val world = (Terrarum.ingame!! as Ingame).gameworld + val world = (Terrarum.ingame!! as TerrarumIngame).gameworld if (args.size == 2) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt b/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt index 1c67d12b4..b6bf8c369 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt @@ -3,7 +3,7 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-03-20. @@ -13,7 +13,7 @@ internal object SetTimeDelta : ConsoleCommand { val HARD_LIMIT = 60 override fun execute(args: Array) { - val world = (Terrarum.ingame!! as Ingame).gameworld + val world = (Terrarum.ingame!! as TerrarumIngame).gameworld if (args.size == 2) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt index 8afdcf4a4..8184b0b8e 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt @@ -4,7 +4,6 @@ import net.torvald.terrarum.modulebasegame.gameactors.PhysTestBall import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame import org.dyn4j.geometry.Vector2 /** diff --git a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt index 4fd25706f..6c1faf2ab 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt @@ -3,7 +3,6 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.gameactors.PhysTestLuarLander /** diff --git a/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt index 6de978926..e647bacfb 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt @@ -3,7 +3,6 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch /** diff --git a/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt index 1c55f0442..01171350c 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.gameactors.ActorWBMovable -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.worlddrawer.CreateTileAtlas /** @@ -27,7 +27,7 @@ internal object Teleport : ConsoleCommand { return } - (Terrarum.ingame!! as Ingame).actorNowPlaying?.setPosition(x.toDouble(), y.toDouble()) + (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying?.setPosition(x.toDouble(), y.toDouble()) } else if (args.size == 4) { if (args[2].toLowerCase() != "to") { @@ -39,7 +39,7 @@ internal object Teleport : ConsoleCommand { try { val fromActorID = args[1].toInt() val targetActorID = if (args[3].toLowerCase() == "player") { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) { EchoError("Player does not exist") return diff --git a/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt index 13cb0782b..8157fc787 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt @@ -3,14 +3,14 @@ package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.ConsoleCommand import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-01-19. */ internal object ToggleNoClip : ConsoleCommand { override fun execute(args: Array) { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return diff --git a/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt b/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt index 0dcf1b722..fbae6ed0f 100644 --- a/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt +++ b/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt @@ -8,7 +8,7 @@ import net.torvald.terrarum.console.Echo import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ActorValue import net.torvald.terrarum.gameactors.ActorWBMovable -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.console.SetAV import net.torvald.terrarum.worlddrawer.CreateTileAtlas import java.awt.BorderLayout @@ -86,7 +86,7 @@ class ActorValueTracker constructor() : JFrame() { buttonChangeActor.addMouseListener(object : MouseAdapter() { override fun mousePressed(e: MouseEvent?) { if (actorIDField.text.toLowerCase() == "player") { - actor = (Terrarum.ingame!! as Ingame).actorNowPlaying + actor = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying actorValue = actor!!.actorValue } else if (actorIDField.text.isNotBlank()) { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 8c3fa607a..631db1170 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -11,7 +11,7 @@ import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.Material -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.worlddrawer.LightmapRenderer @@ -588,8 +588,8 @@ open class ActorHumanoid( // force update inventory UI, but when the pie menu is not open (pie menu constantly writes to the actorvalue, which will rebuildList() try { - if (!(Terrarum.ingame!! as Ingame).uiPieMenu.isVisible) { - ((Terrarum.ingame!! as Ingame).uiInventoryPlayer as UIInventoryFull).rebuildList() + if (!(Terrarum.ingame!! as TerrarumIngame).uiPieMenu.isVisible) { + ((Terrarum.ingame!! as TerrarumIngame).uiInventoryPlayer as UIInventoryFull).rebuildList() } } catch (LateInitMyArse: kotlin.UninitializedPropertyAccessException) { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt index 8accd1670..4c5dcb502 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt @@ -11,7 +11,7 @@ import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_WALLS import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.lock -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar import java.util.* import java.util.concurrent.locks.ReentrantLock @@ -67,8 +67,8 @@ class ActorInventory(@Transient val actor: Pocketed, var maxCapacity: Int, var c "These commands are NOT INTERCHANGEABLE; they handle things differently according to the context.") if (item.originalID == Terrarum.PLAYER_REF_ID || item.originalID == 0x51621D) // do not delete this magic throw IllegalArgumentException("Attempted to put human player into the inventory.") - if (((Terrarum.ingame as? Ingame)?.gameFullyLoaded ?: false) && - (item.originalID == (Terrarum.ingame as? Ingame)?.actorNowPlaying?.referenceID)) + if (((Terrarum.ingame as? TerrarumIngame)?.gameFullyLoaded ?: false) && + (item.originalID == (Terrarum.ingame as? TerrarumIngame)?.actorNowPlaying?.referenceID)) throw IllegalArgumentException("Attempted to put active player into the inventory.") if ((!item.stackable || item.dynamicID in ITEM_DYNAMIC) && count > 1) throw IllegalArgumentException("Attempting to adding stack of item but the item is not stackable; item: $item, count: $count") diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt index 127570ee1..7d33214e6 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt @@ -3,7 +3,7 @@ package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.Actor -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Created by minjaesong on 2016-02-03. @@ -11,7 +11,7 @@ import net.torvald.terrarum.modulebasegame.Ingame object PlayerBuilder { operator fun invoke(): Actor { - val world = (Terrarum.ingame!! as Ingame).gameworld + val world = (Terrarum.ingame!! as TerrarumIngame).gameworld val p: Actor = IngamePlayer("lol", "lol_glow", world.worldTime.TIME_T) InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json") diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt index 6b6598032..970e503a4 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt @@ -5,7 +5,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.HumanoidNPC import net.torvald.terrarum.Second import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ai.ActorAI -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * Slime's stupid AI but can adjust his jump power to smack you as fast as possible @@ -35,7 +35,7 @@ class SmarterSlimes : ActorAI { // TEST: just target player - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return val playerXPos = player.centrePosPoint.x diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt index d50ae133e..c1e4c795e 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt @@ -1,7 +1,7 @@ package net.torvald.terrarum.modulebasegame.gameactors.physicssolver import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.gameactors.ActorWBMovable import java.util.* @@ -39,7 +39,7 @@ object CollisionSolver { collCandidateY.clear() // mark list x - (Terrarum.ingame!! as Ingame).actorContainerActive.forEach { it -> + (Terrarum.ingame!! as TerrarumIngame).actorContainerActive.forEach { it -> if (it is ActorWBMovable) { collListX.add(CollisionMarkings(it.hitbox.hitboxStart.x, STARTPOINT, it)) collListX.add(CollisionMarkings(it.hitbox.hitboxEnd.x, ENDPOINT, it)) @@ -72,7 +72,7 @@ object CollisionSolver { collCandidateStack.clear() // mark list y - (Terrarum.ingame!! as Ingame).actorContainerActive.forEach { it -> + (Terrarum.ingame!! as TerrarumIngame).actorContainerActive.forEach { it -> if (it is ActorWBMovable) { collListY.add(CollisionMarkings(it.hitbox.hitboxStart.y, STARTPOINT, it)) collListY.add(CollisionMarkings(it.hitbox.hitboxEnd.y, ENDPOINT, it)) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt index d6c124111..8a9760883 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt @@ -7,7 +7,7 @@ import net.torvald.terrarum.gameactors.ActorWBMovable import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.realestate.LandUtil @@ -21,7 +21,7 @@ object BlockBase { * for wire items, otherwise you want it to be true. */ fun blockStartPrimaryUse(gameItem: GameItem, itemID: Int, delta: Float): Boolean { - val ingame = Terrarum.ingame!! as Ingame + val ingame = Terrarum.ingame!! as TerrarumIngame val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) val mouseTile = Point2i(Terrarum.mouseTileX, Terrarum.mouseTileY) @@ -74,7 +74,7 @@ object BlockBase { } fun wireStartPrimaryUse(gameItem: GameItem, wireTypeBit: Int, delta: Float): Boolean { - val ingame = Terrarum.ingame!! as Ingame + val ingame = Terrarum.ingame!! as TerrarumIngame val mouseTile = Point2i(Terrarum.mouseTileX, Terrarum.mouseTileY) // return false if the tile is already there diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt index df5b76b87..4c3c29e1a 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt @@ -11,7 +11,7 @@ import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.itemproperties.Calculate import net.torvald.terrarum.itemproperties.MaterialCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -22,7 +22,7 @@ import kotlin.math.roundToInt */ object PickaxeCore { fun startPrimaryUse(delta: Float, item: GameItem): Boolean { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false val mouseTileX = Terrarum.mouseTileX @@ -58,7 +58,7 @@ object PickaxeCore { } fun endPrimaryUse(delta: Float, item: GameItem): Boolean { - val player = (Terrarum.ingame!! as Ingame).actorNowPlaying + val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying if (player == null) return false item.using = false diff --git a/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt b/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt index 37b4edfc5..672c1fa26 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt @@ -12,7 +12,7 @@ package net.torvald.terrarum.modulebasegame.ui override var height: Int = 0 private var fontCol: Color = if (!isBlackVariant) Color.BLACK else Color.WHITE - private val GLYPH_HEIGHT = Terrarum.fontGame.lineHeight + private val GLYPH_HEIGHT = AppLoader.fontGame.lineHeight override var openCloseTime: Second = OPEN_CLOSE_TIME @@ -29,7 +29,7 @@ package net.torvald.terrarum.modulebasegame.ui override fun renderUI(batch: SpriteBatch, camera: Camera) { blendNormal(batch) - val textWidth = messagesList.map { Terrarum.fontGame.getWidth(it) }.sorted()[1] + val textWidth = messagesList.map { AppLoader.fontGame.getWidth(it) }.sorted()[1] batch.color = Color.WHITE @@ -38,7 +38,7 @@ package net.torvald.terrarum.modulebasegame.ui batch.draw(segment.get(2, 0), 2 * LRmargin + textWidth, 0f) messagesList.forEachIndexed { index, s -> - Terrarum.fontGame.draw(batch, s, segment.tileW + LRmargin, (segment.tileH - Terrarum.fontGame.lineHeight) / 2f) + AppLoader.fontGame.draw(batch, s, segment.tileW + LRmargin, (segment.tileH - AppLoader.fontGame.lineHeight) / 2f) } AppLoader.printdbg(this, "render") diff --git a/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt b/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt index 799c290b3..1c45ec4b7 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt @@ -56,15 +56,15 @@ class Notification : UICanvas() { fontCol.a = handler.opacity val realTextWidth = 12 + if (message.size == 1) - Terrarum.fontGame.getWidth(message[0]) + AppLoader.fontGame.getWidth(message[0]) else - message.map { Terrarum.fontGame.getWidth(it) }.sorted().last() + message.map { AppLoader.fontGame.getWidth(it) }.sorted().last() val displayedTextWidth = maxOf(240, realTextWidth) // force the UI to the centre of the screen this.posX = (Terrarum.WIDTH - displayedTextWidth) / 2 - val textHeight = message.size * Terrarum.fontGame.lineHeight + val textHeight = message.size * AppLoader.fontGame.lineHeight batch.color = drawColor @@ -73,8 +73,8 @@ class Notification : UICanvas() { batch.color = fontCol message.forEachIndexed { index, s -> val xoff = 6 + (displayedTextWidth - realTextWidth) / 2 - val y = -textHeight + Terrarum.fontGame.lineHeight * index - Terrarum.fontGame.draw(batch, s, LRmargin + xoff, y) + val y = -textHeight + AppLoader.fontGame.lineHeight * index + AppLoader.fontGame.draw(batch, s, LRmargin + xoff, y) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt index ec8b29f21..6486f2c58 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegSmall import net.torvald.terrarum.modulebasegame.imagefont.WatchFont @@ -52,7 +52,7 @@ class UIBasicInfo(private val player: ActorHumanoid?) : UICanvas() { get() { if (player != null) { val playerTilePos = player.hIntTilewiseHitbox - val tempCelsius = -273f + ((Terrarum.ingame as? Ingame)?.world?.getTemperature(playerTilePos.centeredX.toInt(), playerTilePos.centeredY.toInt()) ?: 288f) + val tempCelsius = -273f + ((Terrarum.ingame as? TerrarumIngame)?.world?.getTemperature(playerTilePos.centeredX.toInt(), playerTilePos.centeredY.toInt()) ?: 288f) return if (tempCelsius < -10) 0 diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt index c30cfe83b..815700108 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt @@ -3,9 +3,10 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.fillRect -import net.torvald.terrarum.Second import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.ui.UICanvas @@ -37,10 +38,10 @@ class UICheatDetected : UICanvas() { batch.color = Color.WHITE val txt = Lang["ERROR_GENERIC_CHEATING"] - val txtW = Terrarum.fontGame.getWidth(txt) - val txtH = Terrarum.fontGame.lineHeight.toInt() + val txtW = AppLoader.fontGame.getWidth(txt) + val txtH = AppLoader.fontGame.lineHeight.toInt() - Terrarum.fontGame.draw(batch, txt, width.minus(txtW).ushr(1).toFloat(), height.minus(txtH).ushr(1).toFloat()) + AppLoader.fontGame.draw(batch, txt, width.minus(txtW).ushr(1).toFloat(), height.minus(txtH).ushr(1).toFloat()) } override fun updateUI(delta: Float) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt index 7ba7cbcc6..916c46179 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt @@ -47,7 +47,7 @@ package net.torvald.terrarum.modulebasegame.ui val itemStripGutterH = 8 val itemInterColGutter = 8 - val controlHelpHeight = Terrarum.fontGame.lineHeight.toInt() + val controlHelpHeight = AppLoader.fontGame.lineHeight.toInt() val pageButtonExtraGap = 32 @@ -239,16 +239,16 @@ package net.torvald.terrarum.modulebasegame.ui blendNormal() batch.color = defaultTextColour // W - close - Terrarum.fontGame.draw(batch, listControlClose, 4f, height - controlHelpHeight.toFloat()) + AppLoader.fontGame.draw(batch, listControlClose, 4f, height - controlHelpHeight.toFloat()) // MouseL - Use ; 1.9 - Register ; T - Drop - Terrarum.fontGame.draw(batch, listControlHelp, catButtons.width + 4f, height - controlHelpHeight.toFloat()) + AppLoader.fontGame.draw(batch, listControlHelp, catButtons.width + 4f, height - controlHelpHeight.toFloat()) // encumbrance if (inventory != null) { val encumbranceText = Lang["GAME_INVENTORY_ENCUMBRANCE"] - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, encumbranceText, - width - 9 - Terrarum.fontGame.getWidth(encumbranceText) - weightBarWidth, + width - 9 - AppLoader.fontGame.getWidth(encumbranceText) - weightBarWidth, height - controlHelpHeight.toFloat() ) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index 80d03cebb..8438e3e7b 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -6,22 +6,12 @@ import com.badlogic.gdx.graphics.* import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.graphics.glutils.ShapeRenderer -import com.badlogic.gdx.graphics.Color import net.torvald.terrarum.* -import net.torvald.terrarum.AppLoader.IS_DEVELOPMENT_BUILD -import net.torvald.terrarum.AppLoader.printdbg -import net.torvald.terrarum.AppLoader.gamepadLabelEast -import net.torvald.terrarum.AppLoader.gamepadLabelLStick -import net.torvald.terrarum.AppLoader.gamepadLabelLT -import net.torvald.terrarum.AppLoader.gamepadLabelNorth -import net.torvald.terrarum.AppLoader.gamepadLabelRStick -import net.torvald.terrarum.AppLoader.gamepadLabelRT -import net.torvald.terrarum.AppLoader.gamepadLabelStart -import net.torvald.terrarum.AppLoader.gamepadLabelWest +import net.torvald.terrarum.AppLoader.* import net.torvald.terrarum.blockstats.MinimapComposer import net.torvald.terrarum.gameactors.ActorWBMovable import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory.Companion.CAPACITY_MODE_NO_ENCUMBER import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.ui.UICanvas @@ -87,7 +77,7 @@ class UIInventoryFull( else "$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]}$SP" + "$gamepadLabelLT ${Lang["GAME_INVENTORY"]}" - val controlHelpHeight = Terrarum.fontGame.lineHeight + val controlHelpHeight = AppLoader.fontGame.lineHeight private var encumbrancePerc = 0f private var isEncumbered = false @@ -194,7 +184,7 @@ class UIInventoryFull( // make gameMenuButtons work gameMenuButtons.selectionChangeListener = { old, new -> if (new == 0) { - Terrarum.setScreen(TitleScreen(Terrarum.batch)) + AppLoader.setScreen(TitleScreen(Terrarum.batch)) } else if (new == 1) { Gdx.app.exit() @@ -441,7 +431,7 @@ class UIInventoryFull( batch.begin() - Terrarum.fontSmallNumbers.draw(batch, "$minimapPanX, $minimapPanY; x$minimapZoom", minimapScrOffX + (Terrarum.WIDTH - MINIMAP_WIDTH) / 2, -10f + itemList.posY) + AppLoader.fontSmallNumbers.draw(batch, "$minimapPanX, $minimapPanY; x$minimapZoom", minimapScrOffX + (Terrarum.WIDTH - MINIMAP_WIDTH) / 2, -10f + itemList.posY) batch.projectionMatrix = camera.combined @@ -451,7 +441,7 @@ class UIInventoryFull( // control hints batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, minimapControlHelp, offsetX + minimapScrOffX, yEnd - 20) + AppLoader.fontGame.draw(batch, minimapControlHelp, offsetX + minimapScrOffX, yEnd - 20) // the minimap batch.draw(minimapFBO.colorBufferTexture, minimapScrOffX + (Terrarum.WIDTH - MINIMAP_WIDTH) / 2, itemList.posY.toFloat()) @@ -461,7 +451,7 @@ class UIInventoryFull( // control hints blendNormal(batch) batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, gameMenuControlHelp, offsetX + menuScrOffX, yEnd - 20) + AppLoader.fontGame.draw(batch, gameMenuControlHelp, offsetX + menuScrOffX, yEnd - 20) // text buttons gameMenuButtons.render(batch, camera) @@ -475,15 +465,15 @@ class UIInventoryFull( // control hints blendNormal(batch) batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, listControlHelp, offsetX + inventoryScrOffX, yEnd - 20) + AppLoader.fontGame.draw(batch, listControlHelp, offsetX + inventoryScrOffX, yEnd - 20) // encumbrance meter val encumbranceText = Lang["GAME_INVENTORY_ENCUMBRANCE"] - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, encumbranceText, - xEnd - 6 - Terrarum.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, + xEnd - 6 - AppLoader.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, yEnd-20 ) @@ -514,7 +504,7 @@ class UIInventoryFull( if (IS_DEVELOPMENT_BUILD) { AppLoader.fontSmallNumbers.draw(batch, "${actor.inventory.capacity}/${actor.inventory.maxCapacity}", - xEnd - 6 - Terrarum.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, + xEnd - 6 - AppLoader.fontGame.getWidth(encumbranceText) - weightBarWidth + inventoryScrOffX, yEnd-20 + 3f + controlHelpHeight - 4f ) } @@ -554,18 +544,18 @@ class UIInventoryFull( override fun doOpening(delta: Float) { - (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) + (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage(null) } override fun doClosing(delta: Float) { - (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) + (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage(null) } override fun endOpening(delta: Float) { } override fun endClosing(delta: Float) { - (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) // required! + (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage(null) // required! MinimapComposer.revalidateAll() } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt index 0252e5b69..29c706aeb 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt @@ -7,7 +7,7 @@ import net.torvald.terrarum.* import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK @@ -287,7 +287,7 @@ class UIItemInventoryDynamicList( // set tooltip accordingly if (isCompactMode && it.mouseUp && !tooltipSet) { - (Terrarum.ingame as? Ingame)?.setTooltipMessage( + (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage( if (AppLoader.IS_DEVELOPMENT_BUILD) { it.item?.name + "/Mat: ${it.item?.material?.identifier}" } @@ -300,7 +300,7 @@ class UIItemInventoryDynamicList( } if (!tooltipSet) { - (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) + (Terrarum.ingame as? TerrarumIngame)?.setTooltipMessage(null) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemPlayerInfoCell.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemPlayerInfoCell.kt index 255a65b97..b628bbccf 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemPlayerInfoCell.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemPlayerInfoCell.kt @@ -2,10 +2,7 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.blendNormal -import net.torvald.terrarum.blendScreen -import net.torvald.terrarum.fillRect +import net.torvald.terrarum.* import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.serialise.ReadWorldInfo @@ -45,7 +42,7 @@ class UIItemPlayerInfoCell( private val backColInactive = ItemSlotImageFactory.CELLCOLOUR_BLACK private val backColActive = ItemSlotImageFactory.CELLCOLOUR_BLACK_ACTIVE - private val textRow1 = (((height / 2) - Terrarum.fontGame.lineHeight) / 2).toFloat() + private val textRow1 = (((height / 2) - AppLoader.fontGame.lineHeight) / 2).toFloat() private val textRow2 = textRow1 + (height / 2) private val creationTimeStr: String @@ -69,7 +66,7 @@ class UIItemPlayerInfoCell( worldCountStr = Lang["CONTEXT_WORLD_COUNT"] + saveInfo.worldCount - worldCountStrWidth = Terrarum.fontGame.getWidth(worldCountStr) + worldCountStrWidth = AppLoader.fontGame.getWidth(worldCountStr) } override fun render(batch: SpriteBatch, camera: Camera) { @@ -109,15 +106,15 @@ class UIItemPlayerInfoCell( // name batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, saveInfo.playerName, spriteAreaWidth + spriteToNameAreaGap.toFloat(), textRow1) + AppLoader.fontGame.draw(batch, saveInfo.playerName, spriteAreaWidth + spriteToNameAreaGap.toFloat(), textRow1) // creation and modification time - Terrarum.fontGame.draw(batch, "$creationTimeStr/$modificationTimeStr", spriteAreaWidth + spriteToNameAreaGap.toFloat(), textRow2) + AppLoader.fontGame.draw(batch, "$creationTimeStr/$modificationTimeStr", spriteAreaWidth + spriteToNameAreaGap.toFloat(), textRow2) // world count - Terrarum.fontGame.draw(batch, worldCountStr, width - (edgeGap + worldCountStrWidth).toFloat(), textRow1) + AppLoader.fontGame.draw(batch, worldCountStr, width - (edgeGap + worldCountStrWidth).toFloat(), textRow1) // wallet val walletStr = "ยค " + (ingamePlayer?.inventory?.wallet ?: saveInfo.playerWallet) - val walletStrWidth = Terrarum.fontGame.getWidth(walletStr) - Terrarum.fontGame.draw(batch, walletStr, width - (edgeGap + walletStrWidth).toFloat(), textRow2) + val walletStrWidth = AppLoader.fontGame.getWidth(walletStr) + AppLoader.fontGame.draw(batch, walletStr, width - (edgeGap + walletStrWidth).toFloat(), textRow2) */ } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemSavegameInfoCell.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemSavegameInfoCell.kt index 59b256408..442b7f6e7 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemSavegameInfoCell.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemSavegameInfoCell.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.Terrarum import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UIItem @@ -24,7 +25,7 @@ class UIItemSavegameInfoCell( override var oldPosX = posX override var oldPosY = posY - override val height: Int = Terrarum.fontGame.lineHeight.toInt() * 2 + override val height: Int = AppLoader.fontGame.lineHeight.toInt() * 2 override fun render(batch: SpriteBatch, camera: Camera) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIPaletteSelector.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIPaletteSelector.kt index 84dbbb716..e5d5d9d69 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIPaletteSelector.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIPaletteSelector.kt @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.blendNormal import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.fillRect @@ -26,7 +26,7 @@ class UIPaletteSelector(val parent: BuildingMaker) : UICanvas() { val LINE_HEIGHT = 24 val TEXT_OFFSETX = 3f - val TEXT_OFFSETY = (LINE_HEIGHT - Terrarum.fontGame.lineHeight) / 2f + val TEXT_OFFSETY = (LINE_HEIGHT - AppLoader.fontGame.lineHeight) / 2f fun mouseOnTitleBar() = relativeMouseX in 0 until width && relativeMouseY in 0 until LINE_HEIGHT @@ -78,7 +78,7 @@ class UIPaletteSelector(val parent: BuildingMaker) : UICanvas() { // draw "Pal." batch.color = UINSMenu.DEFAULT_TITLETEXTCOL - Terrarum.fontGame.draw(batch, titleText, TEXT_OFFSETX, TEXT_OFFSETY) + AppLoader.fontGame.draw(batch, titleText, TEXT_OFFSETX, TEXT_OFFSETY) // draw background batch.color = CELLCOLOUR_BLACK @@ -89,7 +89,7 @@ class UIPaletteSelector(val parent: BuildingMaker) : UICanvas() { // TODO carve the overlap batch.draw(ItemCodex.getItemImage(back), 14f, 41f) batch.draw(ItemCodex.getItemImage(fore), 6f, 33f) - Terrarum.fontSmallNumbers.draw(batch, fore.toString(), 3f, 61f) + AppLoader.fontSmallNumbers.draw(batch, fore.toString(), 3f, 61f) // draw swap icon batch.color = Color.WHITE diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt index c6f5d07a4..7c377f483 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewBuildingMaker.kt @@ -2,12 +2,11 @@ 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.AppLoader 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 /** @@ -35,9 +34,9 @@ class UIProxyNewBuildingMaker : UICanvas() { override fun endOpening(delta: Float) { val ingame = BuildingMaker(Terrarum.batch) - Terrarum.ingame = ingame + Terrarum.setCurrentIngameInstance(ingame) LoadScreen.screenToLoad = ingame - Terrarum.setScreen(LoadScreen) + AppLoader.setScreen(LoadScreen) } override fun endClosing(delta: Float) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt index c32edf3c4..b0821b5d4 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIProxyNewRandomGame.kt @@ -3,10 +3,12 @@ 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.AppLoader +import net.torvald.terrarum.AppLoader.printdbg 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.modulebasegame.TerrarumIngame import net.torvald.terrarum.ui.UICanvas /** @@ -32,14 +34,17 @@ class UIProxyNewRandomGame : UICanvas() { } 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 + printdbg(this, "endOpening") - Terrarum.ingame = ingame + + val ingame = TerrarumIngame(AppLoader.batch) + ingame.gameLoadInfoPayload = TerrarumIngame.NewWorldParameters(2400, 800, HQRNG().nextLong()) + //ingame.gameLoadInfoPayload = Ingame.NewWorldParameters(8192, 2048, 0x51621DL) + ingame.gameLoadMode = TerrarumIngame.GameLoadMode.CREATE_NEW + + Terrarum.setCurrentIngameInstance(ingame) LoadScreen.screenToLoad = ingame - Terrarum.setScreen(LoadScreen) + AppLoader.setScreen(LoadScreen) } override fun endClosing(delta: Float) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt index e6fca1868..cdef3ec0c 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt @@ -3,12 +3,13 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.ui.UICanvas /** @@ -21,15 +22,15 @@ class UIQuickslotBar : UICanvas() { private val gutter = 10 - 6 // do -6 to get a gutter size of not-enlarged cells override var width: Int = cellSize * SLOT_COUNT + gutter * (SLOT_COUNT - 1) // 452 - override var height: Int = ItemSlotImageFactory.slotImage.tileH + 4 + Terrarum.fontGame.lineHeight.toInt() + override var height: Int = ItemSlotImageFactory.slotImage.tileH + 4 + AppLoader.fontGame.lineHeight.toInt() /** * In milliseconds */ override var openCloseTime: Second = COMMON_OPEN_CLOSE private var selection: Int - get() = (Terrarum.ingame!! as Ingame).actorNowPlaying?.actorValue?.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL) ?: 0 - set(value) { (Terrarum.ingame!! as Ingame).actorNowPlaying?.actorValue?.set(AVKey.__PLAYER_QUICKSLOTSEL, value.fmod(SLOT_COUNT)) } + get() = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying?.actorValue?.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL) ?: 0 + set(value) { (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying?.actorValue?.set(AVKey.__PLAYER_QUICKSLOTSEL, value.fmod(SLOT_COUNT)) } companion object { @@ -47,7 +48,7 @@ class UIQuickslotBar : UICanvas() { override fun renderUI(batch: SpriteBatch, camera: Camera) { for (i in 0..SLOT_COUNT - 1) { - val item = ItemCodex[(Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] + val item = ItemCodex[(Terrarum.ingame!! as TerrarumIngame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] val image = if (i == selection) ItemSlotImageFactory.produceLarge(false, (i + 1) % SLOT_COUNT, item) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt index f8dc767bd..ebced6c23 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt @@ -5,6 +5,7 @@ import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.AppLoader.printdbgerr import net.torvald.terrarum.QNDTreeNode import net.torvald.terrarum.Terrarum @@ -299,6 +300,6 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode) : UICanvas() { val remoConWidth = 304 fun getRemoConHeight(menu: ArrayList) = DEFAULT_LINE_HEIGHT * menu.size.plus(1) fun getRemoConHeight(menu: Array) = DEFAULT_LINE_HEIGHT * menu.size.plus(1) - val menubarOffY: Int; get() = Terrarum.HEIGHT / 2 - (Terrarum.fontGame.lineHeight * 1.5).toInt() + val menubarOffY: Int; get() = Terrarum.HEIGHT / 2 - (AppLoader.fontGame.lineHeight * 1.5).toInt() } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt index fae5b3478..458f3f355 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt @@ -6,7 +6,7 @@ package net.torvald.terrarum.modulebasegame.ui val remoConWidth = 240 fun getRemoConHeight(menu: ArrayList) = 36 * menu.size.plus(1) fun getRemoConHeight(menu: Array) = 36 * menu.size.plus(1) - val menubarOffY: Int; get() = Terrarum.HEIGHT / 2 - (Terrarum.fontGame.lineHeight * 1.5).toInt() + val menubarOffY: Int; get() = Terrarum.HEIGHT / 2 - (AppLoader.fontGame.lineHeight * 1.5).toInt() } @@ -83,7 +83,7 @@ package net.torvald.terrarum.modulebasegame.ui (Terrarum.ingame!! as Ingame).gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) (Terrarum.ingame!! as Ingame).gameLoadMode = Ingame.GameLoadMode.CREATE_NEW LoadScreen.screenToLoad = (Terrarum.ingame!! as Ingame) - Terrarum.setScreen(LoadScreen) + AppLoader.setScreen(LoadScreen) } @@ -114,7 +114,7 @@ package net.torvald.terrarum.modulebasegame.ui val maker = BuildingMaker(Terrarum.batch) Terrarum.ingame = maker - Terrarum.setScreen(maker) + AppLoader.setScreen(maker) } } } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt index 24cc21d86..0d7086805 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.ui.UICanvas @@ -20,7 +21,7 @@ class UITooltip : UICanvas() { msgWidth = font.getWidth(value) } - private val font = Terrarum.fontGame + private val font = AppLoader.fontGame private var msgWidth = 0 val textMarginX = 4 diff --git a/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt b/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt index c7ba8ec1a..504b4f317 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/uiQuickslotPie.kt @@ -8,7 +8,7 @@ import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.COMMON_OPEN_CLOSE import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.SLOT_COUNT import net.torvald.terrarum.ui.UICanvas @@ -40,8 +40,8 @@ class uiQuickslotPie : UICanvas() { var selection: Int = -1 override fun updateUI(delta: Float) { - if (selection >= 0 && (Terrarum.ingame!! as Ingame).actorNowPlaying != null) - (Terrarum.ingame!! as Ingame).actorNowPlaying!!.actorValue[AVKey.__PLAYER_QUICKSLOTSEL] = + if (selection >= 0 && (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying != null) + (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying!!.actorValue[AVKey.__PLAYER_QUICKSLOTSEL] = selection % slotCount @@ -63,7 +63,7 @@ class uiQuickslotPie : UICanvas() { override fun renderUI(batch: SpriteBatch, camera: Camera) { // draw radial thingies for (i in 0..slotCount - 1) { - val item = ItemCodex[(Terrarum.ingame!! as Ingame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] + val item = ItemCodex[(Terrarum.ingame!! as TerrarumIngame).actorNowPlaying?.inventory?.getQuickslot(i)?.item] // set position val angle = Math.PI * 2.0 * (i.toDouble() / slotCount) + Math.PI // 180 deg monitor-wise diff --git a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt index 18216e90b..a406d11f9 100644 --- a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt @@ -12,7 +12,7 @@ import net.torvald.terrarum.* import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.modulebasegame.RNGConsumer import net.torvald.terrarum.modulebasegame.gameactors.ParticleMegaRain @@ -96,7 +96,7 @@ internal object WeatherMixer : RNGConsumer { // test rain toggled by F2 - if (KeyToggler.isOn(Input.Keys.F2) && Terrarum.ingame is Ingame) { + if (KeyToggler.isOn(Input.Keys.F2) && Terrarum.ingame is TerrarumIngame) { val playerPosX = player.hitbox.centeredX val playerPosY = player.hitbox.centeredY kotlin.repeat(7) { @@ -104,7 +104,7 @@ internal object WeatherMixer : RNGConsumer { playerPosX + HQRNG().nextInt(Terrarum.WIDTH) - Terrarum.HALFW, playerPosY - Terrarum.HEIGHT ) - (Terrarum.ingame!! as Ingame).addParticle(rainParticle) + (Terrarum.ingame!! as TerrarumIngame).addParticle(rainParticle) } //globalLightNow.set(getGlobalLightOfTime((Terrarum.ingame!!.world).time.todaySeconds).mul(0.3f, 0.3f, 0.3f, 0.58f)) } diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt index ae5db8e87..0909023fe 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt @@ -4,9 +4,9 @@ import com.jme3.math.FastMath import com.sudoplay.joise.Joise import com.sudoplay.joise.module.* import net.torvald.random.HQRNG +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.LoadScreen -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.concurrent.ThreadParallel @@ -774,14 +774,14 @@ object WorldGenerator { } private fun processNoiseLayers(noiseRecords: Array) { - if (Terrarum.MULTITHREAD) { + if (AppLoader.MULTITHREAD) { // set up indices - for (i in 0 until Terrarum.THREADS) { + for (i in 0 until AppLoader.THREADS) { ThreadParallel.map( i, "SampleJoiseMap", ThreadProcessNoiseLayers( - HEIGHT.toFloat().div(Terrarum.THREADS).times(i).roundInt(), - HEIGHT.toFloat().div(Terrarum.THREADS).times(i.plus(1)).roundInt() - 1, + HEIGHT.toFloat().div(AppLoader.THREADS).times(i).roundInt(), + HEIGHT.toFloat().div(AppLoader.THREADS).times(i.plus(1)).roundInt() - 1, noiseRecords ) ) diff --git a/src/net/torvald/terrarum/swingapp/IMStringReader.kt b/src/net/torvald/terrarum/swingapp/IMStringReader.kt index 5648649ac..26bdd828f 100644 --- a/src/net/torvald/terrarum/swingapp/IMStringReader.kt +++ b/src/net/torvald/terrarum/swingapp/IMStringReader.kt @@ -1,10 +1,13 @@ package net.torvald.terrarum.swingapp -import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.langpack.Lang import java.awt.BorderLayout import java.awt.FlowLayout -import java.awt.event.* +import java.awt.event.KeyEvent +import java.awt.event.KeyListener +import java.awt.event.MouseEvent +import java.awt.event.MouseListener import javax.swing.* @@ -42,7 +45,7 @@ class IMStringReader(feedInput: (String) -> Unit, message: String? = null) : JFr this.title = labelTitle defaultCloseOperation = JFrame.DISPOSE_ON_CLOSE - Terrarum.pause() + AppLoader.getINSTANCE().pause() buttonOkay.addMouseListener(object : MouseListener { override fun mouseEntered(e: MouseEvent?) { } @@ -52,7 +55,7 @@ class IMStringReader(feedInput: (String) -> Unit, message: String? = null) : JFr override fun mousePressed(e: MouseEvent?) { userInput = inputArea.text isVisible = false - Terrarum.resume() + AppLoader.getINSTANCE().resume() feedInput(userInput) @@ -68,7 +71,7 @@ class IMStringReader(feedInput: (String) -> Unit, message: String? = null) : JFr override fun mousePressed(e: MouseEvent?) { userInput = ""//null isVisible = false - Terrarum.resume() + AppLoader.getINSTANCE().resume() dispose() } @@ -80,7 +83,7 @@ class IMStringReader(feedInput: (String) -> Unit, message: String? = null) : JFr override fun keyPressed(e: KeyEvent?) { userInput = inputArea.text isVisible = false - Terrarum.resume() + AppLoader.getINSTANCE().resume() feedInput(userInput) diff --git a/src/net/torvald/terrarum/tests/NoiseGenerator.kt b/src/net/torvald/terrarum/tests/NoiseGenerator.kt index 6eee0a34f..abaf7a97e 100644 --- a/src/net/torvald/terrarum/tests/NoiseGenerator.kt +++ b/src/net/torvald/terrarum/tests/NoiseGenerator.kt @@ -22,7 +22,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.concurrent.BlockingThreadPool import net.torvald.terrarum.concurrent.sliceEvenly import net.torvald.terrarum.inUse -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.roundInt import kotlin.math.absoluteValue @@ -100,7 +100,7 @@ class NoiseGenerator : ScreenAdapter() { private var timerFired = false override fun render(delta: Float) { - Gdx.graphics.setTitle(Ingame.getCanonicalTitle()) + Gdx.graphics.setTitle(TerrarumIngame.getCanonicalTitle()) updateTestGovernor(delta) @@ -138,7 +138,7 @@ class NoiseGenerator : ScreenAdapter() { batch.draw(texture, 0f, 0f) batch.color = Color.CYAN - Terrarum.fontGame.draw(batch, "Tests: $totalTestsDone / ${testSets.size * samplingCount}", 10f, 10f) + AppLoader.fontGame.draw(batch, "Tests: $totalTestsDone / ${testSets.size * samplingCount}", 10f, 10f) } } diff --git a/src/net/torvald/terrarum/tests/UITestPad1.kt b/src/net/torvald/terrarum/tests/UITestPad1.kt index fcedbe9c6..ae6c38a1a 100644 --- a/src/net/torvald/terrarum/tests/UITestPad1.kt +++ b/src/net/torvald/terrarum/tests/UITestPad1.kt @@ -10,7 +10,7 @@ import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShaderProgram import net.torvald.terrarum.* -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.ui.UINSMenu /** @@ -85,7 +85,7 @@ class UITestPad1 : ScreenAdapter() { var _dct = 0f override fun render(delta: Float) { - Gdx.graphics.setTitle(Ingame.getCanonicalTitle()) + Gdx.graphics.setTitle(TerrarumIngame.getCanonicalTitle()) // UPDATE diff --git a/src/net/torvald/terrarum/tests/UnsafeTest.kt b/src/net/torvald/terrarum/tests/UnsafeTest.kt index 449953baa..7f237439f 100644 --- a/src/net/torvald/terrarum/tests/UnsafeTest.kt +++ b/src/net/torvald/terrarum/tests/UnsafeTest.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.tests +import net.torvald.UnsafeHelper import net.torvald.terrarum.gameworld.toUint import sun.misc.Unsafe @@ -15,20 +16,32 @@ class UnsafeTest { unsafe = unsafeConstructor.newInstance() } - private val memsize = 2048L // must be big enough value so that your OS won't always return zero-filled pieces + private val memsize = 512L // must be big enough value so that your OS won't always return zero-filled pieces fun main() { - val ptr = unsafe.allocateMemory(memsize) + var ptr = unsafe.allocateMemory(memsize) printDump(ptr) unsafe.setMemory(ptr, memsize, 0x00.toByte()) printDump(ptr) - for (k in 0 until memsize step 4) { - unsafe.putInt(ptr + k, 0xcafebabe.toInt()) + for (k in 0 until 13) { + unsafe.putByte(ptr + k, (-1 - k).toByte()) } printDump(ptr) + // test shingled memory copy -- how would it work out? + UnsafeHelper.memcpy(ptr, ptr + 3L, 13L) + + printDump(ptr) + + + println(ptr) + ptr = unsafe.reallocateMemory(ptr, 256L) + println(ptr) + + + // that's all for today! unsafe.freeMemory(ptr) } diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index eda960880..8e1416951 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -10,8 +10,8 @@ import net.torvald.terrarum.Terrarum.mouseTileY import net.torvald.terrarum.controller.TerrarumController import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.imagefont.TinyAlphNum -import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.IngameRenderer +import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory import net.torvald.terrarum.worlddrawer.CreateTileAtlas @@ -40,7 +40,7 @@ class BasicDebugInfoWindow : UICanvas() { private val world: GameWorld? get() = Terrarum.ingame?.world private val world2: GameWorldExtension? - get() = Terrarum.ingame?.world as GameWorldExtension? + get() = Terrarum.ingame?.world as? GameWorldExtension? override fun updateUI(delta: Float) { @@ -179,8 +179,8 @@ class BasicDebugInfoWindow : UICanvas() { //printLineColumn(batch, 2, 2, "Env colour temp $ccG" + FeaturesDrawer.colTemp) if (world != null) { - printLineColumn(batch, 2, 5, "Time $ccG${world2!!.worldTime.todaySeconds.toString().padStart(5, '0')}" + - " (${world2!!.worldTime.getFormattedTime()})") + printLineColumn(batch, 2, 5, "Time $ccG${world2?.worldTime?.todaySeconds.toString().padStart(5, '0')}" + + " (${world2?.worldTime?.getFormattedTime()})") } if (player != null) { @@ -189,14 +189,14 @@ class BasicDebugInfoWindow : UICanvas() { printLineColumn(batch, 2, 7, "noClip $ccG${player.isNoClip}") } - drawHistogram(batch, LightmapRenderer.histogram, + /*drawHistogram(batch, LightmapRenderer.histogram, Terrarum.WIDTH - histogramW - TinyAlphNum.W * 2, Terrarum.HEIGHT - histogramH - TinyAlphNum.H * 4 - ) + )*/ // histogram building is currently bugged batch.color = Color.WHITE - val gamepad = (Terrarum.ingame as? Ingame)?.ingameController?.gamepad + val gamepad = (Terrarum.ingame as? TerrarumIngame)?.ingameController?.gamepad if (gamepad != null) { drawGamepadAxis(gamepad, batch, gamepad.getAxis(AppLoader.getConfigInt("gamepadaxislx")), @@ -211,20 +211,20 @@ class BasicDebugInfoWindow : UICanvas() { */ // memory pressure - Terrarum.fontSmallNumbers.draw(batch, "${ccY}MEM ", (Terrarum.WIDTH - 23 * TinyAlphNum.W - 2).toFloat(), line(1)) + AppLoader.fontSmallNumbers.draw(batch, "${ccY}MEM ", (Terrarum.WIDTH - 23 * TinyAlphNum.W - 2).toFloat(), line(1)) // thread count - Terrarum.fontSmallNumbers.draw(batch, "${ccY}CPUs${if (Terrarum.MULTITHREAD) ccG else ccR}${Terrarum.THREADS.toString().padStart(2, ' ')}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}CPUs${if (AppLoader.MULTITHREAD) ccG else ccR}${AppLoader.THREADS.toString().padStart(2, ' ')}", (Terrarum.WIDTH - 2 - 8 * TinyAlphNum.W).toFloat(), line(2)) // memory texts - Terrarum.fontSmallNumbers.draw(batch, "${Terrarum.memJavaHeap}M", + AppLoader.fontSmallNumbers.draw(batch, "${Terrarum.memJavaHeap}M", (Terrarum.WIDTH - 19 * TinyAlphNum.W - 2).toFloat(), line(1)) - Terrarum.fontSmallNumbers.draw(batch, "/${Terrarum.memNativeHeap}M/", + AppLoader.fontSmallNumbers.draw(batch, "/${Terrarum.memNativeHeap}M/", (Terrarum.WIDTH - 14 * TinyAlphNum.W - 2).toFloat(), line(1)) - Terrarum.fontSmallNumbers.draw(batch, "${Terrarum.memXmx}M", + AppLoader.fontSmallNumbers.draw(batch, "${Terrarum.memXmx}M", (Terrarum.WIDTH - 7 * TinyAlphNum.W - 2).toFloat(), line(1)) // FPS count - Terrarum.fontSmallNumbers.draw(batch, "${ccY}FPS${ccG}${Gdx.graphics.framesPerSecond.toString().padStart(3, ' ')}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}FPS${ccG}${Gdx.graphics.framesPerSecond.toString().padStart(3, ' ')}", (Terrarum.WIDTH - 3 - 15 * TinyAlphNum.W).toFloat(), line(2)) /** @@ -232,21 +232,21 @@ class BasicDebugInfoWindow : UICanvas() { */ if (ingame != null) { - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Actors total $ccG${ingame!!.actorContainerActive.size + ingame!!.actorContainerInactive.size}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}Actors total $ccG${ingame!!.actorContainerActive.size + ingame!!.actorContainerInactive.size}", TinyAlphNum.W * 2f, Terrarum.HEIGHT - TinyAlphNum.H * 2f) - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Active $ccG${ingame!!.actorContainerActive.size}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}Active $ccG${ingame!!.actorContainerActive.size}", (TinyAlphNum.W * 2 + 17 * 8).toFloat(), Terrarum.HEIGHT - TinyAlphNum.H * 2f) - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Dormant $ccG${ingame!!.actorContainerInactive.size}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}Dormant $ccG${ingame!!.actorContainerInactive.size}", (TinyAlphNum.W * 2 + 28 * 8).toFloat(), Terrarum.HEIGHT - TinyAlphNum.H * 2f) - if (ingame is Ingame) { - Terrarum.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${(ingame as Ingame).particlesActive}", + if (ingame is TerrarumIngame) { + AppLoader.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${(ingame as TerrarumIngame).particlesActive}", (TinyAlphNum.W * 2 + 41 * 8).toFloat(), Terrarum.HEIGHT - TinyAlphNum.H * 2f) } } - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Actors rendering $ccG${IngameRenderer.renderingActorsCount}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}Actors rendering $ccG${IngameRenderer.renderingActorsCount}", TinyAlphNum.W * 2f, Terrarum.HEIGHT - TinyAlphNum.H * 3f) - Terrarum.fontSmallNumbers.draw(batch, "${ccY}UIs rendering $ccG${IngameRenderer.renderingUIsCount}", + AppLoader.fontSmallNumbers.draw(batch, "${ccY}UIs rendering $ccG${IngameRenderer.renderingUIsCount}", TinyAlphNum.W * 2f + (21 * 8), Terrarum.HEIGHT - TinyAlphNum.H * 3f) /** @@ -254,7 +254,7 @@ class BasicDebugInfoWindow : UICanvas() { */ // processor and renderer - Terrarum.fontSmallNumbers.draw(batch, "$ccY$totalHardwareName", + AppLoader.fontSmallNumbers.draw(batch, "$ccY$totalHardwareName", (Terrarum.WIDTH - (totalHardwareName.length + 2) * TinyAlphNum.W).toFloat(), Terrarum.HEIGHT - TinyAlphNum.H * 2f) } @@ -263,13 +263,13 @@ class BasicDebugInfoWindow : UICanvas() { private val totalHardwareName = "$processorName $rendererName" private fun printLine(batch: SpriteBatch, l: Int, s: String) { - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, s, TinyAlphNum.W * 2f, line(l) ) } private fun printLineColumn(batch: SpriteBatch, col: Int, row: Int, s: String) { - Terrarum.fontSmallNumbers.draw(batch, + AppLoader.fontSmallNumbers.draw(batch, s, (TinyAlphNum.W * 2f + column(col)), line(row) ) } @@ -293,9 +293,9 @@ class BasicDebugInfoWindow : UICanvas() { batch.color = uiColour batch.fillRect(x.toFloat(), y.toFloat(), w.plus(1), h) batch.color = Color.GRAY - Terrarum.fontSmallNumbers.draw(batch, "0", x.toFloat(), y.toFloat() + h + 2) - Terrarum.fontSmallNumbers.draw(batch, "255", x.toFloat() + w + 1 - 8 * 3, y.toFloat() + h + 2) - Terrarum.fontSmallNumbers.draw(batch, "Histogramme", x + w / 2 - 5.5f * 8, y.toFloat() + h + 2) + AppLoader.fontSmallNumbers.draw(batch, "0", x.toFloat(), y.toFloat() + h + 2) + AppLoader.fontSmallNumbers.draw(batch, "255", x.toFloat() + w + 1 - 8 * 3, y.toFloat() + h + 2) + AppLoader.fontSmallNumbers.draw(batch, "Histogramme", x + w / 2 - 5.5f * 8, y.toFloat() + h + 2) blendScreen(batch) for (c in 0..3) { @@ -342,7 +342,7 @@ class BasicDebugInfoWindow : UICanvas() { } batch.begin() - Terrarum.fontSmallNumbers.draw(batch, gamepad.getName(), Terrarum.WIDTH - (gamepad.getName().length + 2f) * TinyAlphNum.W, uiY.toFloat() + h + 2) + AppLoader.fontSmallNumbers.draw(batch, gamepad.getName(), Terrarum.WIDTH - (gamepad.getName().length + 2f) * TinyAlphNum.W, uiY.toFloat() + h + 2) } diff --git a/src/net/torvald/terrarum/ui/ConsoleWindow.kt b/src/net/torvald/terrarum/ui/ConsoleWindow.kt index a61bf4b45..03008dc28 100644 --- a/src/net/torvald/terrarum/ui/ConsoleWindow.kt +++ b/src/net/torvald/terrarum/ui/ConsoleWindow.kt @@ -4,13 +4,13 @@ import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.util.HistoryArray -import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.CommandInterpreter import net.torvald.terrarum.fillRect +import net.torvald.terrarum.langpack.Lang +import net.torvald.util.HistoryArray /** @@ -58,12 +58,12 @@ class ConsoleWindow : UICanvas() { batch.fillRect(drawOffX, drawOffY, width.toFloat(), LINE_HEIGHT.toFloat()) val input = commandInputPool!!.toString() - val inputDrawWidth = Terrarum.fontGame.getWidth(input) - val inputDrawHeight = Terrarum.fontGame.lineHeight + val inputDrawWidth = AppLoader.fontGame.getWidth(input) + val inputDrawHeight = AppLoader.fontGame.lineHeight // text and cursor batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, input, 1f + drawOffX, drawOffY) + AppLoader.fontGame.draw(batch, input, 1f + drawOffX, drawOffY) batch.color = Color(0x7f7f7f_ff) batch.fillRect(inputDrawWidth.toFloat() + drawOffX + 1, drawOffY, 2f, inputDrawHeight) @@ -74,7 +74,7 @@ class ConsoleWindow : UICanvas() { // messages for (i in 0..MESSAGES_DISPLAY_COUNT - 1) { val message = messages[messageDisplayPos + i] - Terrarum.fontGame.draw(batch, message, 1f + drawOffX, (LINE_HEIGHT * (i + 1)).toFloat() + drawOffY) + AppLoader.fontGame.draw(batch, message, 1f + drawOffX, (LINE_HEIGHT * (i + 1)).toFloat() + drawOffY) } } @@ -181,7 +181,7 @@ class ConsoleWindow : UICanvas() { commandInputPool = StringBuilder() if (Authenticator.b()) { - sendMessage("${Terrarum.NAME} ${AppLoader.getVERSION_STRING()}") + sendMessage("${AppLoader.GAME_NAME} ${AppLoader.getVERSION_STRING()}") sendMessage(Lang["DEV_MESSAGE_CONSOLE_CODEX"]) } } diff --git a/src/net/torvald/terrarum/ui/UIHandler.kt b/src/net/torvald/terrarum/ui/UIHandler.kt index 08c43c312..8d5cd6ef8 100644 --- a/src/net/torvald/terrarum/ui/UIHandler.kt +++ b/src/net/torvald/terrarum/ui/UIHandler.kt @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.utils.Disposable import net.torvald.terrarum.gamecontroller.KeyToggler -import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.TerrarumIngame /** * UIHandler is a handler for UICanvas. It opens/closes the attached UI, moves the "window" (or "canvas") @@ -279,7 +279,7 @@ class UIHandler(//var UI: UICanvas, } fun setCameraPosition(batch: SpriteBatch, camera: Camera, newX: Float, newY: Float) { - Ingame.setCameraPosition(batch, camera, newX, newY) + TerrarumIngame.setCameraPosition(batch, camera, newX, newY) } fun mouseMoved(uiItems: List, screenX: Int, screenY: Int): Boolean { diff --git a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt b/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt index bb5916fab..b6b2695aa 100644 --- a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt +++ b/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt @@ -3,8 +3,8 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.ModMgr -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blendNormal import net.torvald.terrarum.floor @@ -20,9 +20,9 @@ class UIItemModuleInfoCell( override var oldPosX = posX override var oldPosY = posY - override val height: Int = Terrarum.fontGame.lineHeight.toInt() * 2 + override val height: Int = AppLoader.fontGame.lineHeight.toInt() * 2 - private val numberAreaWidth = Terrarum.fontSmallNumbers.W * 3 + 4 + private val numberAreaWidth = AppLoader.fontSmallNumbers.W * 3 + 4 override fun render(batch: SpriteBatch, camera: Camera) { blendNormal(batch) @@ -32,53 +32,53 @@ class UIItemModuleInfoCell( // print load order index batch.color = Color(0xccccccff.toInt()) - var strlen = Terrarum.fontSmallNumbers.getWidth(modInfo.order.toString()) - Terrarum.fontSmallNumbers.draw(batch, + var strlen = AppLoader.fontSmallNumbers.getWidth(modInfo.order.toString()) + AppLoader.fontSmallNumbers.draw(batch, modInfo.order.toString(), posX + (numberAreaWidth - strlen).div(2f).floor(), - posY + (height - Terrarum.fontSmallNumbers.H).div(2f).floor() + posY + (height - AppLoader.fontSmallNumbers.H).div(2f).floor() ) // print module name batch.color = Color.WHITE - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, "${modInfo.properName} (${modInfo.version})", posX + numberAreaWidth.toFloat(), posY.toFloat() ) // print author name - strlen = Terrarum.fontGame.getWidth(modInfo.author) - Terrarum.fontGame.draw(batch, + strlen = AppLoader.fontGame.getWidth(modInfo.author) + AppLoader.fontGame.draw(batch, modInfo.author, posX + width - strlen.toFloat(), posY.toFloat() ) // print description - Terrarum.fontGame.draw(batch, + AppLoader.fontGame.draw(batch, modInfo.description, posX + numberAreaWidth.toFloat(), - posY + Terrarum.fontGame.lineHeight + posY + AppLoader.fontGame.lineHeight ) // print releasedate - strlen = Terrarum.fontGame.getWidth(modInfo.releaseDate) - Terrarum.fontGame.draw(batch, + strlen = AppLoader.fontGame.getWidth(modInfo.releaseDate) + AppLoader.fontGame.draw(batch, modInfo.releaseDate, posX + width - strlen.toFloat(), - posY + Terrarum.fontGame.lineHeight + posY + AppLoader.fontGame.lineHeight ) } else { batch.color = Color(0xff8080_ff.toInt()) val str = "InternalError: no such module: '$moduleName'" - val strlen = Terrarum.fontSmallNumbers.getWidth(str) - Terrarum.fontSmallNumbers.draw(batch, + val strlen = AppLoader.fontSmallNumbers.getWidth(str) + AppLoader.fontSmallNumbers.draw(batch, str, posX + (width - numberAreaWidth - strlen).div(2f).floor() + numberAreaWidth, - posY + (height - Terrarum.fontSmallNumbers.H).div(2f).floor() + posY + (height - AppLoader.fontSmallNumbers.H).div(2f).floor() ) } } diff --git a/src/net/torvald/terrarum/ui/UIItemTextArea.kt b/src/net/torvald/terrarum/ui/UIItemTextArea.kt index 19c878ea4..985dbe855 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextArea.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextArea.kt @@ -2,7 +2,7 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.floor import net.torvald.terrarum.ui.UIItemTextButton.Companion.Alignment @@ -13,7 +13,7 @@ class UIItemTextArea( override val width: Int, override val height: Int, val lineGap: Int = 0, - val lineCount: Int = ((height + lineGap) / Terrarum.fontGame.lineHeight).toInt(), + val lineCount: Int = ((height + lineGap) / AppLoader.fontGame.lineHeight).toInt(), val align: Alignment = Alignment.LEFT ) : UIItem(parentUI) { @@ -40,12 +40,12 @@ class UIItemTextArea( for (i in scrollPos until minOf(lineCount + scrollPos, entireText.size)) { val yPtr = i - scrollPos - val textWidth = Terrarum.fontGame.getWidth(entireText[i]) + val textWidth = AppLoader.fontGame.getWidth(entireText[i]) when (align) { - Alignment.LEFT -> Terrarum.fontGame.draw(batch, entireText[i], posX.toFloat(), posY + yPtr * (Terrarum.fontGame.lineHeight + lineGap)) - Alignment.CENTRE -> Terrarum.fontGame.draw(batch, entireText[i], posX + ((width - textWidth) / 2f).floor(), posY + yPtr * (Terrarum.fontGame.lineHeight + lineGap)) - Alignment.RIGHT -> Terrarum.fontGame.draw(batch, entireText[i], posX + width - textWidth.toFloat(), posY + yPtr * (Terrarum.fontGame.lineHeight + lineGap)) + Alignment.LEFT -> AppLoader.fontGame.draw(batch, entireText[i], posX.toFloat(), posY + yPtr * (AppLoader.fontGame.lineHeight + lineGap)) + Alignment.CENTRE -> AppLoader.fontGame.draw(batch, entireText[i], posX + ((width - textWidth) / 2f).floor(), posY + yPtr * (AppLoader.fontGame.lineHeight + lineGap)) + Alignment.RIGHT -> AppLoader.fontGame.draw(batch, entireText[i], posX + width - textWidth.toFloat(), posY + yPtr * (AppLoader.fontGame.lineHeight + lineGap)) } } } diff --git a/src/net/torvald/terrarum/ui/UIItemTextButton.kt b/src/net/torvald/terrarum/ui/UIItemTextButton.kt index 18d00264c..c49d3ced0 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextButton.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextButton.kt @@ -3,8 +3,8 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.BlendMode -import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blendNormal import net.torvald.terrarum.fillRect import net.torvald.terrarum.langpack.Lang @@ -53,7 +53,7 @@ open class UIItemTextButton( override var oldPosY = posY companion object { - val font = Terrarum.fontGame + val font = AppLoader.fontGame val height = font.lineHeight.toInt() val defaultInactiveCol = Color.WHITE val defaultHighlightCol = Color(0x00f8ff_ff) diff --git a/src/net/torvald/terrarum/ui/UINSMenu.kt b/src/net/torvald/terrarum/ui/UINSMenu.kt index abb731255..374d44bc5 100644 --- a/src/net/torvald/terrarum/ui/UINSMenu.kt +++ b/src/net/torvald/terrarum/ui/UINSMenu.kt @@ -31,14 +31,14 @@ class UINSMenu( override var openCloseTime: Second = 0f val LINE_HEIGHT = 24 val TEXT_OFFSETX = 3f - val TEXT_OFFSETY = (LINE_HEIGHT - Terrarum.fontGame.lineHeight) / 2f + val TEXT_OFFSETY = (LINE_HEIGHT - AppLoader.fontGame.lineHeight) / 2f val CHILD_ARROW = "${0x2023.toChar()}" val tree = treeRepresentation.parseAsYamlInvokable() override var width = 0 override var height = 0 - //override var width = maxOf(minimumWidth, tree.getLevelData(1).map { Terrarum.fontGame.getWidth(it ?: "") }.max() ?: 0) + //override var width = maxOf(minimumWidth, tree.getLevelData(1).map { AppLoader.fontGame.getWidth(it ?: "") }.max() ?: 0) //override var height = LINE_HEIGHT * (tree.children.size + 1) @@ -91,8 +91,8 @@ class UINSMenu( } val listWidth = maxOf( - Terrarum.fontGame.getWidth(menuTitle), minimumWidth, - stringsFromTree.map { Terrarum.fontGame.getWidth(it) }.max() ?: 0 + AppLoader.fontGame.getWidth(menuTitle), minimumWidth, + stringsFromTree.map { AppLoader.fontGame.getWidth(it) }.max() ?: 0 ) val uiWidth = listWidth + (2 * TEXT_OFFSETX.toInt()) val listHeight = stringsFromTree.size * LINE_HEIGHT @@ -176,7 +176,7 @@ class UINSMenu( batch.color = titleTextCol blendNormal(batch) - Terrarum.fontGame.draw(batch, it.title, TEXT_OFFSETX + it.ui.posX, TEXT_OFFSETY + it.ui.posY - LINE_HEIGHT) + AppLoader.fontGame.draw(batch, it.title, TEXT_OFFSETX + it.ui.posX, TEXT_OFFSETY + it.ui.posY - LINE_HEIGHT) // draw the list batch.color = Color.WHITE diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt index f49f0ff69..920be5aae 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt @@ -74,8 +74,8 @@ object LightmapRenderer { } } - val overscan_open: Int = 40 - val overscan_opaque: Int = 10 + private const val overscan_open: Int = 40 + private const val overscan_opaque: Int = 10 // TODO resize(int, int) -aware @@ -83,7 +83,7 @@ object LightmapRenderer { var LIGHTMAP_WIDTH = (Terrarum.ingame?.ZOOM_MINIMUM ?: 1f).inv().times(Terrarum.WIDTH).div(TILE_SIZE).ceil() + overscan_open * 2 + 3 var LIGHTMAP_HEIGHT = (Terrarum.ingame?.ZOOM_MINIMUM ?: 1f).inv().times(Terrarum.HEIGHT).div(TILE_SIZE).ceil() + overscan_open * 2 + 3 - val noopMask = HashSet((LIGHTMAP_WIDTH + LIGHTMAP_HEIGHT) * 2) + private val noopMask = HashSet((LIGHTMAP_WIDTH + LIGHTMAP_HEIGHT) * 2) /** * Float value, 1.0 for 1023 @@ -99,9 +99,9 @@ object LightmapRenderer { printdbg(this, "Overscan open: $overscan_open; opaque: $overscan_opaque") } - private val AIR = Block.AIR + private const val AIR = Block.AIR - val DRAW_TILE_SIZE: Float = CreateTileAtlas.TILE_SIZE / IngameRenderer.lightmapDownsample + const val DRAW_TILE_SIZE: Float = CreateTileAtlas.TILE_SIZE / IngameRenderer.lightmapDownsample // color model related constants const val MUL = 1024 // modify this to 1024 to implement 30-bit RGB @@ -120,9 +120,17 @@ object LightmapRenderer { internal var for_x = 0 internal var for_y = 0 - - //inline fun getLightRawPos(x: Int, y: Int) = lightmap[y][x] - + /** + * @param x world coord + * @param y world coord + */ + private fun inBounds(x: Int, y: Int) = + (y - for_y_start + overscan_open in 0 until LIGHTMAP_HEIGHT && + x - for_x_start + overscan_open in 0 until LIGHTMAP_WIDTH) + /** World coord to array coord */ + private inline fun Int.convX() = this - for_x_start + overscan_open + /** World coord to array coord */ + private inline fun Int.convY() = this - for_y_start + overscan_open /** * Conventional level (multiplied by four) @@ -147,66 +155,6 @@ object LightmapRenderer { } } - /** - * @param x world coord - * @param y world coord - */ - private fun inBounds(x: Int, y: Int) = - (y - for_y_start + overscan_open in 0 until LIGHTMAP_HEIGHT && - x - for_x_start + overscan_open in 0 until LIGHTMAP_WIDTH) - /** World coord to array coord */ - private inline fun Int.convX() = this - for_x_start + overscan_open - /** World coord to array coord */ - private inline fun Int.convY() = this - for_y_start + overscan_open - - /** - * Internal level (0..1) - * - * @param x world tile coord - * @param y world tile coord - */ - // TODO in regard of "colour math against integers", return Int? - /*private fun getLightInternal(x: Int, y: Int): Cvec? { - if (y - for_y_start + overscan_open in 0 until LIGHTMAP_HEIGHT && - x - for_x_start + overscan_open in 0 until LIGHTMAP_WIDTH) { - - val ypos = y - for_y_start + overscan_open - val xpos = x - for_x_start + overscan_open - - // TODO as you can see above, we're already doing a boundary check; try using unsafe here? - return lightmap[ypos][xpos] - //return lightmap[ypos * LIGHTMAP_WIDTH + xpos] - } - - return null - }*/ - - - /** - * Converts world coord (x,y) into the lightmap index, and stores the input colour into the given list - * with given applyFun applied. - * - * Default 'applyFun' is simply storing given colour into the array. - * - * @param list The lightmap - * @param x World X coordinate - * @param y World Y coordinate - * @param colour Cvec to write - * @param applyFun A function ```foo(old_colour, given_colour)``` - */ - /*private fun setLightOf(list: Array>, x: Int, y: Int, colour: Cvec, applyFun: (Cvec, Cvec) -> Cvec = { _, c -> c }) { - if (y - for_y_start + overscan_open in 0 until LIGHTMAP_HEIGHT && - x - for_x_start + overscan_open in 0 until LIGHTMAP_WIDTH) { - - val ypos = y - for_y_start + overscan_open - val xpos = x - for_x_start + overscan_open - - // TODO as you can see above, we're already doing a boundary check; try using unsafe here? - lightmap[ypos][xpos] = applyFun.invoke(list[ypos][xpos], colour) - //list[ypos * LIGHTMAP_WIDTH + xpos] = applyFun.invoke(list[ypos * LIGHTMAP_WIDTH + xpos], colour) - } - }*/ - internal fun fireRecalculateEvent(vararg actorContainers: List?) { try { world.getTileFromTerrain(0, 0) // test inquiry @@ -395,7 +343,7 @@ object LightmapRenderer { } } - updateMessages = lightTaskArr.toTypedArray().sliceEvenly(Terrarum.THREADS) + updateMessages = lightTaskArr.toTypedArray().sliceEvenly(AppLoader.THREADS) } internal data class ThreadedLightmapUpdateMessage(val x: Int, val y: Int) @@ -650,7 +598,7 @@ object LightmapRenderer { private val colourNull = Cvec(0) private val gdxColorNull = Color(0) - private val epsilon = 1f/1024f + private const val epsilon = 1f/1024f private var _lightBufferAsTex: Texture = Texture(1, 1, Pixmap.Format.RGBA8888) @@ -719,10 +667,12 @@ object LightmapRenderer { } fun dispose() { - + _lightBufferAsTex.dispose() + lightBuffer.dispose() + lightmap.destroy() } - val lightScalingMagic = 8f + private const val lightScalingMagic = 8f /** * Subtract each channel's RGB value. @@ -732,7 +682,7 @@ object LightmapRenderer { * @param darken (0-255) per channel * @return darkened data (0-255) per channel */ - fun darkenColoured(x: Int, y: Int, darken: Cvec): Cvec { + private fun darkenColoured(x: Int, y: Int, darken: Cvec): Cvec { // use equation with magic number 8.0 // this function, when done recursively (A_x = darken(A_x-1, C)), draws exponential curve. (R^2 = 1) @@ -753,24 +703,8 @@ object LightmapRenderer { } - /** - * Darken or brighten colour by 'brighten' argument - * - * @param data Raw channel value (0-255) per channel - * @param brighten (-1.0 - 1.0) negative means darkening - * @return processed colour - */ - fun alterBrightnessUniform(data: Cvec, brighten: Float): Cvec { - return Cvec( - data.r + brighten, - data.g + brighten, - data.b + brighten, - data.a + brighten - ) - } - /** infix is removed to clarify the association direction */ - fun Cvec.maxAndAssign(other: Cvec): Cvec { + private fun Cvec.maxAndAssign(other: Cvec): Cvec { // TODO investigate: if I use assignment instead of set(), it blackens like the vector branch. --Torvald, 2019-06-07 // that was because you forgot 'this.r/g/b/a = ' part, bitch. --Torvald, 2019-06-07 this.r = if (this.r > other.r) this.r else other.r @@ -793,7 +727,7 @@ object LightmapRenderer { // TODO: float LUT lookup using linear interpolation // input: 0..1 for int 0..1023 - fun hdr(intensity: Float): Float { + private fun hdr(intensity: Float): Float { val intervalStart = (intensity * CHANNEL_MAX).floorInt() val intervalEnd = minOf(rgbHDRLookupTable.lastIndex, (intensity * CHANNEL_MAX).floorInt() + 1) @@ -839,7 +773,7 @@ object LightmapRenderer { } - val rgbHDRLookupTable = floatArrayOf( // polynomial of 6.0 please refer to work_files/HDRcurveBezierLinIntp.kts + private val rgbHDRLookupTable = floatArrayOf( // polynomial of 6.0 please refer to work_files/HDRcurveBezierLinIntp.kts 0.0000f,0.0004f,0.0020f,0.0060f,0.0100f,0.0139f,0.0179f,0.0219f,0.0259f,0.0299f,0.0338f,0.0378f,0.0418f,0.0458f,0.0497f,0.0537f, 0.0577f,0.0617f,0.0656f,0.0696f,0.0736f,0.0776f,0.0816f,0.0855f,0.0895f,0.0935f,0.0975f,0.1014f,0.1054f,0.1094f,0.1134f,0.1173f, 0.1213f,0.1253f,0.1293f,0.1332f,0.1372f,0.1412f,0.1451f,0.1491f,0.1531f,0.1571f,0.1610f,0.1650f,0.1690f,0.1730f,0.1769f,0.1809f, @@ -906,7 +840,7 @@ object LightmapRenderer { 1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f,1.0000f // isn't it beautiful? ) /** To eliminated visible edge on the gradient when 255/1023 is exceeded */ - internal fun Color.normaliseToHDR() = Color( + fun Color.normaliseToHDR() = Color( hdr(this.r.coerceIn(0f, 1f)), hdr(this.g.coerceIn(0f, 1f)), hdr(this.b.coerceIn(0f, 1f)), @@ -927,14 +861,7 @@ object LightmapRenderer { for (y in overscan_open..render_height + overscan_open + 1) { for (x in overscan_open..render_width + overscan_open + 1) { try { - //val colour = lightmap[y][x] - //val colour = lightmap[y * LIGHTMAP_WIDTH + x] - val x = x.convX() - val y = y.convY() - //reds[minOf(CHANNEL_MAX, lightmap.getR(x, y).times(MUL).floorInt())] += 1 - //greens[minOf(CHANNEL_MAX, lightmap.getG(x, y).times(MUL).floorInt())] += 1 - //blues[minOf(CHANNEL_MAX, lightmap.getB(x, y).floorInt())] += 1 - //uvs[minOf(CHANNEL_MAX, lightmap.getA(x, y).floorInt())] += 1 + // TODO } catch (e: ArrayIndexOutOfBoundsException) { } } diff --git a/work_files/graphics/gui/composer/mockup.psd b/work_files/graphics/gui/composer/mockup.psd index bac54e0ea..1cc152d9f 100644 --- a/work_files/graphics/gui/composer/mockup.psd +++ b/work_files/graphics/gui/composer/mockup.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f3a4e3071c2697c1afa74f18db2636a704f8d9307917e7cdacd2284fc6e50cd -size 479748 +oid sha256:cbbe7f9e30b765a604c6c5e230e5c4fe579abbbf53fa0eebba7f34b93756bae0 +size 861534