mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 18:14:06 +09:00
still cleaning up
Making wall item textures takes SO long
This commit is contained in:
@@ -3,6 +3,7 @@ package net.torvald.terrarum;
|
|||||||
import com.badlogic.gdx.ApplicationListener;
|
import com.badlogic.gdx.ApplicationListener;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.Screen;
|
import com.badlogic.gdx.Screen;
|
||||||
|
import com.badlogic.gdx.audio.AudioDevice;
|
||||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
||||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
||||||
import com.badlogic.gdx.graphics.*;
|
import com.badlogic.gdx.graphics.*;
|
||||||
@@ -14,6 +15,7 @@ import com.google.gson.JsonArray;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonPrimitive;
|
import com.google.gson.JsonPrimitive;
|
||||||
import net.torvald.dataclass.ArrayListMap;
|
import net.torvald.dataclass.ArrayListMap;
|
||||||
|
import net.torvald.terrarum.modulebasegame.IngameRenderer;
|
||||||
import net.torvald.terrarum.utils.JsonFetcher;
|
import net.torvald.terrarum.utils.JsonFetcher;
|
||||||
import net.torvald.terrarum.utils.JsonWriter;
|
import net.torvald.terrarum.utils.JsonWriter;
|
||||||
import net.torvald.terrarumsansbitmap.gdx.GameFontBase;
|
import net.torvald.terrarumsansbitmap.gdx.GameFontBase;
|
||||||
@@ -85,6 +87,7 @@ public class AppLoader implements ApplicationListener {
|
|||||||
/**
|
/**
|
||||||
* Default null constructor. Don't use it.
|
* Default null constructor. Don't use it.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public AppLoader() {
|
public AppLoader() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +156,7 @@ public class AppLoader implements ApplicationListener {
|
|||||||
ShaderProgram.pedantic = false;
|
ShaderProgram.pedantic = false;
|
||||||
|
|
||||||
LwjglApplicationConfiguration appConfig = new LwjglApplicationConfiguration();
|
LwjglApplicationConfiguration appConfig = new LwjglApplicationConfiguration();
|
||||||
|
appConfig.useGL30 = true;
|
||||||
appConfig.vSyncEnabled = false;
|
appConfig.vSyncEnabled = false;
|
||||||
appConfig.resizable = false;//true;
|
appConfig.resizable = false;//true;
|
||||||
//appConfig.width = 1072; // IMAX ratio
|
//appConfig.width = 1072; // IMAX ratio
|
||||||
@@ -176,6 +180,7 @@ public class AppLoader implements ApplicationListener {
|
|||||||
private OrthographicCamera camera;
|
private OrthographicCamera camera;
|
||||||
private SpriteBatch logoBatch;
|
private SpriteBatch logoBatch;
|
||||||
public static TextureRegion logo;
|
public static TextureRegion logo;
|
||||||
|
public static AudioDevice audioDevice;
|
||||||
|
|
||||||
private Color gradWhiteTop = new Color(0xf8f8f8ff);
|
private Color gradWhiteTop = new Color(0xf8f8f8ff);
|
||||||
private Color gradWhiteBottom = new Color(0xd8d8d8ff);
|
private Color gradWhiteBottom = new Color(0xd8d8d8ff);
|
||||||
@@ -228,28 +233,15 @@ public class AppLoader implements ApplicationListener {
|
|||||||
VertexAttribute.ColorUnpacked(),
|
VertexAttribute.ColorUnpacked(),
|
||||||
VertexAttribute.TexCoords(0)
|
VertexAttribute.TexCoords(0)
|
||||||
);
|
);
|
||||||
|
updateFullscreenQuad(appConfig.width, appConfig.height);
|
||||||
fullscreenQuad.setVertices(new float[]{
|
|
||||||
0f, 0f, 0f, 1f, 1f, 1f, 1f, 0f, 1f,
|
|
||||||
((float) appConfig.width), 0f, 0f, 1f, 1f, 1f, 1f, 1f, 1f,
|
|
||||||
((float) appConfig.width), ((float) appConfig.height), 0f, 1f, 1f, 1f, 1f, 1f, 0f,
|
|
||||||
0f, ((float) appConfig.height), 0f, 1f, 1f, 1f, 1f, 0f, 0f
|
|
||||||
});
|
|
||||||
fullscreenQuad.setIndices(new short[]{0, 1, 2, 2, 3, 0});
|
|
||||||
|
|
||||||
|
|
||||||
// load configs
|
|
||||||
getDefaultDirectory();
|
|
||||||
createDirs();
|
|
||||||
readConfigJson();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render() {
|
public void render() {
|
||||||
|
|
||||||
if (splashDisplayed && !postInitFired) {
|
if (splashDisplayed && !postInitFired) {
|
||||||
postInit();
|
|
||||||
postInitFired = true;
|
postInitFired = true;
|
||||||
|
postInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -347,12 +339,19 @@ public class AppLoader implements ApplicationListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
if (screen != null) screen.hide();
|
|
||||||
|
|
||||||
System.out.println("Goodbye !");
|
System.out.println("Goodbye !");
|
||||||
|
|
||||||
|
|
||||||
|
if (screen != null) {
|
||||||
|
screen.hide();
|
||||||
|
screen.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
IngameRenderer.INSTANCE.dispose();
|
||||||
|
|
||||||
|
|
||||||
// delete temp files
|
// delete temp files
|
||||||
new File("./tmp_wenquanyi.tga").delete();
|
new File("./tmp_wenquanyi.tga").delete(); // FIXME this is pretty much ad-hoc
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -368,7 +367,11 @@ public class AppLoader implements ApplicationListener {
|
|||||||
public void setScreen(Screen screen) {
|
public void setScreen(Screen screen) {
|
||||||
printdbg(this, "Changing screen to " + screen.getClass().getCanonicalName());
|
printdbg(this, "Changing screen to " + screen.getClass().getCanonicalName());
|
||||||
|
|
||||||
if (this.screen != null) this.screen.hide();
|
// this whole thing is directtly copied from com.badlogic.gdx.Game
|
||||||
|
|
||||||
|
if (this.screen != null) {
|
||||||
|
this.screen.hide();
|
||||||
|
}
|
||||||
this.screen = screen;
|
this.screen = screen;
|
||||||
if (this.screen != null) {
|
if (this.screen != null) {
|
||||||
this.screen.show();
|
this.screen.show();
|
||||||
@@ -379,6 +382,11 @@ public class AppLoader implements ApplicationListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void postInit() {
|
private void postInit() {
|
||||||
|
// load configs
|
||||||
|
getDefaultDirectory();
|
||||||
|
createDirs();
|
||||||
|
readConfigJson();
|
||||||
|
|
||||||
textureWhiteSquare = new Texture(Gdx.files.internal("assets/graphics/ortho_line_tex_2px.tga"));
|
textureWhiteSquare = new Texture(Gdx.files.internal("assets/graphics/ortho_line_tex_2px.tga"));
|
||||||
textureWhiteSquare.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
|
textureWhiteSquare.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
|
||||||
|
|
||||||
@@ -387,11 +395,15 @@ public class AppLoader implements ApplicationListener {
|
|||||||
Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest, false, 128, false
|
Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest, false, 128, false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
audioDevice = Gdx.audio.newAudioDevice(48000, false);
|
||||||
|
|
||||||
// if there is a predefined screen, open that screen after my init process
|
// if there is a predefined screen, open that screen after my init process
|
||||||
if (injectScreen != null) {
|
if (injectScreen != null) {
|
||||||
setScreen(injectScreen);
|
setScreen(injectScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printdbg(this, "PostInit done");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -623,13 +635,13 @@ public class AppLoader implements ApplicationListener {
|
|||||||
// //
|
// //
|
||||||
|
|
||||||
public static final void printdbg(Object obj, Object message) {
|
public static final void printdbg(Object obj, Object message) {
|
||||||
if (IS_DEVELOPMENT_BUILD) {
|
if (IS_DEVELOPMENT_BUILD || getConfigBoolean("forcedevbuild")) {
|
||||||
System.out.println("[" + obj.getClass().getSimpleName() + "] " + message.toString());
|
System.out.println("[" + obj.getClass().getSimpleName() + "] " + message.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final void printdbgerr(Object obj, Object message) {
|
public static final void printdbgerr(Object obj, Object message) {
|
||||||
if (IS_DEVELOPMENT_BUILD) {
|
if (IS_DEVELOPMENT_BUILD || getConfigBoolean("forcedevbuild")) {
|
||||||
System.err.println("[" + obj.getClass().getSimpleName() + "] " + message.toString());
|
System.err.println("[" + obj.getClass().getSimpleName() + "] " + message.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ object DefaultConfig {
|
|||||||
|
|
||||||
jsonObject.addProperty("displayfps", 0) // 0: no limit, non-zero: limit
|
jsonObject.addProperty("displayfps", 0) // 0: no limit, non-zero: limit
|
||||||
jsonObject.addProperty("usevsync", true)
|
jsonObject.addProperty("usevsync", true)
|
||||||
|
jsonObject.addProperty("forcedevbuild", false)
|
||||||
|
|
||||||
|
|
||||||
jsonObject.addProperty("imtooyoungtodie", false) // no perma-death
|
jsonObject.addProperty("imtooyoungtodie", false) // no perma-death
|
||||||
@@ -75,23 +76,20 @@ object DefaultConfig {
|
|||||||
|
|
||||||
jsonObject.addProperty("pcgamepadenv", "console")
|
jsonObject.addProperty("pcgamepadenv", "console")
|
||||||
|
|
||||||
jsonObject.addProperty("safetywarning", true)
|
//jsonObject.addProperty("safetywarning", true)
|
||||||
|
|
||||||
|
|
||||||
jsonObject.addProperty("maxparticles", 768)
|
jsonObject.addProperty("maxparticles", 768)
|
||||||
|
|
||||||
|
|
||||||
jsonObject.addProperty("fullframelightupdate", false)
|
//jsonObject.addProperty("fullframelightupdate", false)
|
||||||
|
|
||||||
jsonObject.addProperty("temperatureunit", 1) // -1: american, 0: kelvin, 1: celcius
|
jsonObject.addProperty("temperatureunit", 1) // -1: american, 0: kelvin, 1: celcius
|
||||||
|
|
||||||
|
|
||||||
// "fancy" graphics settings
|
// "fancy" graphics settings
|
||||||
jsonObject.addProperty("fxdither", true)
|
jsonObject.addProperty("fxdither", true)
|
||||||
jsonObject.addProperty("fx3dlut", false)
|
//jsonObject.addProperty("fx3dlut", false)
|
||||||
|
|
||||||
|
|
||||||
jsonObject.addProperty("__debug", false)
|
|
||||||
|
|
||||||
|
|
||||||
return jsonObject
|
return jsonObject
|
||||||
|
|||||||
@@ -18,14 +18,16 @@ import net.torvald.terrarum.gameworld.fmod
|
|||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.modulebasegame.Ingame
|
import net.torvald.terrarum.modulebasegame.Ingame
|
||||||
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.*
|
import net.torvald.terrarum.modulebasegame.gameactors.HumanoidNPC
|
||||||
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
|
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
|
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
|
||||||
import net.torvald.terrarum.serialise.ReadLayerData
|
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConYaml
|
import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConYaml
|
||||||
import net.torvald.terrarum.modulebasegame.weather.WeatherMixer
|
import net.torvald.terrarum.modulebasegame.weather.WeatherMixer
|
||||||
import net.torvald.terrarum.worlddrawer.*
|
import net.torvald.terrarum.serialise.ReadLayerData
|
||||||
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
|
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
|
||||||
|
import net.torvald.terrarum.worlddrawer.LightmapRenderer
|
||||||
|
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -49,7 +51,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private var loadDone = false
|
//private var loadDone = false // not required; draw-while-loading is implemented in the AppLoader
|
||||||
|
|
||||||
private lateinit var demoWorld: GameWorldExtension
|
private lateinit var demoWorld: GameWorldExtension
|
||||||
private lateinit var cameraNodes: FloatArray // camera Y-pos
|
private lateinit var cameraNodes: FloatArray // camera Y-pos
|
||||||
@@ -128,14 +130,14 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
|
|
||||||
// construct camera nodes
|
// construct camera nodes
|
||||||
val nodeCount = 100
|
val nodeCount = 100
|
||||||
cameraNodes = kotlin.FloatArray(nodeCount, { it ->
|
cameraNodes = kotlin.FloatArray(nodeCount) { it ->
|
||||||
val tileXPos = (demoWorld.width.toFloat() * it / nodeCount).floorInt()
|
val tileXPos = (demoWorld.width.toFloat() * it / nodeCount).floorInt()
|
||||||
var travelDownCounter = 0
|
var travelDownCounter = 0
|
||||||
while (!BlockCodex[demoWorld.getTileFromTerrain(tileXPos, travelDownCounter)].isSolid) {
|
while (!BlockCodex[demoWorld.getTileFromTerrain(tileXPos, travelDownCounter)].isSolid) {
|
||||||
travelDownCounter += 4
|
travelDownCounter += 4
|
||||||
}
|
}
|
||||||
travelDownCounter * FeaturesDrawer.TILE_SIZE.toFloat()
|
travelDownCounter * FeaturesDrawer.TILE_SIZE.toFloat()
|
||||||
})
|
}
|
||||||
|
|
||||||
|
|
||||||
cameraPlayer = object : HumanoidNPC(cameraAI, born = 0, usePhysics = false, forceAssignRefID = Terrarum.PLAYER_REF_ID) {
|
cameraPlayer = object : HumanoidNPC(cameraAI, born = 0, usePhysics = false, forceAssignRefID = Terrarum.PLAYER_REF_ID) {
|
||||||
@@ -164,7 +166,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
|
|
||||||
uiContainer.add(uiMenu)
|
uiContainer.add(uiMenu)
|
||||||
|
|
||||||
loadDone = true
|
//loadDone = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -172,7 +174,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun show() {
|
override fun show() {
|
||||||
printdbg(this, "atrniartsientsarinoetsar")
|
printdbg(this, "show() called")
|
||||||
|
|
||||||
initViewPort(Terrarum.WIDTH, Terrarum.HEIGHT)
|
initViewPort(Terrarum.WIDTH, Terrarum.HEIGHT)
|
||||||
|
|
||||||
@@ -184,6 +186,10 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
|
|
||||||
|
|
||||||
worldFBO = FrameBuffer(Pixmap.Format.RGBA8888, Terrarum.WIDTH, Terrarum.HEIGHT, false)
|
worldFBO = FrameBuffer(Pixmap.Format.RGBA8888, Terrarum.WIDTH, Terrarum.HEIGHT, false)
|
||||||
|
|
||||||
|
loadThingsWhileIntroIsVisible()
|
||||||
|
|
||||||
|
printdbg(this, "show() exit")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -193,26 +199,21 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
protected val renderRate = Terrarum.renderRate
|
protected val renderRate = Terrarum.renderRate
|
||||||
|
|
||||||
override fun render(delta: Float) {
|
override fun render(delta: Float) {
|
||||||
if (!loadDone) {
|
// async update
|
||||||
loadThingsWhileIntroIsVisible()
|
updateDeltaCounter += delta
|
||||||
}
|
var updateTries = 0
|
||||||
else {
|
while (updateDeltaCounter >= renderRate) {
|
||||||
// async update
|
updateScreen(delta)
|
||||||
updateDeltaCounter += delta
|
updateDeltaCounter -= renderRate
|
||||||
var updateTries = 0
|
updateTries++
|
||||||
while (updateDeltaCounter >= renderRate) {
|
|
||||||
updateScreen(delta)
|
|
||||||
updateDeltaCounter -= renderRate
|
|
||||||
updateTries++
|
|
||||||
|
|
||||||
if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) {
|
if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) {
|
||||||
break
|
break
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// render? just do it anyway
|
|
||||||
renderScreen()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// render? just do it anyway
|
||||||
|
renderScreen()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateScreen(delta: Float) {
|
fun updateScreen(delta: Float) {
|
||||||
@@ -289,22 +290,24 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun resize(width: Int, height: Int) {
|
override fun resize(width: Int, height: Int) {
|
||||||
|
printdbg(this, "resize() called")
|
||||||
|
|
||||||
// Set up viewport when window is resized
|
// Set up viewport when window is resized
|
||||||
initViewPort(Terrarum.WIDTH, Terrarum.HEIGHT)
|
initViewPort(Terrarum.WIDTH, Terrarum.HEIGHT)
|
||||||
|
|
||||||
BlocksDrawer.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
|
||||||
LightmapRenderer.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
|
||||||
|
|
||||||
if (loadDone) {
|
// resize UI by re-creating it (!!)
|
||||||
// resize UI by re-creating it (!!)
|
uiMenu.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
||||||
uiMenu.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
// TODO I forgot what the fuck kind of hack I was talking about
|
||||||
//uiMenu.setPosition(0, UITitleRemoConRoot.menubarOffY)
|
//uiMenu.setPosition(0, UITitleRemoConRoot.menubarOffY)
|
||||||
uiMenu.setPosition(0, 0) // shitty hack. Could be:
|
uiMenu.setPosition(0, 0) // shitty hack. Could be:
|
||||||
// 1: Init code and resize code are different
|
// 1: Init code and resize code are different
|
||||||
// 2: The UI is coded shit
|
// 2: The UI is coded shit
|
||||||
}
|
|
||||||
|
|
||||||
IngameRenderer.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
IngameRenderer.resize(Terrarum.WIDTH, Terrarum.HEIGHT)
|
||||||
|
|
||||||
|
printdbg(this, "resize() exit")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun dispose() {
|
override fun dispose() {
|
||||||
|
|||||||
@@ -970,6 +970,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) {
|
|||||||
actorsRenderMiddle.forEach { it.dispose() }
|
actorsRenderMiddle.forEach { it.dispose() }
|
||||||
actorsRenderMidTop.forEach { it.dispose() }
|
actorsRenderMidTop.forEach { it.dispose() }
|
||||||
actorsRenderFront.forEach { it.dispose() }
|
actorsRenderFront.forEach { it.dispose() }
|
||||||
|
actorsRenderOverlay.forEach { it.dispose() }
|
||||||
|
|
||||||
uiAliases.forEach { it.dispose() }
|
uiAliases.forEach { it.dispose() }
|
||||||
uiAlasesPausing.forEach { it.dispose() }
|
uiAlasesPausing.forEach { it.dispose() }
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class Notification : UICanvas() {
|
|||||||
)
|
)
|
||||||
private var displayTimer = 0f
|
private var displayTimer = 0f
|
||||||
|
|
||||||
internal var message: Array<String> = Array(MessageWindow.MESSAGES_DISPLAY, { "" })
|
internal var message: Array<String> = Array(MessageWindow.MESSAGES_DISPLAY) { "" }
|
||||||
|
|
||||||
override var openCloseTime: Second = MessageWindow.OPEN_CLOSE_TIME
|
override var openCloseTime: Second = MessageWindow.OPEN_CLOSE_TIME
|
||||||
|
|
||||||
|
|||||||
@@ -4,18 +4,20 @@ import com.badlogic.gdx.Gdx
|
|||||||
import com.badlogic.gdx.graphics.*
|
import com.badlogic.gdx.graphics.*
|
||||||
import com.badlogic.gdx.graphics.glutils.ShaderProgram
|
import com.badlogic.gdx.graphics.glutils.ShaderProgram
|
||||||
import com.badlogic.gdx.math.Matrix4
|
import com.badlogic.gdx.math.Matrix4
|
||||||
import net.torvald.terrarum.gameworld.GameWorld
|
import net.torvald.terrarum.AppLoader.printdbg
|
||||||
import net.torvald.terrarum.gameworld.PairedMapLayer
|
import net.torvald.terrarum.ModMgr
|
||||||
import net.torvald.terrarum.blockproperties.Block
|
import net.torvald.terrarum.blockproperties.Block
|
||||||
import net.torvald.terrarum.blockproperties.BlockCodex
|
import net.torvald.terrarum.blockproperties.BlockCodex
|
||||||
import net.torvald.terrarum.*
|
|
||||||
import net.torvald.terrarum.AppLoader.printdbg
|
|
||||||
import net.torvald.terrarum.ceilInt
|
import net.torvald.terrarum.ceilInt
|
||||||
|
import net.torvald.terrarum.floorInt
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
|
import net.torvald.terrarum.gameworld.PairedMapLayer
|
||||||
import net.torvald.terrarum.gameworld.fmod
|
import net.torvald.terrarum.gameworld.fmod
|
||||||
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES
|
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES
|
||||||
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
|
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
|
||||||
import net.torvald.terrarum.modulebasegame.gameworld.WorldSimulator
|
import net.torvald.terrarum.modulebasegame.gameworld.WorldSimulator
|
||||||
import net.torvald.terrarum.modulebasegame.gameworld.WorldTime
|
import net.torvald.terrarum.modulebasegame.gameworld.WorldTime
|
||||||
|
import net.torvald.terrarum.roundInt
|
||||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -91,6 +93,8 @@ internal object BlocksDrawer {
|
|||||||
private val shader = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/tiling.frag"))
|
private val shader = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/tiling.frag"))
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
printdbg(this, "Unpacking textures...")
|
||||||
|
|
||||||
// PNG still doesn't work right.
|
// PNG still doesn't work right.
|
||||||
// The thing is, pixel with alpha 0 must have RGB of also 0, which PNG does not guarantee it.
|
// The thing is, pixel with alpha 0 must have RGB of also 0, which PNG does not guarantee it.
|
||||||
// (pixels of RGB = 255, A = 0 -- white transparent -- causes 'glow')
|
// (pixels of RGB = 255, A = 0 -- white transparent -- causes 'glow')
|
||||||
@@ -137,6 +141,7 @@ internal object BlocksDrawer {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
printdbg(this, "Making wall item textures...")
|
||||||
|
|
||||||
// create item_wall images
|
// create item_wall images
|
||||||
// --> make pixmap
|
// --> make pixmap
|
||||||
@@ -166,6 +171,9 @@ internal object BlocksDrawer {
|
|||||||
|
|
||||||
_tileItemImgPixMap.dispose()
|
_tileItemImgPixMap.dispose()
|
||||||
_terrainPixMap.dispose() // finally
|
_terrainPixMap.dispose() // finally
|
||||||
|
|
||||||
|
|
||||||
|
printdbg(this, "init() exit")
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user