tapestry is decoded and itemised just fine but does not spawn

This commit is contained in:
minjaesong
2022-02-28 15:34:48 +09:00
parent 68d8bf13b7
commit e8330af14a
12 changed files with 191 additions and 128 deletions

View File

@@ -1,6 +1,7 @@
package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.INGAME
import net.torvald.terrarum.ItemCodex
@@ -16,9 +17,9 @@ import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
/**
* Created by minjaesong on 2021-12-13.
*/
open class FixtureItemBase(originalID: ItemID, fixtureClassName: String) : GameItem(originalID) {
open class FixtureItemBase(originalID: ItemID, val fixtureClassName: String) : GameItem(originalID) {
private val makeFixture: () -> FixtureBase = {
protected open val makeFixture: () -> FixtureBase = {
Class.forName(fixtureClassName).getDeclaredConstructor().newInstance() as FixtureBase
}
@@ -26,7 +27,12 @@ open class FixtureItemBase(originalID: ItemID, fixtureClassName: String) : GameI
ItemCodex.fixtureToSpawnerItemID[fixtureClassName] = originalID
}
protected val ghostItem = makeFixture()
protected var ghostItem: FixtureBase? = null
get() {
if (field == null)
ghostItem = makeFixture()
return field
}
override var dynamicID: ItemID = originalID
override val originalName = "FIXTUREBASE"
@@ -42,7 +48,7 @@ open class FixtureItemBase(originalID: ItemID, fixtureClassName: String) : GameI
override fun effectWhileEquipped(actor: ActorWithBody, delta: Float) {
(INGAME as TerrarumIngame).blockMarkingActor.let {
it.setGhost(ghostItem)
it.setGhost(ghostItem!!)
it.isVisible = true
it.update(delta)
it.setGhostColourBlock()
@@ -59,7 +65,7 @@ open class FixtureItemBase(originalID: ItemID, fixtureClassName: String) : GameI
}
override fun startPrimaryUse(actor: ActorWithBody, delta: Float) = mouseInInteractableRange(actor) {
val item = makeFixture()
val item = ghostItem!!//makeFixture()
item.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY - item.blockBox.height + 1)
// return true when placed, false when cannot be placed

View File

@@ -1,7 +1,9 @@
package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitems.ItemID
@@ -20,7 +22,11 @@ class ItemLogicSignalEmitter(originalID: ItemID) : FixtureItemBase(originalID, "
override val isDynamic = false
override val material = Material()
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("basegame-sprites-fixtures-signal_source.tga")
get() = CommonResourcePool.getOrPut("basegame-sprites-fixtures-signal_source.tga") {
val t = TextureRegion(Texture(ModMgr.getGdxFile("basegame", "sprites/fixtures/signal_source.tga")))
t.flip(false, false)
/*return*/t
} as TextureRegion
override var baseToolSize: Double? = baseMass
init {

View File

@@ -0,0 +1,40 @@
package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
import net.torvald.terrarum.modulebasegame.gameactors.FixtureTapestry
/**
* Created by minjaesong on 2022-02-28.
*/
class ItemTapestry(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureTapestry") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_TAPESTRY"
override var baseMass = 6.0
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureTapestry(
Gdx.files.internal("assets/monkey_island").readBytes(),
Block.PLANK_NORMAL
)
}
}