Tile -> Block && Map -> World

This commit is contained in:
Song Minjae
2017-04-27 01:57:45 +09:00
parent 49d3c9f55b
commit b4b2c0d85b
80 changed files with 1075 additions and 1645 deletions

View File

@@ -1,10 +1,8 @@
package net.torvald.terrarum.gameactors
import com.jme3.math.FastMath
import net.torvald.terrarum.Millisec
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.faction.Faction
import net.torvald.terrarum.gamecontroller.EnumKeyFunc
import net.torvald.terrarum.itemproperties.InventoryItem
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.realestate.LandUtil
@@ -38,11 +36,11 @@ open class ActorHumanoid(birth: GameDate, death: GameDate? = null)
override var houseDesignation: ArrayList<Long>? = ArrayList()
override fun addHouseTile(x: Int, y: Int) {
if (houseDesignation != null) houseDesignation!!.add(LandUtil.getTileAddr(x, y))
if (houseDesignation != null) houseDesignation!!.add(LandUtil.getBlockAddr(x, y))
}
override fun removeHouseTile(x: Int, y: Int) {
if (houseDesignation != null) houseDesignation!!.remove(LandUtil.getTileAddr(x, y))
if (houseDesignation != null) houseDesignation!!.remove(LandUtil.getBlockAddr(x, y))
}
override fun clearHouseDesignation() {

View File

@@ -4,12 +4,12 @@ import com.jme3.math.FastMath
import net.torvald.point.Point2d
import net.torvald.terrarum.*
import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.mapdrawer.FeaturesDrawer
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.mapdrawer.MapCamera
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.tileproperties.TileProp
import net.torvald.terrarum.worlddrawer.WorldCamera
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockProp
import org.dyn4j.geometry.Vector2
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics
@@ -763,7 +763,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
for (y in tyStart..tyEnd) {
for (x in txStart..txEnd) {
val tile = world.getTileFromTerrain(x, y)
if (TileCodex[tile].isSolid)
if (BlockCodex[tile].isSolid)
return true
}
}
@@ -805,7 +805,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
}
// evaluate
if (TileCodex[world.getTileFromTerrain(tileX, tileY)].isFluid) {
if (BlockCodex[world.getTileFromTerrain(tileX, tileY)].isFluid) {
contactAreaCounter += 1
}
}
@@ -814,17 +814,17 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
}
private fun getTileFriction(tile: Int) =
if (immobileBody && tile == Tile.AIR)
TileCodex[Tile.AIR].friction.frictionToMult().div(1000)
if (immobileBody && tile == Block.AIR)
BlockCodex[Block.AIR].friction.frictionToMult().div(1000)
.times(if (!grounded) elasticity else 1.0)
else
TileCodex[tile].friction.frictionToMult()
BlockCodex[tile].friction.frictionToMult()
/** about stopping
* for about get moving, see updateMovementControl */
private fun setHorizontalFriction() {
val friction = if (isPlayerNoClip)
BASE_FRICTION * TileCodex[Tile.STONE].friction.frictionToMult()
BASE_FRICTION * BlockCodex[Block.STONE].friction.frictionToMult()
else {
// TODO status quo if !submerged else linearBlend(feetFriction, bodyFriction, submergedRatio)
BASE_FRICTION * if (grounded) feetFriction else bodyFriction
@@ -853,7 +853,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
private fun setVerticalFriction() {
val friction = if (isPlayerNoClip)
BASE_FRICTION * TileCodex[Tile.STONE].friction.frictionToMult()
BASE_FRICTION * BlockCodex[Block.STONE].friction.frictionToMult()
else
BASE_FRICTION * bodyFriction
@@ -913,8 +913,8 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
var friction = 0.0
forEachOccupyingTileNum {
// get max friction
if (getTileFriction(it ?: Tile.AIR) > friction)
friction = getTileFriction(it ?: Tile.AIR)
if (getTileFriction(it ?: Block.AIR) > friction)
friction = getTileFriction(it ?: Block.AIR)
}
return friction
@@ -924,8 +924,8 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
var friction = 0.0
forEachFeetTileNum {
// get max friction
if (getTileFriction(it ?: Tile.AIR) > friction)
friction = getTileFriction(it ?: Tile.AIR)
if (getTileFriction(it ?: Block.AIR) > friction)
friction = getTileFriction(it ?: Block.AIR)
}
return friction
@@ -1056,7 +1056,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
val offsetY = spriteGlow!!.cellHeight * scale - hitbox.height - hitboxTranslateY * scale - 2
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
if (WorldCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
// camera center neg, actor center pos
spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
@@ -1064,7 +1064,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
(scale).toFloat()
)
}
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
else if (WorldCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
// camera center pos, actor center neg
spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
@@ -1082,8 +1082,8 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
}
}
val leftsidePadding = world.width.times(TILE_SIZE) - MapCamera.width.ushr(1)
val rightsidePadding = MapCamera.width.ushr(1)
val leftsidePadding = world.width.times(TILE_SIZE) - WorldCamera.width.ushr(1)
val rightsidePadding = WorldCamera.width.ushr(1)
override fun drawBody(g: Graphics) {
if (isVisible && sprite != null) {
@@ -1097,7 +1097,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
val offsetY = sprite!!.cellHeight * scale - hitbox.height - hitboxTranslateY * scale - 2
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
if (WorldCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
// camera center neg, actor center pos
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
@@ -1105,7 +1105,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
(scale).toFloat()
)
}
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
else if (WorldCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
// camera center pos, actor center neg
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
@@ -1188,11 +1188,11 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
return tiles.forEach(consumer)
}
private fun forEachOccupyingTile(consumer: (TileProp?) -> Unit) {
val tileProps = ArrayList<TileProp?>()
private fun forEachOccupyingTile(consumer: (BlockProp?) -> Unit) {
val tileProps = ArrayList<BlockProp?>()
for (y in tilewiseHitbox.posY.toInt()..tilewiseHitbox.endPointY.toInt()) {
for (x in tilewiseHitbox.posX.toInt()..tilewiseHitbox.endPointX.toInt()) {
tileProps.add(TileCodex[world.getTileFromTerrain(x, y)])
tileProps.add(BlockCodex[world.getTileFromTerrain(x, y)])
}
}
@@ -1212,14 +1212,14 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
return tiles.forEach(consumer)
}
private fun forEachFeetTile(consumer: (TileProp?) -> Unit) {
val tileProps = ArrayList<TileProp?>()
private fun forEachFeetTile(consumer: (BlockProp?) -> Unit) {
val tileProps = ArrayList<BlockProp?>()
// offset 1 pixel to the down so that friction would work
val y = nextHitbox.endPointY.plus(1.0).div(TILE_SIZE).floorInt()
for (x in tilewiseHitbox.posX.toInt()..tilewiseHitbox.endPointX.toInt()) {
tileProps.add(TileCodex[world.getTileFromTerrain(x, y)])
tileProps.add(BlockCodex[world.getTileFromTerrain(x, y)])
}
return tileProps.forEach(consumer)

View File

@@ -2,7 +2,7 @@ package net.torvald.terrarum.gameactors
import net.torvald.terrarum.itemproperties.InventoryItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.blockproperties.BlockCodex
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics
@@ -17,8 +17,8 @@ class DroppedItem(private val item: InventoryItem) : ActorWithPhysics(Actor.Rend
isVisible = true
avBaseMass = if (item.dynamicID < TileCodex.TILE_UNIQUE_MAX)
TileCodex[item.dynamicID].density / 1000.0
avBaseMass = if (item.dynamicID < BlockCodex.TILE_UNIQUE_MAX)
BlockCodex[item.dynamicID].density / 1000.0
else
ItemCodex[item.dynamicID].mass

View File

@@ -1,8 +1,7 @@
package net.torvald.terrarum.gameactors
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex
import java.util.*
/**
@@ -11,7 +10,7 @@ import java.util.*
class FixtureTikiTorch : FixtureBase(), Luminous {
override var luminosity: Int
get() = TileCodex[Tile.TORCH].luminosity
get() = BlockCodex[Block.TORCH].luminosity
set(value) {
throw UnsupportedOperationException()
}

View File

@@ -1,6 +1,5 @@
package net.torvald.terrarum.gameactors
import net.torvald.terrarum.mapgenerator.RoguelikeRandomiser
import java.util.*
/**

View File

@@ -2,9 +2,9 @@ package net.torvald.terrarum.gameactors
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.ActorWithPhysics.Companion.SI_TO_GAME_ACC
import net.torvald.terrarum.mapdrawer.FeaturesDrawer.TILE_SIZE
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.worlddrawer.FeaturesDrawer.TILE_SIZE
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex
import org.dyn4j.geometry.Vector2
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics
@@ -43,10 +43,10 @@ open class ParticleBase(renderOrder: Actor.RenderOrder, maxLifeTime: Int? = null
lifetimeCounter += delta
if (velocity.isZero || lifetimeCounter >= lifetimeMax ||
// simple stuck check
TileCodex[Terrarum.ingame!!.world.getTileFromTerrain(
BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(
hitbox.pointedX.div(TILE_SIZE).floorInt(),
hitbox.pointedY.div(TILE_SIZE).floorInt()
) ?: Tile.STONE].isSolid) {
) ?: Block.STONE].isSolid) {
flagDespawn = true
}

View File

@@ -1,10 +1,9 @@
package net.torvald.terrarum.gameactors
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.mapdrawer.FeaturesDrawer.TILE_SIZE
import net.torvald.terrarum.mapgenerator.RoguelikeRandomiser
import net.torvald.terrarum.worlddrawer.FeaturesDrawer.TILE_SIZE
import net.torvald.terrarum.worldgenerator.RoguelikeRandomiser
import org.newdawn.slick.Color
import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics
/**

View File

@@ -1,10 +1,8 @@
package net.torvald.terrarum.gameactors
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.gameactors.ActorHumanoid
import net.torvald.terrarum.gameactors.ai.LuaAIWrapper
import net.torvald.terrarum.mapdrawer.FeaturesDrawer
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
/**
* Created by minjaesong on 16-03-25.

View File

@@ -1,21 +1,13 @@
package net.torvald.terrarum.gameactors
import net.torvald.JsonFetcher
import net.torvald.terrarum.gameactors.faction.Faction
import net.torvald.spriteanimation.SpriteAnimation
import com.google.gson.JsonObject
import net.torvald.terrarum.ActorValue
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.gameactors.ActorHumanoid
import net.torvald.terrarum.gameactors.faction.FactionFactory
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.mapdrawer.FeaturesDrawer
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.to10bit
import net.torvald.terrarum.toInt
import org.newdawn.slick.Color
import org.newdawn.slick.SlickException
import java.io.IOException
/**
* Created by minjaesong on 16-02-03.
@@ -80,12 +72,12 @@ object PlayerBuilderSigrid {
// Test fill up inventory
val tiles = arrayOf(
Tile.AIR, Tile.DIRT, Tile.GLASS_CRUDE,
Tile.GRASS, Tile.GRAVEL, Tile.ICE_MAGICAL, Tile.LANTERN,
Tile.PLANK_BIRCH, Tile.PLANK_BLOODROSE, Tile.PLANK_EBONY, Tile.PLANK_NORMAL,
Tile.SANDSTONE, Tile.SANDSTONE_BLACK, Tile.SANDSTONE_GREEN,
Tile.SANDSTONE_RED, Tile.STONE, Tile.STONE_BRICKS,
Tile.STONE_QUARRIED, Tile.STONE_TILE_WHITE, Tile.TORCH
Block.AIR, Block.DIRT, Block.GLASS_CRUDE,
Block.GRASS, Block.GRAVEL, Block.ICE_MAGICAL, Block.LANTERN,
Block.PLANK_BIRCH, Block.PLANK_BLOODROSE, Block.PLANK_EBONY, Block.PLANK_NORMAL,
Block.SANDSTONE, Block.SANDSTONE_BLACK, Block.SANDSTONE_GREEN,
Block.SANDSTONE_RED, Block.STONE, Block.STONE_BRICKS,
Block.STONE_QUARRIED, Block.STONE_TILE_WHITE, Block.TORCH
)
tiles.forEach { p.addItem(it, 999) }
p.inventory.add(ItemCodex.ITEM_STATIC.first)

View File

@@ -1,8 +1,7 @@
package net.torvald.terrarum.gameactors
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.gameactors.ai.LuaAIWrapper
import net.torvald.terrarum.mapdrawer.FeaturesDrawer
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
/**
* Created by SKYHi14 on 2017-02-10.

View File

@@ -1,11 +1,9 @@
package net.torvald.terrarum.gameactors
import net.torvald.colourutil.CIELabUtil.darkerLab
import net.torvald.point.Point2d
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex
import org.dyn4j.geometry.Vector2
import org.newdawn.slick.Color
import org.newdawn.slick.GameContainer
@@ -75,7 +73,7 @@ open class ProjectileSimple(
lifetimeCounter += delta
if (ccdCollided || grounded || lifetimeCounter >= lifetimeMax ||
// stuck check
TileCodex[Terrarum.ingame!!.world.getTileFromTerrain(feetPosTile[0], feetPosTile[1]) ?: Tile.STONE].isSolid
BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(feetPosTile[0], feetPosTile[1]) ?: Block.STONE].isSolid
) {
flagDespawn()
}

View File

@@ -4,9 +4,9 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AIControlled
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ActorWithPhysics
import net.torvald.terrarum.mapdrawer.LightmapRenderer
import net.torvald.terrarum.tileproperties.Tile
import net.torvald.terrarum.tileproperties.TileCodex
import net.torvald.terrarum.worlddrawer.LightmapRenderer
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex
import org.luaj.vm2.*
import org.luaj.vm2.lib.OneArgFunction
import org.luaj.vm2.lib.ZeroArgFunction
@@ -239,7 +239,7 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) {
luatable[y - feetTilePos[1]] = LuaTable()
for (x in feetTilePos[0] - radius..feetTilePos[0] + radius) {
val tile = TileCodex[Terrarum.ingame!!.world.getTileFromTerrain(x, y) ?: Tile.NULL]
val tile = BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(x, y) ?: Block.NULL]
val solidity = tile.isSolid.toInt()
val liquidity = tile.isFluid.toInt()
val gravity = tile.isFallable.toInt()
@@ -283,8 +283,8 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) {
// search down
var searchDownCounter = 0
while (true) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] + searchDownCounter) ?: Tile.STONE
if (TileCodex[tile].isSolid || searchDownCounter >= searchDownLimit) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] + searchDownCounter) ?: Block.STONE
if (BlockCodex[tile].isSolid || searchDownCounter >= searchDownLimit) {
luatable[x - feetTilePos[0]] = searchDownCounter
break
}
@@ -326,8 +326,8 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) {
// search up
var searchUpCounter = 0
while (true) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Tile.STONE
if (TileCodex[tile].isSolid || searchUpCounter >= searchUpLimit) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE
if (BlockCodex[tile].isSolid || searchUpCounter >= searchUpLimit) {
luatable[x - feetTilePos[0]] = searchUpCounter
break
}
@@ -368,8 +368,8 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) {
// search up
var searchUpCounter = 0
while (true) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Tile.STONE
if (!TileCodex[tile].isSolid || searchUpCounter >= searchUpLimit) {
val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE
if (!BlockCodex[tile].isSolid || searchUpCounter >= searchUpLimit) {
luatable[x - feetTilePos[0]] = searchUpCounter
break
}