mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-17 05:54:05 +09:00
visible actors are defaulted to Visible, SpriteAnimations now has "parent" actors and uses its Visible property
Former-commit-id: 0e240de4ca38a59724f364df4624c8dc79c0112d Former-commit-id: b017b24ab7591ea2fd2518308bd5656597c14f47
This commit is contained in:
@@ -16,7 +16,7 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
||||
* Valid RefID is equal to or greater than 16777216.
|
||||
* @return Reference ID. (16777216-0x7FFF_FFFF)
|
||||
*/
|
||||
abstract var referenceID: Int
|
||||
open var referenceID: Int = generateUniqueReferenceID()
|
||||
abstract var actorValue: ActorValue
|
||||
abstract var flagDespawn: Boolean
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ import java.util.*
|
||||
*/
|
||||
open class ActorWithBody : Actor() {
|
||||
|
||||
override var referenceID: Int = generateUniqueReferenceID()
|
||||
override var actorValue: ActorValue = ActorValue()
|
||||
|
||||
@Transient internal var sprite: SpriteAnimation? = null
|
||||
@@ -155,8 +154,8 @@ open class ActorWithBody : Actor() {
|
||||
|
||||
@Volatile var grounded = false
|
||||
override @Volatile var flagDespawn = false
|
||||
/** Default to 'false' */
|
||||
var isVisible = false
|
||||
/** Default to 'true' */
|
||||
var isVisible = true
|
||||
/** Default to 'true' */
|
||||
var isUpdate = true
|
||||
var isNoSubjectToGrav = false
|
||||
@@ -255,12 +254,12 @@ open class ActorWithBody : Actor() {
|
||||
}
|
||||
|
||||
fun makeNewSprite(w: Int, h: Int) {
|
||||
sprite = SpriteAnimation()
|
||||
sprite = SpriteAnimation(this)
|
||||
sprite!!.setDimension(w, h)
|
||||
}
|
||||
|
||||
fun makeNewSpriteGlow(w: Int, h: Int) {
|
||||
spriteGlow = SpriteAnimation()
|
||||
spriteGlow = SpriteAnimation(this)
|
||||
spriteGlow!!.setDimension(w, h)
|
||||
}
|
||||
|
||||
@@ -943,6 +942,8 @@ open class ActorWithBody : Actor() {
|
||||
|
||||
open fun drawBody(gc: GameContainer, g: Graphics) {
|
||||
if (isVisible && sprite != null) {
|
||||
|
||||
|
||||
when (drawMode) {
|
||||
BLEND_NORMAL -> blendNormal()
|
||||
BLEND_MULTIPLY -> blendMul()
|
||||
|
||||
@@ -18,9 +18,9 @@ object CreatureBuilder {
|
||||
* @Param jsonFileName with extension
|
||||
*/
|
||||
@Throws(IOException::class, SlickException::class)
|
||||
fun create(jsonFileName: String): ActorWithBody {
|
||||
operator fun invoke(jsonFileName: String): ActorWithBody {
|
||||
val actor = ActorWithBody()
|
||||
CreatureRawInjector.inject(actor.actorValue, jsonFileName)
|
||||
InjectCreatureRaw(actor.actorValue, jsonFileName)
|
||||
|
||||
return actor
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ class FixtureTikiTorch : FixtureBase(), Luminous {
|
||||
override val lightBoxList: ArrayList<Hitbox>
|
||||
|
||||
init {
|
||||
isVisible = true
|
||||
density = 1200.0
|
||||
|
||||
setHitboxDimension(10, 24, 0, 0)
|
||||
@@ -26,12 +25,10 @@ class FixtureTikiTorch : FixtureBase(), Luminous {
|
||||
lightBoxList = ArrayList(1)
|
||||
lightBoxList.add(Hitbox(3.0, 0.0, 4.0, 3.0))
|
||||
|
||||
sprite = SpriteAnimation()
|
||||
sprite!!.setDimension(10, 27)
|
||||
makeNewSprite(10, 27)
|
||||
sprite!!.setSpriteImage("assets/graphics/sprites/fixtures/tiki_torch.png")
|
||||
sprite!!.setDelay(200)
|
||||
sprite!!.setRowsAndFrames(1, 1)
|
||||
sprite!!.setAsVisible()
|
||||
|
||||
actorValue[AVKey.BASEMASS] = 1.0
|
||||
}
|
||||
|
||||
@@ -18,22 +18,15 @@ import java.io.Reader
|
||||
/**
|
||||
* Created by minjaesong on 16-01-31.
|
||||
*/
|
||||
open class HumanoidNPC(aiFile: String, born: GameDate) : ActorHumanoid(born), AIControlled, CanBeAnItem {
|
||||
open class HumanoidNPC(luaScript: String, born: GameDate) : ActorHumanoid(born), AIControlled, CanBeAnItem {
|
||||
|
||||
override val scriptPath: String = aiFile
|
||||
override val scriptPath: String = ""
|
||||
|
||||
companion object {
|
||||
protected val luag = Globals()
|
||||
|
||||
init {
|
||||
luag.load(JseBaseLib())
|
||||
luag.load(TableLib())
|
||||
luag.load(StringLib())
|
||||
luag.load(TableLib())
|
||||
luag.load(CoroutineLib())
|
||||
luag.load(Bit32Lib())
|
||||
luag.load(PackageLib())
|
||||
luag.load(JseMathLib())
|
||||
LoadState.install(luag)
|
||||
LuaC.install(luag)
|
||||
}
|
||||
@@ -77,8 +70,9 @@ open class HumanoidNPC(aiFile: String, born: GameDate) : ActorHumanoid(born), AI
|
||||
|
||||
|
||||
init {
|
||||
val inputStream = javaClass.getResourceAsStream(scriptPath)
|
||||
runCommand(InputStreamReader(inputStream), scriptPath)
|
||||
//val inputStream = javaClass.getResourceAsStream(scriptPath)
|
||||
//runCommand(InputStreamReader(inputStream), scriptPath)
|
||||
runCommand(luaScript)
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +124,14 @@ open class HumanoidNPC(aiFile: String, born: GameDate) : ActorHumanoid(born), AI
|
||||
}
|
||||
}
|
||||
|
||||
fun runCommand(script: String) {
|
||||
if (!threadRun && !flagDespawn) {
|
||||
currentExecutionThread = Thread(ThreadRunCommand(luag, script, "="))
|
||||
currentExecutionThread.start()
|
||||
threadRun = true
|
||||
}
|
||||
}
|
||||
|
||||
class ThreadRunCommand : Runnable {
|
||||
|
||||
val mode: Int
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.security.SecureRandom
|
||||
/**
|
||||
* Created by minjaesong on 16-03-25.
|
||||
*/
|
||||
object CreatureRawInjector {
|
||||
object InjectCreatureRaw {
|
||||
|
||||
const val JSONPATH = "./assets/raw/creatures/"
|
||||
private const val MULTIPLIER_RAW_ELEM_SUFFIX = AVKey.MULT
|
||||
@@ -23,8 +23,7 @@ object CreatureRawInjector {
|
||||
* @param actorValueRef ActorValue object to be injected.
|
||||
* @param jsonFileName with extension
|
||||
*/
|
||||
@Throws(IOException::class, SlickException::class)
|
||||
fun inject(actorValueRef: ActorValue, jsonFileName: String) {
|
||||
operator fun invoke(actorValueRef: ActorValue, jsonFileName: String) {
|
||||
val jsonObj = JsonFetcher(JSONPATH + jsonFileName)
|
||||
|
||||
val elementsInt = arrayOf(AVKey.BASEHEIGHT, AVKey.TOOLSIZE, AVKey.ENCUMBRANCE)
|
||||
@@ -16,7 +16,6 @@ class PhysTestBall : ActorWithBody() {
|
||||
|
||||
init {
|
||||
setHitboxDimension(16, 16, 0, 0)
|
||||
isVisible = true
|
||||
mass = 10.0
|
||||
density = 200.0
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@ class Player(born: GameDate) : ActorHumanoid(born) {
|
||||
* @throws SlickException
|
||||
*/
|
||||
init {
|
||||
isVisible = true
|
||||
referenceID = PLAYER_REF_ID // forcibly set ID
|
||||
density = BASE_DENSITY
|
||||
collisionType = COLLISION_KINEMATIC
|
||||
|
||||
@@ -11,9 +11,9 @@ object PlayerBuilder {
|
||||
private val JSONPATH = "./assets/raw/"
|
||||
private val jsonString = String()
|
||||
|
||||
fun create(): Actor {
|
||||
operator fun invoke(): Actor {
|
||||
val p: Actor = Player(Terrarum.ingame.world.time.currentTimeAsGameDate)
|
||||
CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json")
|
||||
InjectCreatureRaw(p.actorValue, "CreatureHuman.json")
|
||||
|
||||
// attach sprite
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.torvald.terrarum.gameactors
|
||||
|
||||
import net.torvald.spriteanimation.SpriteAnimation
|
||||
import net.torvald.terrarum.gameactors.ActorHumanoid
|
||||
import net.torvald.terrarum.gameactors.ai.scripts.PokemonNPCAI
|
||||
import net.torvald.terrarum.mapdrawer.MapDrawer
|
||||
|
||||
/**
|
||||
@@ -9,25 +10,25 @@ import net.torvald.terrarum.mapdrawer.MapDrawer
|
||||
*/
|
||||
object PlayerBuilderCynthia {
|
||||
|
||||
fun create(): Player {
|
||||
val p: Player = Player(GameDate(100, 143)) // random value thrown
|
||||
CreatureRawInjector.inject(p.actorValue, "CreatureHuman.json")
|
||||
operator fun invoke(): ActorWithBody {
|
||||
//val p: Player = Player(GameDate(100, 143)) // random value thrown
|
||||
val p: HumanoidNPC = HumanoidNPC(PokemonNPCAI(), GameDate(100, 143)) // random value thrown
|
||||
InjectCreatureRaw(p.actorValue, "CreatureHuman.json")
|
||||
|
||||
p.actorValue[AVKey.__PLAYER_QUICKBARSEL] = 0
|
||||
p.actorValue["__selectedtile"] = 16
|
||||
|
||||
|
||||
p.makeNewSprite(26, 42)
|
||||
p.sprite!!.setSpriteImage("assets/graphics/sprites/test_player_2.png")
|
||||
p.sprite!!.setDelay(200)
|
||||
p.sprite!!.setRowsAndFrames(1, 1)
|
||||
p.sprite!!.setAsVisible()
|
||||
|
||||
p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT) ?: ActorHumanoid.BASE_HEIGHT, 9, 0)
|
||||
|
||||
p.setPosition((4096 * MapDrawer.TILE_SIZE).toDouble(), (300 * 16).toDouble())
|
||||
p.setPosition(4096.0 * MapDrawer.TILE_SIZE, 300.0 * MapDrawer.TILE_SIZE)
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -21,7 +21,7 @@ import java.io.IOException
|
||||
|
||||
object PlayerBuilderSigrid {
|
||||
|
||||
fun create(): Player {
|
||||
operator fun invoke(): Player {
|
||||
val p = Player(GameDate(-2147483648, 0)) // XD
|
||||
|
||||
p.referenceID = 0x51621D // the only constant of this procedural universe
|
||||
@@ -30,13 +30,11 @@ object PlayerBuilderSigrid {
|
||||
p.sprite!!.setSpriteImage("assets/graphics/sprites/test_player.png")
|
||||
p.sprite!!.setDelay(200)
|
||||
p.sprite!!.setRowsAndFrames(1, 1)
|
||||
p.sprite!!.setAsVisible()
|
||||
|
||||
p.makeNewSpriteGlow(28, 51)
|
||||
p.spriteGlow!!.setSpriteImage("assets/graphics/sprites/test_player_glow.tga")
|
||||
p.spriteGlow!!.setDelay(200)
|
||||
p.spriteGlow!!.setRowsAndFrames(1, 1)
|
||||
p.spriteGlow!!.setAsVisible()
|
||||
|
||||
p.actorValue = ActorValue()
|
||||
p.actorValue[AVKey.SCALE] = 1.0
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package net.torvald.terrarum.gameactors.ai.scripts
|
||||
|
||||
/**
|
||||
* Created by SKYHi14 on 2016-12-23.
|
||||
*/
|
||||
object PokemonNPCAI {
|
||||
operator fun invoke(): String = """
|
||||
|
||||
"""
|
||||
}
|
||||
Reference in New Issue
Block a user