distinguishable item placeholder image

This commit is contained in:
minjaesong
2019-03-11 00:20:08 +09:00
parent d7846bf332
commit 03df390e38
6 changed files with 41 additions and 19 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -1,22 +1,38 @@
package net.torvald.terrarum 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.Disposable
import com.badlogic.gdx.utils.Queue import com.badlogic.gdx.utils.Queue
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/** /**
* Created by minjaesong on 2019-03-10. * Created by minjaesong on 2019-03-10.
*/ */
object CommonResourcePool { object CommonResourcePool {
private val loadingList = Queue<Pair<Pair<String, Class<*>>, () -> Disposable>>() private val loadingList = Queue<Pair<String, () -> Any>>()
private val pool = HashMap<String, Disposable>() private val pool = HashMap<String, Any>()
//private val typesMap = HashMap<String, Class<*>>() //private val typesMap = HashMap<String, Class<*>>()
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) 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 val loaded: Boolean
get() = loadCounter == 0 get() = loadCounter == 0
fun <T> addToLoadingList(identifier: String, type: Class<T>, loadFunction: () -> Disposable) { init {
loadingList.addFirst(identifier to type to loadFunction) 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) if (loadCounter == -1)
loadCounter = 1 loadCounter = 1
@@ -31,8 +47,7 @@ object CommonResourcePool {
if (loaded) throw IllegalStateException("Assets are already loaded and shipped out :p") if (loaded) throw IllegalStateException("Assets are already loaded and shipped out :p")
while (!loadingList.isEmpty) { while (!loadingList.isEmpty) {
val (k, loadfun) = loadingList.removeFirst() val (name, loadfun) = loadingList.removeFirst()
val (name, type) = k
if (pool.containsKey(name)) { if (pool.containsKey(name)) {
throw IllegalArgumentException("Assets with identifier '$name' already exists.") throw IllegalArgumentException("Assets with identifier '$name' already exists.")
@@ -45,16 +60,24 @@ object CommonResourcePool {
} }
} }
operator fun get(identifier: String): Disposable { operator fun get(identifier: String): Any {
val obj = pool[identifier]!! return pool[identifier]!!
return obj
} }
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() { fun dispose() {
pool.forEach { _, u -> pool.forEach { _, u ->
try { 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) { catch (e: Throwable) {
e.printStackTrace() e.printStackTrace()

View File

@@ -31,7 +31,7 @@ object LoadScreen : ScreenAdapter() {
private var arrowObjPos = 0f // 0 means at starting position, regardless of screen position private var arrowObjPos = 0f // 0 means at starting position, regardless of screen position
private var arrowObjGlideOffsetX = 0f private var arrowObjGlideOffsetX = 0f
private var arrowObjGlideSize = 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 lateinit var arrowObjTex: Texture
private var glideTimer = 0f private var glideTimer = 0f
private var glideDispY = 0f private var glideDispY = 0f

View File

@@ -9,7 +9,6 @@ import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem
import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.BlocksDrawer
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import java.util.* import java.util.*
/** /**
@@ -32,7 +31,7 @@ object ItemCodex {
val ACTORID_MIN = ITEM_DYNAMIC.endInclusive + 1 val ACTORID_MIN = ITEM_DYNAMIC.endInclusive + 1
private val itemImagePlaceholder: TextureRegion 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 //private val ingame = Terrarum.ingame!! as Ingame // WARNING you can't put this here, ExceptionInInitializerError

View File

@@ -31,13 +31,13 @@ class EntryPoint : ModuleEntryPoint() {
// load common resources to the AssetsManager // 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) 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) 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) TextureRegionPack(ModMgr.getGdxFile(moduleName, "items/items48.tga"), 48, 48)
} }