mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
103 lines
3.9 KiB
Kotlin
103 lines
3.9 KiB
Kotlin
package net.torvald.terrarum.ui
|
|
|
|
import com.badlogic.gdx.graphics.Camera
|
|
import com.badlogic.gdx.graphics.Color
|
|
import com.badlogic.gdx.graphics.Texture
|
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
|
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
|
import com.badlogic.gdx.utils.GdxRuntimeException
|
|
import net.torvald.terrarum.*
|
|
import net.torvald.terrarum.modulebasegame.ui.MODULEINFO_CELL_HEIGHT
|
|
import net.torvald.terrarum.modulebasegame.ui.MODULEINFO_CELL_WIDTH
|
|
|
|
class UIItemModuleInfoCell(
|
|
parent: UICanvas,
|
|
var order: Int,
|
|
initialX: Int,
|
|
initialY: Int
|
|
) : UIItem(parent, initialX, initialY) {
|
|
|
|
override val width = MODULEINFO_CELL_WIDTH
|
|
override val height = MODULEINFO_CELL_HEIGHT
|
|
|
|
private val modName = ModMgr.loadOrder[order]
|
|
|
|
private val modProp = ModMgr.moduleInfo[modName] ?: ModMgr.moduleInfoErrored[modName]!!
|
|
|
|
private val modErrors = ModMgr.errorLogs.filter { it.moduleName == modName }
|
|
private val modErrored = (ModMgr.moduleInfo[modName] == null)
|
|
|
|
private val modIcon = try {
|
|
TextureRegion(Texture(modProp.iconFile))
|
|
}
|
|
catch (_: GdxRuntimeException) {
|
|
CommonResourcePool.getAsTextureRegion("itemplaceholder_48")
|
|
}
|
|
private val modVer = modProp.version
|
|
private val modDate = modProp.releaseDate
|
|
private val modAuthor = modProp.author
|
|
private val modDesc = modProp.description
|
|
|
|
init {
|
|
modIcon.flip(false, false)
|
|
|
|
CommonResourcePool.addToLoadingList("basegame_errored_icon32") {
|
|
val t = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "gui/modwitherror.tga")))
|
|
t.flip(false, false)
|
|
t
|
|
}
|
|
CommonResourcePool.loadAll()
|
|
|
|
|
|
}
|
|
|
|
private val ccZero = App.fontGame.toColorCode(15,15,15)
|
|
private val ccZero2 = App.fontGame.toColorCode(12,12,12)
|
|
private val ccNum = App.fontGame.toColorCode(15,14,6)
|
|
private val ccNum2 = App.fontGame.toColorCode(12,11,4)
|
|
private val ccDesc = App.fontGame.toColorCode(13,13,13)
|
|
|
|
override fun render(batch: SpriteBatch, camera: Camera) {
|
|
blendNormalStraightAlpha(batch)
|
|
|
|
batch.color = Toolkit.Theme.COL_CELL_FILL
|
|
Toolkit.fillArea(batch, initialX, initialY, 32, height)
|
|
Toolkit.fillArea(batch, initialX + 35, initialY, 48, height)
|
|
Toolkit.fillArea(batch, initialX + 86, initialY, width - 86, height)
|
|
|
|
batch.color = Toolkit.Theme.COL_INACTIVE
|
|
Toolkit.drawBoxBorder(batch, initialX - 1, initialY - 1, width + 2, height + 2)
|
|
Toolkit.fillArea(batch, initialX + 33, initialY, 1, height)
|
|
Toolkit.fillArea(batch, initialX + 84, initialY, 1, height)
|
|
|
|
if (order < 9)
|
|
App.fontSmallNumbers.draw(batch, "${order+1}", initialX + 13f, initialY + 18f + 12f)
|
|
else if (order < 99)
|
|
App.fontSmallNumbers.draw(batch, "${order+1}", initialX + 9f, initialY + 18f + 12f)
|
|
else
|
|
App.fontSmallNumbers.draw(batch, "${order+1}", initialX + 6f, initialY + 18f + 12f)
|
|
|
|
batch.color = Color.WHITE
|
|
if (modErrored) {
|
|
batch.shader = App.shaderGhastlyWhite
|
|
batch.color = Color.LIGHT_GRAY
|
|
}
|
|
batch.draw(modIcon, initialX + 35f, initialY + 12f)
|
|
batch.shader = null
|
|
batch.color = Color.WHITE
|
|
App.fontGame.draw(batch, "$ccZero${modName.toUpperCase()}$ccNum $modVer", initialX + 86f + 3f, initialY + 2f)
|
|
if (modErrored)
|
|
App.fontGame.draw(batch, "$emphRed${modErrors.first().cause?.message}", initialX + 86f + 3f, initialY + 26f)
|
|
else
|
|
App.fontGame.draw(batch, "$ccDesc$modDesc", initialX + 86f + 3f, initialY + 26f)
|
|
App.fontGame.draw(batch, "$ccZero2$modAuthor$ccNum2 $modDate", initialX + 86f + 3f, initialY + 50f)
|
|
|
|
if (modErrored) {
|
|
batch.draw(CommonResourcePool.getAsTextureRegion("basegame_errored_icon32"), initialX + width - 40f, initialY + 8f + 12f)
|
|
}
|
|
}
|
|
|
|
override fun dispose() {
|
|
modIcon.texture.dispose()
|
|
}
|
|
} |