sprite: emissive layer

This commit is contained in:
minjaesong
2024-01-27 01:27:45 +09:00
parent 3042b0659e
commit b02f4d7703
18 changed files with 175 additions and 29 deletions

View File

@@ -747,16 +747,19 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
open fun updateSprite(delta: Float) {
sprite?.update(delta)
spriteGlow?.update(delta)
spriteEmissive?.update(delta)
if (walledBottom && controllerV?.x != 0.0) {
//switch row
if (this is HasAssembledSprite) {
(sprite as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_RUN"
(spriteGlow as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_RUN"
(spriteEmissive as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_RUN"
}
else {
(sprite as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_WALK)
(spriteGlow as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_WALK)
(spriteEmissive as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_WALK)
}
// set anim frame delay
@@ -772,6 +775,7 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
(sprite as? AssembledSpriteAnimation)?.overrideDelay = finalDelay
(spriteGlow as? AssembledSpriteAnimation)?.overrideDelay = finalDelay
(spriteEmissive as? AssembledSpriteAnimation)?.overrideDelay = finalDelay
}
catch (e: NullPointerException) {
println(animDesc!!.animations.keys.joinToString())
@@ -784,10 +788,12 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
if (walkHeading == LEFT) {
sprite?.flip(true, false)
spriteGlow?.flip(true, false)
spriteEmissive?.flip(true, false)
}
else {
sprite?.flip(false, false)
spriteGlow?.flip(false, false)
spriteEmissive?.flip(false, false)
}
}
else {
@@ -795,12 +801,15 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
if (this is HasAssembledSprite) {
(sprite as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_IDLE"
(spriteGlow as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_IDLE"
(spriteEmissive as? AssembledSpriteAnimation)?.currentAnimation = "ANIM_IDLE"
(sprite as? AssembledSpriteAnimation)?.overrideDelay = 0f
(spriteGlow as? AssembledSpriteAnimation)?.overrideDelay = 0f
(spriteEmissive as? AssembledSpriteAnimation)?.overrideDelay = 0f
}
else {
(sprite as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_IDLE)
(spriteGlow as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_IDLE)
(spriteEmissive as? SheetSpriteAnimation)?.switchRow(SPRITE_ROW_IDLE)
}
}
}

View File

@@ -32,7 +32,7 @@ class FixtureFurnaceAndAnvil : FixtureBase, CraftingStation {
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/metalworking_furnace_and_anvil.tga")
// val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/metalworking_furnace_and_anvil_illum.tga") // put this sprite to the hypothetical "SpriteIllum"
val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/metalworking_furnace_and_anvil_emsv.tga")
density = BlockCodex[Block.STONE].density.toDouble()
setHitboxDimension(itemImage.texture.width, itemImage.texture.height, 0, 0)
@@ -40,9 +40,9 @@ class FixtureFurnaceAndAnvil : FixtureBase, CraftingStation {
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 {
makeNewSpriteEmissive(TextureRegionPack(itemImage2.texture, itemImage.texture.width, itemImage.texture.height)).let {
it.setRowsAndFrames(1,1)
}*/
}
actorValue[AVKey.BASEMASS] = 100.0

View File

@@ -35,7 +35,7 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
val itemImage = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_tall.tga")
// val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_tall_illum.tga") // put this sprite to the hypothetical "SpriteIllum"
val itemImage2 = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/smelter_tall_emsv.tga")
density = BlockCodex[Block.STONE].density.toDouble()
setHitboxDimension(itemImage.texture.width, itemImage.texture.height, 0, 0)
@@ -43,9 +43,9 @@ class FixtureSmelterBasic : FixtureBase, CraftingStation {
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 {
makeNewSpriteEmissive(TextureRegionPack(itemImage2.texture, itemImage.texture.width, itemImage.texture.height)).let {
it.setRowsAndFrames(1,1)
}*/
}
actorValue[AVKey.BASEMASS] = 100.0

View File

@@ -39,6 +39,8 @@ class IngamePlayer : ActorHumanoid, HasAssembledSprite, NoSerialise {
@Transient override var animDesc: ADProperties? = null
/** ADL for glow sprite. Optional. */
@Transient override var animDescGlow: ADProperties? = null
/** ADL for glow sprite. Optional. */
@Transient override var animDescEmissive: ADProperties? = null
private constructor()

View File

@@ -26,6 +26,7 @@ object PlayerBuilderWerebeastTest {
p.animDesc?.let { p.sprite = AssembledSpriteAnimation(it, p, false) }
p.animDescGlow?.let { p.spriteGlow = AssembledSpriteAnimation(it, p, true) }
p.animDescEmissive?.let { p.spriteEmissive = AssembledSpriteAnimation(it, p, true) }
p.setHitboxDimension(22, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 30, 0)
p.setPosition(3.0 * TILE_SIZE, 3.0 * TILE_SIZE)