mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 10:34:06 +09:00
drawing held item to the sprite WIP
This commit is contained in:
@@ -34,7 +34,9 @@ SKELETON_STAND=HEADGEAR 0,78;\
|
|||||||
ARM_REST_LEFT 8,66;\
|
ARM_REST_LEFT 8,66;\
|
||||||
TAIL_0 2,40
|
TAIL_0 2,40
|
||||||
|
|
||||||
# skeleton_stand is used for testing purpose
|
! When you move the arms/hands, make sure you move the HELD_ITEM as well
|
||||||
|
|
||||||
|
# RUNNING might need its own skeleton...
|
||||||
ANIM_RUN=DELAY 0.3;ROW 2;SKELETON SKELETON_STAND
|
ANIM_RUN=DELAY 0.3;ROW 2;SKELETON SKELETON_STAND
|
||||||
ANIM_RUN_1=LEG_REST_RIGHT 2,2;LEG_REST_LEFT -2,0;TAIL_0 1,0;TORSO_1 0,-999
|
ANIM_RUN_1=LEG_REST_RIGHT 2,2;LEG_REST_LEFT -2,0;TAIL_0 1,0;TORSO_1 0,-999
|
||||||
ANIM_RUN_2=ALL 0,2;LEG_REST_RIGHT 0,-2;LEG_REST_LEFT 0,2;TAIL_0 -1,0;TORSO_1 0,-999
|
ANIM_RUN_2=ALL 0,2;LEG_REST_RIGHT 0,-2;LEG_REST_LEFT 0,2;TAIL_0 -1,0;TORSO_1 0,-999
|
||||||
@@ -43,4 +45,4 @@ ANIM_RUN_4=ALL 0,2;LEG_REST_RIGHT 0,2;LEG_REST_LEFT 0,-2;TAIL_0 1,0;TORSO_1 0,-9
|
|||||||
|
|
||||||
ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
|
ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
|
||||||
ANIM_IDLE_1=TORSO_1 0,-999;HEAD 0,-1
|
ANIM_IDLE_1=TORSO_1 0,-999;HEAD 0,-1
|
||||||
ANIM_IDLE_2=TORSO_0 0,-999;ARM_REST_LEFT 0,1;ARM_REST_RIGHT 0,1;BUST_0 0,1
|
ANIM_IDLE_2=TORSO_0 0,-999;ARM_REST_LEFT 0,1;ARM_REST_RIGHT 0,1;HELD_ITEM 0,1;BUST_0 0,1
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ SKELETON_STAND=HEADGEAR 0,78;\
|
|||||||
ARM_REST_LEFT 8,66;\
|
ARM_REST_LEFT 8,66;\
|
||||||
TAIL_0 2,40
|
TAIL_0 2,40
|
||||||
|
|
||||||
# skeleton_stand is used for testing purpose
|
! When you move the arms/hands, make sure you move the HELD_ITEM as well
|
||||||
|
|
||||||
|
# RUNNING might need its own skeleton...
|
||||||
ANIM_RUN=DELAY 0.3;ROW 2;SKELETON SKELETON_STAND
|
ANIM_RUN=DELAY 0.3;ROW 2;SKELETON SKELETON_STAND
|
||||||
ANIM_RUN_1=LEG_REST_RIGHT 2,2;LEG_REST_LEFT -2,0;TAIL_0 1,0;TORSO_1 0,-999
|
ANIM_RUN_1=LEG_REST_RIGHT 2,2;LEG_REST_LEFT -2,0;TAIL_0 1,0;TORSO_1 0,-999
|
||||||
ANIM_RUN_2=ALL 0,2;LEG_REST_RIGHT 0,-2;LEG_REST_LEFT 0,2;TAIL_0 -1,0;TORSO_1 0,-999
|
ANIM_RUN_2=ALL 0,2;LEG_REST_RIGHT 0,-2;LEG_REST_LEFT 0,2;TAIL_0 -1,0;TORSO_1 0,-999
|
||||||
@@ -43,4 +45,4 @@ ANIM_RUN_4=ALL 0,2;LEG_REST_RIGHT 0,2;LEG_REST_LEFT 0,-2;TAIL_0 1,0;TORSO_1 0,-9
|
|||||||
|
|
||||||
ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
|
ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
|
||||||
ANIM_IDLE_1=TORSO_1 0,-999;HEAD 0,-1
|
ANIM_IDLE_1=TORSO_1 0,-999;HEAD 0,-1
|
||||||
ANIM_IDLE_2=TORSO_0 0,-999;ARM_REST_LEFT 0,1;ARM_REST_RIGHT 0,1;BUST_0 0,1
|
ANIM_IDLE_2=TORSO_0 0,-999;ARM_REST_LEFT 0,1;ARM_REST_RIGHT 0,1;HELD_ITEM 0,1;BUST_0 0,1
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ SKELETON_STAND=HEADGEAR 0,32;HAIR_FORE 0,32;\
|
|||||||
ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12;\
|
ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12;\
|
||||||
TAIL0 0,13
|
TAIL0 0,13
|
||||||
|
|
||||||
# skeleton_stand is used for testing purpose
|
! When you move the arms/hands, make sure you move the HELD_ITEM as well
|
||||||
|
|
||||||
|
# RUNNING might need its own skeleton...
|
||||||
ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND
|
ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND
|
||||||
ANIM_RUN_1=LEG_REST_RIGHT 1,1;FOOT_RIGHT 1,1;LEG_REST_LEFT -1,0;FOOT_LEFT -1,0
|
ANIM_RUN_1=LEG_REST_RIGHT 1,1;FOOT_RIGHT 1,1;LEG_REST_LEFT -1,0;FOOT_LEFT -1,0
|
||||||
ANIM_RUN_2=ALL 0,1;LEG_REST_RIGHT 0,-1;FOOT_RIGHT 0,-1;LEG_REST_LEFT 0,1;FOOT_LEFT 0,1
|
ANIM_RUN_2=ALL 0,1;LEG_REST_RIGHT 0,-1;FOOT_RIGHT 0,-1;LEG_REST_LEFT 0,1;FOOT_LEFT 0,1
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion
|
|||||||
import com.badlogic.gdx.utils.GdxRuntimeException
|
import com.badlogic.gdx.utils.GdxRuntimeException
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
import net.torvald.terrarum.linearSearch
|
import net.torvald.terrarum.linearSearch
|
||||||
|
import net.torvald.terrarum.linearSearchBy
|
||||||
import net.torvald.terrarum.savegame.ByteArray64InputStream
|
import net.torvald.terrarum.savegame.ByteArray64InputStream
|
||||||
import net.torvald.terrarum.savegame.ByteArray64Reader
|
import net.torvald.terrarum.savegame.ByteArray64Reader
|
||||||
import net.torvald.terrarum.savegame.SimpleFileSystem
|
import net.torvald.terrarum.savegame.SimpleFileSystem
|
||||||
@@ -175,12 +176,41 @@ object AssembleSheetPixmap {
|
|||||||
) {
|
) {
|
||||||
val tmpFrame = Pixmap(props.frameWidth, props.frameHeight, Pixmap.Format.RGBA8888)
|
val tmpFrame = Pixmap(props.frameWidth, props.frameHeight, Pixmap.Format.RGBA8888)
|
||||||
|
|
||||||
transformList.forEach { (name, pos) ->
|
transformList.forEach { (name, bodypartPos) ->
|
||||||
bodypartImages[name]?.let { image ->
|
if (name == "HELD_ITEM") {
|
||||||
val imgCentre = bodypartOrigins[name]!!.invertX()
|
injectedItem?.itemImage?.let { textureRegion ->
|
||||||
val drawPos = props.origin + pos + imgCentre
|
// TODO FIXME tiles are not being drawn
|
||||||
|
val texdata = textureRegion.texture.textureData
|
||||||
|
texdata.prepare()
|
||||||
|
val imageSheet = texdata.consumePixmap()
|
||||||
|
|
||||||
tmpFrame.drawPixmap(image, drawPos.x, props.frameHeight - drawPos.y - 1)
|
val drawPos = props.origin + bodypartPos
|
||||||
|
|
||||||
|
val pu = (textureRegion.u * texdata.width).toInt()
|
||||||
|
val pv = (textureRegion.v * texdata.height).toInt()
|
||||||
|
val pu2 = (textureRegion.u2 * texdata.width).toInt()
|
||||||
|
val pv2 = (textureRegion.v2 * texdata.height).toInt()
|
||||||
|
val imageHeight = textureRegion.regionHeight
|
||||||
|
|
||||||
|
for (y in pv until pv2) { for (x in pu until pu2) {
|
||||||
|
val pixel = imageSheet.getPixel(x, y)
|
||||||
|
tmpFrame.drawPixel(
|
||||||
|
drawPos.x + x - pu,
|
||||||
|
(props.frameHeight - drawPos.y - 1) + y - pv - imageHeight,
|
||||||
|
pixel
|
||||||
|
)
|
||||||
|
} }
|
||||||
|
|
||||||
|
imageSheet.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bodypartImages[name]?.let { image ->
|
||||||
|
val imgCentre = bodypartOrigins[name]!!.invertX()
|
||||||
|
val drawPos = props.origin + bodypartPos + imgCentre
|
||||||
|
|
||||||
|
tmpFrame.drawPixmap(image, drawPos.x, props.frameHeight - drawPos.y - 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +220,6 @@ object AssembleSheetPixmap {
|
|||||||
(row - 1) * props.frameHeight
|
(row - 1) * props.frameHeight
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO use injectedItem
|
|
||||||
|
|
||||||
tmpFrame.dispose()
|
tmpFrame.dispose()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user