From 341c35fab79ed5670fed23faaf8c6683572c5ea0 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 11 Mar 2019 00:20:08 +0900 Subject: [PATCH] distinguishable item placeholder image --- assets/item_kari_24.tga | 2 +- assets/item_kari_48.tga | 2 +- .../torvald/terrarum/CommonResourcePool.kt | 45 ++++++++++++++----- src/net/torvald/terrarum/LoadScreen.kt | 2 +- .../terrarum/itemproperties/ItemCodex.kt | 3 +- .../terrarum/modulebasegame/EntryPoint.kt | 6 +-- 6 files changed, 41 insertions(+), 19 deletions(-) diff --git a/assets/item_kari_24.tga b/assets/item_kari_24.tga index 51e22fea1..00866d072 100644 --- a/assets/item_kari_24.tga +++ b/assets/item_kari_24.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62948e21930957c5cad1cff6c212a36ce12041047fdb7d05ca22b67b1bdc9ca2 +oid sha256:c81d7344be3a44a29c37a3892e8d5ae207663712d02fa4b1d33a4e9933cf7a71 size 2348 diff --git a/assets/item_kari_48.tga b/assets/item_kari_48.tga index c5cfb08b4..30089f3a3 100644 --- a/assets/item_kari_48.tga +++ b/assets/item_kari_48.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2812eda2b6ed67982bc510d4ce1b2fb37265df4b2451323d8ada5105aa8dd4a0 +oid sha256:3a6ed0b270d436bd49a7043ee9908b724dd0529a3569122b7c1f998ff375fd7a size 9260 diff --git a/src/net/torvald/terrarum/CommonResourcePool.kt b/src/net/torvald/terrarum/CommonResourcePool.kt index 18e1d111a..dbea25e53 100644 --- a/src/net/torvald/terrarum/CommonResourcePool.kt +++ b/src/net/torvald/terrarum/CommonResourcePool.kt @@ -1,22 +1,38 @@ package net.torvald.terrarum +import com.badlogic.gdx.graphics.Texture +import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.utils.Disposable import com.badlogic.gdx.utils.Queue +import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** * Created by minjaesong on 2019-03-10. */ object CommonResourcePool { - private val loadingList = Queue>, () -> Disposable>>() - private val pool = HashMap() + private val loadingList = Queue Any>>() + private val pool = HashMap() //private val typesMap = HashMap>() private var loadCounter = -1 // using counters so that the loading can be done on separate thread (gg if the asset requires GL context to be loaded) val loaded: Boolean get() = loadCounter == 0 - fun addToLoadingList(identifier: String, type: Class, loadFunction: () -> Disposable) { - loadingList.addFirst(identifier to type to loadFunction) + init { + addToLoadingList("itemplaceholder_24") { + val t = TextureRegion(Texture("assets/item_kari_24.tga")) + t.flip(false, true) + /*return*/t + } + addToLoadingList("itemplaceholder_48") { + val t = TextureRegion(Texture("assets/item_kari_48.tga")) + t.flip(false, true) + /*return*/t + } + } + + fun addToLoadingList(identifier: String, loadFunction: () -> Any) { + loadingList.addFirst(identifier to loadFunction) if (loadCounter == -1) loadCounter = 1 @@ -31,8 +47,7 @@ object CommonResourcePool { if (loaded) throw IllegalStateException("Assets are already loaded and shipped out :p") while (!loadingList.isEmpty) { - val (k, loadfun) = loadingList.removeFirst() - val (name, type) = k + val (name, loadfun) = loadingList.removeFirst() if (pool.containsKey(name)) { throw IllegalArgumentException("Assets with identifier '$name' already exists.") @@ -45,16 +60,24 @@ object CommonResourcePool { } } - operator fun get(identifier: String): Disposable { - val obj = pool[identifier]!! - - return obj + operator fun get(identifier: String): Any { + return pool[identifier]!! } + fun getAsTextureRegionPack(identifier: String) = get(identifier) as TextureRegionPack + fun getAsTextureRegion(identifier: String) = get(identifier) as TextureRegion + fun getAsTexture(identifier: String) = get(identifier) as Texture + fun dispose() { pool.forEach { _, u -> try { - u.dispose() + if (u is Disposable) + u.dispose() + if (u is Texture) + u.dispose() + if (u is TextureRegion) + u.texture.dispose() + // TODO } catch (e: Throwable) { e.printStackTrace() diff --git a/src/net/torvald/terrarum/LoadScreen.kt b/src/net/torvald/terrarum/LoadScreen.kt index d2ca8d060..2b4221e8a 100644 --- a/src/net/torvald/terrarum/LoadScreen.kt +++ b/src/net/torvald/terrarum/LoadScreen.kt @@ -31,7 +31,7 @@ object LoadScreen : ScreenAdapter() { private var arrowObjPos = 0f // 0 means at starting position, regardless of screen position private var arrowObjGlideOffsetX = 0f private var arrowObjGlideSize = 0f - private val arrowGlideSpeed: Float; get() = Terrarum.WIDTH / 2f // pixels per sec + private val arrowGlideSpeed: Float; get() = Terrarum.WIDTH * 2f // pixels per sec private lateinit var arrowObjTex: Texture private var glideTimer = 0f private var glideDispY = 0f diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt index bfa296364..9033befb2 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt @@ -9,7 +9,6 @@ import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem import net.torvald.terrarum.worlddrawer.BlocksDrawer -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import java.util.* /** @@ -32,7 +31,7 @@ object ItemCodex { val ACTORID_MIN = ITEM_DYNAMIC.endInclusive + 1 private val itemImagePlaceholder: TextureRegion - get() = (AppLoader.resourcePool["basegame.items24"] as TextureRegionPack).get(0,0) // copper pickaxe + get() = AppLoader.resourcePool.getAsTextureRegion("itemplaceholder_24") // copper pickaxe //private val ingame = Terrarum.ingame!! as Ingame // WARNING you can't put this here, ExceptionInInitializerError diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt index c60ea5d5a..ea57b3c54 100644 --- a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt +++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt @@ -31,13 +31,13 @@ class EntryPoint : ModuleEntryPoint() { // load common resources to the AssetsManager - AppLoader.resourcePool.addToLoadingList("$moduleName.items16", TextureRegionPack.javaClass) { + AppLoader.resourcePool.addToLoadingList("$moduleName.items16") { TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items.tga"), 16, 16) } - AppLoader.resourcePool.addToLoadingList("$moduleName.items24", TextureRegionPack.javaClass) { + AppLoader.resourcePool.addToLoadingList("$moduleName.items24") { TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items24.tga"), 24, 24) } - AppLoader.resourcePool.addToLoadingList("$moduleName.items48", TextureRegionPack.javaClass) { + AppLoader.resourcePool.addToLoadingList("$moduleName.items48") { TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items48.tga"), 48, 48) }