mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 10:04:05 +09:00
working test smelter
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
"basegame:176": { /* torch */
|
"basegame:176": { /* torch */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[4, 1, "item@basegame:18", 1, "item@basegame:130"] /* 4 torches = 1 stick, 1 coal */
|
[5, 1, "item@basegame:18", 1, "item@basegame:130"] /* 5 torches = 1 stick, 1 coal */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"item@basegame:5": { /* tiki torch */
|
"item@basegame:5": { /* tiki torch */
|
||||||
@@ -19,6 +19,12 @@
|
|||||||
[1, 8, "$WOOD"]
|
[1, 8, "$WOOD"]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"item@basegame:17": { /* basic smelter */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 20, "$ROCK", 10, "item@basegame:25"] /* 1 smelter = 20 rocks, 10 clay balls */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
"item@basegame:256": { /* oak door */
|
"item@basegame:256": { /* oak door */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
|
|||||||
34
assets/mods/basegame/crafting/metal_processing.json
Normal file
34
assets/mods/basegame/crafting/metal_processing.json
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"item@basegame:112": { /* copper */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:128"]]
|
||||||
|
},
|
||||||
|
"item@basegame:113": { /* iron */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:129"]]
|
||||||
|
},
|
||||||
|
"item@basegame:114": { /* coal coke */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 1, "item@basegame:130"]]
|
||||||
|
},
|
||||||
|
"item@basegame:115": { /* zinc */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:131"]]
|
||||||
|
},
|
||||||
|
"item@basegame:116": { /* tin */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:132"]]
|
||||||
|
},
|
||||||
|
"item@basegame:117": { /* gold */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:133"]]
|
||||||
|
},
|
||||||
|
"item@basegame:118": { /* silver */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:134"]]
|
||||||
|
},
|
||||||
|
"item@basegame:119": { /* lead */
|
||||||
|
"workbench": "basicsmelter",
|
||||||
|
"ingredients": [[1, 2, "item@basegame:135"]]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
||||||
},
|
},
|
||||||
"item@basegame:24": { /* stone axe */
|
"item@basegame:24": { /* stone axe */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@ id;classname
|
|||||||
14;net.torvald.terrarum.modulebasegame.gameitems.PickaxeWood
|
14;net.torvald.terrarum.modulebasegame.gameitems.PickaxeWood
|
||||||
15;net.torvald.terrarum.modulebasegame.gameitems.SledgehammerWood
|
15;net.torvald.terrarum.modulebasegame.gameitems.SledgehammerWood
|
||||||
16;net.torvald.terrarum.modulebasegame.gameitems.ItemWorkbench
|
16;net.torvald.terrarum.modulebasegame.gameitems.ItemWorkbench
|
||||||
17;net.torvald.terrarum.modulebasegame.gameitems.ItemCoalCoke
|
17;net.torvald.terrarum.modulebasegame.gameitems.ItemSmelterBasic
|
||||||
18;net.torvald.terrarum.modulebasegame.gameitems.OreStick
|
18;net.torvald.terrarum.modulebasegame.gameitems.OreStick
|
||||||
19;net.torvald.terrarum.modulebasegame.gameitems.AxeCopper
|
19;net.torvald.terrarum.modulebasegame.gameitems.AxeCopper
|
||||||
20;net.torvald.terrarum.modulebasegame.gameitems.AxeIron
|
20;net.torvald.terrarum.modulebasegame.gameitems.AxeIron
|
||||||
@@ -25,6 +25,16 @@ id;classname
|
|||||||
24;net.torvald.terrarum.modulebasegame.gameitems.AxeStone
|
24;net.torvald.terrarum.modulebasegame.gameitems.AxeStone
|
||||||
25;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBall
|
25;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBall
|
||||||
|
|
||||||
|
# ingots
|
||||||
|
112;net.torvald.terrarum.modulebasegame.gameitems.IngotCopper
|
||||||
|
113;net.torvald.terrarum.modulebasegame.gameitems.IngotIron
|
||||||
|
114;net.torvald.terrarum.modulebasegame.gameitems.ItemCoalCoke
|
||||||
|
115;net.torvald.terrarum.modulebasegame.gameitems.IngotZinc
|
||||||
|
116;net.torvald.terrarum.modulebasegame.gameitems.IngotTin
|
||||||
|
117;net.torvald.terrarum.modulebasegame.gameitems.IngotGold
|
||||||
|
118;net.torvald.terrarum.modulebasegame.gameitems.IngotSilver
|
||||||
|
119;net.torvald.terrarum.modulebasegame.gameitems.IngotLead
|
||||||
|
|
||||||
# ores
|
# ores
|
||||||
128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper
|
128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper
|
||||||
129;net.torvald.terrarum.modulebasegame.gameitems.OreIron
|
129;net.torvald.terrarum.modulebasegame.gameitems.OreIron
|
||||||
@@ -35,6 +45,7 @@ id;classname
|
|||||||
134;net.torvald.terrarum.modulebasegame.gameitems.OreSilver
|
134;net.torvald.terrarum.modulebasegame.gameitems.OreSilver
|
||||||
135;net.torvald.terrarum.modulebasegame.gameitems.OreLead
|
135;net.torvald.terrarum.modulebasegame.gameitems.OreLead
|
||||||
|
|
||||||
|
|
||||||
# gemstones
|
# gemstones
|
||||||
#144; gems
|
#144; gems
|
||||||
|
|
||||||
|
|||||||
|
BIN
assets/mods/basegame/sprites/fixtures/smelter_basic_glow.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/smelter_basic_glow.tga
LFS
Normal file
Binary file not shown.
@@ -0,0 +1,78 @@
|
|||||||
|
package net.torvald.terrarum.modulebasegame.gameactors
|
||||||
|
|
||||||
|
import net.torvald.gdx.graphics.Cvec
|
||||||
|
import net.torvald.terrarum.BlockCodex
|
||||||
|
import net.torvald.terrarum.INGAME
|
||||||
|
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
|
||||||
|
import net.torvald.terrarum.blockproperties.Block
|
||||||
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
|
import net.torvald.terrarum.gameactors.Hitbox
|
||||||
|
import net.torvald.terrarum.gameactors.Lightbox
|
||||||
|
import net.torvald.terrarum.langpack.Lang
|
||||||
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
|
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||||
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull
|
||||||
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||||
|
|
||||||
|
/**
|
||||||
|
* No GUI yet!
|
||||||
|
*
|
||||||
|
* Created by minjaesong on 2023-12-04.
|
||||||
|
*/
|
||||||
|
class FixtureSmelterBasic : FixtureBase, CraftingStation {
|
||||||
|
|
||||||
|
@Transient override val tags = listOf("basicsmelter")
|
||||||
|
|
||||||
|
constructor() : super(
|
||||||
|
BlockBox(BlockBox.ALLOW_MOVE_DOWN, 2, 2), // temporary value, will be overwritten by spawn()
|
||||||
|
nameFun = { Lang["ITEM_SMELTER_BASIC"] }
|
||||||
|
) {
|
||||||
|
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_basic.tga")
|
||||||
|
// val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_basic_glow.tga") // put this sprite to the hypothetical "SpriteIllum"
|
||||||
|
|
||||||
|
density = BlockCodex[Block.STONE].density.toDouble()
|
||||||
|
setHitboxDimension(itemImage.texture.width, itemImage.texture.height, 0, 0)
|
||||||
|
|
||||||
|
makeNewSprite(TextureRegionPack(itemImage.texture, itemImage.texture.width, itemImage.texture.height)).let {
|
||||||
|
it.setRowsAndFrames(1,1)
|
||||||
|
}
|
||||||
|
/*makeNewSpriteGlow(TextureRegionPack(itemImage2.texture, itemImage.texture.width, itemImage.texture.height)).let {
|
||||||
|
it.setRowsAndFrames(1,1)
|
||||||
|
}*/
|
||||||
|
|
||||||
|
actorValue[AVKey.BASEMASS] = 50.0
|
||||||
|
|
||||||
|
mainUIopenFun = { ui ->
|
||||||
|
(mainUI as? UIInventoryFull)?.openCrafting(mainUI!!.handler)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transient override var lightBoxList = arrayListOf(Lightbox(Hitbox(0.0, 0.0, TILE_SIZED * 2, TILE_SIZED * 2), Cvec(0.5f, 0.18f, 0f, 0f)))
|
||||||
|
|
||||||
|
@Transient private val actorBlocks = arrayOf(
|
||||||
|
arrayOf(Block.ACTORBLOCK_ALLOW_MOVE_DOWN, null),
|
||||||
|
arrayOf(Block.ACTORBLOCK_NO_COLLISION, Block.ACTORBLOCK_ALLOW_MOVE_DOWN)
|
||||||
|
)
|
||||||
|
override fun placeActorBlocks() {
|
||||||
|
forEachBlockbox { x, y, ox, oy ->
|
||||||
|
val tile = actorBlocks[oy][ox]
|
||||||
|
if (tile != null) {
|
||||||
|
world!!.setTileTerrain(x, y, tile, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transient private var mainUIhookHackInstalled = false
|
||||||
|
override fun update(delta: Float) {
|
||||||
|
// adding UI to the fixture as players may right-click on the workbenches instead of pressing a keyboard key
|
||||||
|
(INGAME as? TerrarumIngame)?.let { ingame ->
|
||||||
|
if (!mainUIhookHackInstalled && ingame.uiInventoryPlayerReady) {
|
||||||
|
mainUIhookHackInstalled = true
|
||||||
|
this.mainUI = ingame.uiInventoryPlayer // this field is initialised only after a full load so this hack is necessary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super.update(delta)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package net.torvald.terrarum.modulebasegame.gameitems
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||||
|
import net.torvald.terrarum.gameitems.ItemID
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2023-12-04.
|
||||||
|
*/
|
||||||
|
class ItemSmelterBasic(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSmelterBasic") {
|
||||||
|
|
||||||
|
|
||||||
|
override var baseMass = 50.0
|
||||||
|
override val isDynamic = false
|
||||||
|
override val materialId = ""
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_basic.tga")
|
||||||
|
|
||||||
|
override var baseToolSize: Double? = baseMass
|
||||||
|
override var originalName = "ITEM_SMELTER_BASIC"
|
||||||
|
|
||||||
|
}
|
||||||
@@ -152,11 +152,51 @@ class OreLead(originalID: ItemID) : OreItemBase(originalID) {
|
|||||||
override val itemImage: TextureRegion
|
override val itemImage: TextureRegion
|
||||||
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(8,6)
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(8,6)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class IngotCopper(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_COPPER"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(1,5)
|
||||||
|
}
|
||||||
|
class IngotIron(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_IRON"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(2,5)
|
||||||
|
}
|
||||||
class ItemCoalCoke(originalID: ItemID) : OreItemBase(originalID) {
|
class ItemCoalCoke(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
override var originalName = "ITEM_COAL_COKE"
|
override var originalName = "ITEM_COAL_COKE"
|
||||||
override val itemImage: TextureRegion
|
override val itemImage: TextureRegion
|
||||||
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(9,6)
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(9,6)
|
||||||
}
|
}
|
||||||
|
class IngotZinc(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_ZINC"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(4,5)
|
||||||
|
}
|
||||||
|
class IngotTin(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_TIN"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(5,5)
|
||||||
|
}
|
||||||
|
class IngotGold(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_GOLD"
|
||||||
|
override val materialId: String = "AURM"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(6, 5)
|
||||||
|
}
|
||||||
|
class IngotSilver(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_SILVER"
|
||||||
|
override val materialId: String = "ARGN"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(7,5)
|
||||||
|
}
|
||||||
|
class IngotLead(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
|
override var originalName = "ITEM_INGOT_LEAD"
|
||||||
|
override val itemImage: TextureRegion
|
||||||
|
get() = CommonResourcePool.getAsItemSheet("basegame.items").get(8,5)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class ItemClayBall(originalID: ItemID) : OreItemBase(originalID) {
|
class ItemClayBall(originalID: ItemID) : OreItemBase(originalID) {
|
||||||
override var originalName = "BLOCK_CLAY"
|
override var originalName = "BLOCK_CLAY"
|
||||||
override val itemImage: TextureRegion
|
override val itemImage: TextureRegion
|
||||||
|
|||||||
Reference in New Issue
Block a user