simpler way of making item sprite

This commit is contained in:
minjaesong
2022-03-01 19:08:06 +09:00
parent 7e90387afc
commit 6906d24e59
11 changed files with 108 additions and 65 deletions

View File

@@ -10,6 +10,7 @@ import net.torvald.terrarum.gameactors.PhysProperties
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.dyn4j.geometry.Vector2
typealias BlockBoxIndex = Int
@@ -222,6 +223,18 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange {
override fun flagDespawn() {
if (canBeDespawned) flagDespawn = true
}
/**
* Also see: [net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase.Companion]
*/
companion object {
fun getSpritesheet(module: String, path: String, tileW: Int, tileH: Int): TextureRegionPack {
val id = "$module/${path.replace('\\','/')}"
return (CommonResourcePool.getOrPut(id) {
TextureRegionPack(ModMgr.getGdxFile(module, path), tileW, tileH, flipY = false)
} as TextureRegionPack)
}
}
}
interface CuedByTerrainChange {

View File

@@ -7,6 +7,7 @@ import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.dyn4j.geometry.Vector2
@@ -23,6 +24,8 @@ class FixtureLogicSignalEmitter : FixtureBase, Electric {
)
init {
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")
CommonResourcePool.addToLoadingList("basegame-sprites-fixtures-signal_source.tga") {
val t = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "sprites/fixtures/signal_source.tga")))
t.flip(false, false)
@@ -33,7 +36,7 @@ class FixtureLogicSignalEmitter : FixtureBase, Electric {
density = 1400.0
setHitboxDimension(TILE_SIZE, TILE_SIZE, 0, -1)
makeNewSprite(TextureRegionPack(CommonResourcePool.getAsTextureRegion("basegame-sprites-fixtures-signal_source.tga").texture, TILE_SIZE, TILE_SIZE))
makeNewSprite(TextureRegionPack(itemImage.texture, TILE_SIZE, TILE_SIZE))
sprite!!.setRowsAndFrames(1, 1)
actorValue[AVKey.BASEMASS] = MASS

View File

@@ -57,7 +57,7 @@ internal class FixtureTapestry : FixtureBase {
val frame = CommonResourcePool.getOrPut("tapestries-common-frame_$tileFilename.tga") {
Pixmap(ModMgr.getGdxFilesFromEveryMod("tapestries/common/frame_$tileFilename.tga").last().second)
} as Pixmap
val canvas = CommonResourcePool.getOrPut("tapestries-common-canvas") {
val canvas = CommonResourcePool.getOrPut("tapestries-common-canvas.tga") {
Pixmap(ModMgr.getGdxFilesFromEveryMod("tapestries/common/canvas.tga").last().second)
} as Pixmap

View File

@@ -41,9 +41,6 @@ internal class FixtureTikiTorch : FixtureBase, Luminous {
) {
// loading textures
CommonResourcePool.addToLoadingList("sprites-fixtures-tiki_torch.tga") {
TextureRegionPack(ModMgr.getGdxFile("basegame", "sprites/fixtures/tiki_torch.tga"), 16, 32, flipY = false)
}
CommonResourcePool.addToLoadingList("particles-tiki_smoke.tga") {
TextureRegionPack(ModMgr.getGdxFile("basegame", "particles/bigger_smoke.tga"), 16, 16)
}
@@ -55,7 +52,7 @@ internal class FixtureTikiTorch : FixtureBase, Luminous {
lightBoxList.add(Lightbox(Hitbox(6.0, 5.0, 4.0, 3.0), color))
makeNewSprite(CommonResourcePool.getAsTextureRegionPack("sprites-fixtures-tiki_torch.tga"))
makeNewSprite(FixtureBase.getSpritesheet("basegame", "sprites/fixtures/tiki_torch.tga", 16, 32))
sprite!!.setRowsAndFrames(1, 2)
actorValue[AVKey.BASEMASS] = MASS