update on Kotlin lib, master sprite (psd) is now Lab 16 bits/px

Former-commit-id: 0c344b7472e4935c1c55f35a718623cdbe1ec993
Former-commit-id: 63e163245cab2037de3efbfc72c3d307402c2b46
This commit is contained in:
Song Minjae
2016-03-18 01:17:24 +09:00
parent 73a8e51c31
commit 9335046057
35 changed files with 314 additions and 214 deletions

View File

@@ -0,0 +1,43 @@
package com.Torvald.Serialise
import com.Torvald.Terrarum.MapGenerator.MapGenerator
import com.Torvald.Terrarum.MapGenerator.RoguelikeRandomiser
import com.Torvald.Terrarum.TileProperties.TilePropCodex
import org.apache.commons.codec.digest.DigestUtils
import java.io.FileInputStream
import java.io.File
import java.util.*
/**
* Created by minjaesong on 16-03-15.
*/
object WriteMeta {
val MAGIC: Array<Byte> = arrayOf(
'T'.toByte()
, 'E'.toByte()
, 'S'.toByte()
, 'V'.toByte()
)
val terraseed: Long = MapGenerator.getGeneratorSeed()
val rogueseed: Long = RoguelikeRandomiser.getGeneratorSeed()
fun write() {
var hashArray: ArrayList<ByteArray> = ArrayList()
val fileArray: Array<File> = arrayOf(
File(TilePropCodex.CSV_PATH)
//, File(ItemPropCodex.CSV_PATH)
//, File(MaterialPropCodex.CSV_PATH)
//,
)
for (file in fileArray) {
val inputStream = FileInputStream(file)
val hash = DigestUtils.sha256(inputStream)
hashArray.add(hash)
}
}
}

View File

@@ -13,5 +13,5 @@ interface Actor {
* Valid RefID is equal to or greater than 32768.
* @return Reference ID. (32768-0x7FFF_FFFF_FFFF_FFFF)
*/
var referenceID: Long?
var referenceID: Long
}

View File

@@ -1,20 +1,21 @@
package com.Torvald.Terrarum.Actors
import com.Torvald.Terrarum.GameItem.InventoryItem
import com.Torvald.Terrarum.GameItem.ItemCodex
import com.Torvald.Terrarum.GameItem.ItemPropCodex
import java.util.*
/**
* Created by minjaesong on 16-03-15.
*/
@Transient const val CAPACITY_MAX = 0x7FFFFFFF
@Transient const val CAPACITY_MODE_NO_ENCUMBER = 0
@Transient const val CAPACITY_MODE_COUNT = 1
@Transient const val CAPACITY_MODE_WEIGHT = 2
class ActorInventory {
@Transient val CAPACITY_MAX = 0x7FFFFFFF
@Transient val CAPACITY_MODE_NO_ENCUMBER = 0
@Transient val CAPACITY_MODE_COUNT = 1
@Transient val CAPACITY_MODE_WEIGHT = 2
private var capacityByCount: Int = 0
private var capacityByWeight: Int = 0
private var capacityMode: Int = 0
@@ -80,7 +81,7 @@ class ActorInventory {
var weight = 0f
for (item in itemList.entries) {
weight += ItemCodex.getItem(item.key).weight * item.value
weight += ItemPropCodex.getItem(item.key).weight * item.value
}
return weight

View File

@@ -50,7 +50,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
internal var baseSpriteWidth: Int = 0
internal var baseSpriteHeight: Int = 0
override var referenceID: Long? = null
override var referenceID: Long = HQRNG().nextLong()
/**
* Positions: top-left point
*/
@@ -133,7 +133,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
@Transient private val map: GameMap
init {
referenceID = HQRNG().nextLong()
// referenceID = HQRNG().nextLong() // renew ID just in case
actorValue = ActorValue()
map = Terrarum.game.map
}

View File

@@ -15,6 +15,6 @@ interface CanBeStoredAsItem {
fun resumeUpdateAndDraw()
var itemData: InventoryItem?
var itemData: InventoryItem
}

View File

@@ -12,10 +12,10 @@ import java.io.IOException
* Created by minjaesong on 16-03-14.
*/
private const val JSONPATH = "./res/raw/"
object CreatureFactory {
private val JSONPATH = "./res/raw/"
@JvmStatic
@Throws(IOException::class, SlickException::class)
fun build(jsonFileName: String): ActorWithBody {

View File

@@ -14,14 +14,38 @@ import java.util.*
open class NPCIntelligentBase : ActorWithBody()
, AIControlled, Pocketed, CanBeStoredAsItem, Factionable, LandHolder {
override var itemData: InventoryItem? = null
override var itemData: InventoryItem = object : InventoryItem {
override var itemID = HQRNG().nextLong()
override var weight = 0f
override fun effectWhileInPocket(gc: GameContainer, delta_t: Int) {
}
override fun effectWhenPickedUp(gc: GameContainer, delta_t: Int) {
}
override fun primaryUse(gc: GameContainer, delta_t: Int) {
}
override fun secondaryUse(gc: GameContainer, delta_t: Int) {
}
override fun effectWhenThrownAway(gc: GameContainer, delta_t: Int) {
}
}
@Transient private var ai: ActorAI? = null
override var inventory: ActorInventory? = null
private val factionSet = HashSet<Faction>()
override var referenceID: Long? = null
override var referenceID: Long = HQRNG().nextLong()
override var faction: HashSet<Faction>? = null
@@ -41,33 +65,7 @@ open class NPCIntelligentBase : ActorWithBody()
}
override fun attachItemData() {
val random: Random = HQRNG()
itemData = object : InventoryItem {
override var itemID = random.nextLong()
override var weight = 0f
override fun effectWhileInPocket(gc: GameContainer, delta_t: Int) {
}
override fun effectWhenPickedUp(gc: GameContainer, delta_t: Int) {
}
override fun primaryUse(gc: GameContainer, delta_t: Int) {
}
override fun secondaryUse(gc: GameContainer, delta_t: Int) {
}
override fun effectWhenThrownAway(gc: GameContainer, delta_t: Int) {
}
}
}
override fun getItemWeight(): Float {

View File

@@ -18,20 +18,21 @@ import java.util.*
* Created by minjaesong on 16-03-14.
*/
/**
* empirical value.
*/
// private transient final float JUMP_ACCELERATION_MOD = ???f / 10000f; //quadratic mode
@Transient private const val JUMP_ACCELERATION_MOD = 170f / 10000f //linear mode
@Transient private const val WALK_FRAMES_TO_MAX_ACCEL = 6
@Transient private const val LEFT = 1
@Transient private const val RIGHT = 2
@Transient private const val KEY_NULL = -1
class Player : ActorWithBody, Controllable, Pocketed, Factionable, Luminous, LandHolder {
/**
* empirical value.
*/
// private transient final float JUMP_ACCELERATION_MOD = ???f / 10000f; //quadratic mode
@Transient private val JUMP_ACCELERATION_MOD = 170f / 10000f //linear mode
@Transient private val WALK_FRAMES_TO_MAX_ACCEL = 6
@Transient private val LEFT = 1
@Transient private val RIGHT = 2
@Transient private val KEY_NULL = -1
var vehicleRiding: Controllable? = null
internal var jumpCounter = 0

View File

@@ -1,5 +1,6 @@
package com.Torvald.Terrarum;
import com.Torvald.Rand.HQRNG;
import com.Torvald.Terrarum.Actors.*;
import com.Torvald.Terrarum.ConsoleCommand.Authenticator;
import com.Torvald.Terrarum.ConsoleCommand.CommandDict;
@@ -11,9 +12,11 @@ import com.Torvald.Terrarum.MapDrawer.LightmapRenderer;
import com.Torvald.Terrarum.MapDrawer.MapCamera;
import com.Torvald.Terrarum.MapDrawer.MapDrawer;
import com.Torvald.Terrarum.MapGenerator.MapGenerator;
import com.Torvald.Terrarum.MapGenerator.RoguelikeRandomiser;
import com.Torvald.Terrarum.TileProperties.TilePropCodex;
import com.Torvald.Terrarum.TileStat.TileStat;
import com.Torvald.Terrarum.UserInterface.*;
import com.jme3.math.FastMath;
import org.lwjgl.opengl.ARBShaderObjects;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.*;
@@ -70,6 +73,10 @@ public class Game extends BasicGameState {
private int shaderProgram = 0;
private final int ENV_COLTEMP_SUNRISE = 2500;
private final int ENV_SUNLIGHT_DELTA = MapDrawer.getENV_COLTEMP_NOON() - ENV_COLTEMP_SUNRISE;
@Override
public void init(GameContainer gameContainer, StateBasedGame stateBasedGame) throws
SlickException {
@@ -83,11 +90,12 @@ public class Game extends BasicGameState {
shaderBlurV = Shader.makeShader("./res/blurV.vrt", "./res/blur.frg");
GRADIENT_IMAGE = new Image("res/graphics/backgroundGradientColour.png");
GRADIENT_IMAGE = new Image("res/graphics/sky_colour.png");
skyBox = new Rectangle(0, 0, Terrarum.WIDTH, Terrarum.HEIGHT);
new WorldTime();
new TilePropCodex();
// new ItemPropCodex() -- This is kotlin object and already initialised.
map = new GameMap(8192, 2048);
map.setGravitation(9.8f);
@@ -97,6 +105,10 @@ public class Game extends BasicGameState {
//MapGenerator.setSeed(new HQRNG().nextLong());
MapGenerator.generateMap();
RoguelikeRandomiser.setSeed(0x540198);
//RoguelikeRandomiser.setSeed(new HQRNG().nextLong());
new CommandDict();
// add new player and put it to actorContainer
@@ -128,6 +140,9 @@ public class Game extends BasicGameState {
public void update(GameContainer gc, StateBasedGame sbg, int delta_t) {
setAppTitle();
// GL at after_sunrise-noon_before_sunset
//map.setGlobalLight();
GameController.processInput(gc.getInput());
TileStat.update();
@@ -376,4 +391,13 @@ public class Game extends BasicGameState {
public long getTotalVMMem() {
return totalVMMem;
}
private int getSunlightColtemp() {
int half_today = WorldTime.DAY_LENGTH / 2;
int timeToday = WorldTime.elapsedSeconds();
float sunAlt = (timeToday < half_today) ?
timeToday / half_today * FastMath.PI
: 0f;
return Math.round(ENV_COLTEMP_SUNRISE + (ENV_SUNLIGHT_DELTA * FastMath.sin(sunAlt)));
}
}

View File

@@ -1,21 +0,0 @@
package com.Torvald.Terrarum.GameItem
import java.util.*
/**
* Created by minjaesong on 16-03-15.
*/
object ItemCodex {
/**
* &lt;ItemID or RefID for Actor, TheItem&gt;
* Will return corresponding Actor if ID >= 32768
*/
private val itemCodex: HashMap<Long, InventoryItem> = HashMap(
// hashmap init here
)
fun getItem(code: Long): InventoryItem {
return itemCodex[code]!!
}
}

View File

@@ -0,0 +1,43 @@
package com.Torvald.Terrarum.GameItem
import com.Torvald.Terrarum.Actors.CanBeStoredAsItem
import com.Torvald.Terrarum.Terrarum
import org.newdawn.slick.GameContainer
import java.util.*
/**
* Created by minjaesong on 16-03-15.
*/
object ItemPropCodex {
val CSV_PATH = "./src/com/Torvald/Terrarum/ItemProperties/itemprop.csv"
/**
* &lt;ItemID or RefID for Actor, TheItem&gt;
* Will return corresponding Actor if ID >= 32768
*/
private lateinit var itemCodex: Array<InventoryItem>
@JvmStatic val ITEM_UNIQUE_MAX = 32768
@JvmStatic
fun buildItemProp() {
itemCodex = arrayOf<InventoryItem>()
// read prop in csv
}
fun getItem(code: Long): InventoryItem {
if (code < ITEM_UNIQUE_MAX)
return itemCodex[code as Int]!!
else {
for (actor in Terrarum.game.actorContainer) {
if (actor is CanBeStoredAsItem && actor.referenceID!!.equals(code))
return actor.itemData
}
throw NullPointerException()
}
}
}

View File

@@ -0,0 +1,38 @@
package com.Torvald.Terrarum.GameItem
import com.Torvald.Terrarum.TileProperties.TilePropCodex
import org.newdawn.slick.GameContainer
/**
* Created by minjaesong on 16-03-15.
*/
class TileAsItem(tileNum: Int) : InventoryItem {
override var itemID: Long = -1
override var weight: Float = 0f
init {
itemID = tileNum as Long
weight = TilePropCodex.getProp(tileNum).density / 1000f
}
override fun effectWhileInPocket(gc: GameContainer, delta_t: Int) {
throw UnsupportedOperationException()
}
override fun effectWhenPickedUp(gc: GameContainer, delta_t: Int) {
throw UnsupportedOperationException()
}
override fun primaryUse(gc: GameContainer, delta_t: Int) {
throw UnsupportedOperationException()
}
override fun secondaryUse(gc: GameContainer, delta_t: Int) {
throw UnsupportedOperationException()
}
override fun effectWhenThrownAway(gc: GameContainer, delta_t: Int) {
throw UnsupportedOperationException()
}
}

View File

@@ -7,25 +7,28 @@ import java.io.Serializable;
*/
public class WorldTime {
private int seconds = 0;
private int minutes = 0;
private int hours = 0;
private static int seconds = 0;
private static int minutes = 0;
private static int hours = 0;
private int daysCount = 0; //NOT a calendar day
private static int daysCount = 0; //NOT a calendar day
private int days = 1;
private int months = 1;
private int years = 1;
private static int days = 1;
private static int months = 1;
private static int years = 1;
private int dayOfWeek = 0; //0: Mondag-The first day of weekday
private static int dayOfWeek = 0; //0: Mondag-The first day of weekday
/**
* 22h
*/
public static transient final int DAY_LENGTH = 79200; //must be the multiple of 3600
private int timeDelta = 1;
private static int timeDelta = 1;
private static transient final int HOUR_SEC = 3600;
private static transient final int MINUTE_SEC = 60;
public final String[] DAYNAMES = { //daynames are taken from Nynorsk (å -> o)
public static final String[] DAYNAMES = { //daynames are taken from Nynorsk (å -> o)
"Mondag"
,"Tysdag"
,"Midtedag" //From Islenska Miðvikudagur
@@ -35,7 +38,7 @@ public class WorldTime {
,"Sundag"
,"Verdag" //From Norsk word 'verd'
};
public final String[] DAYNAMES_SHORT = {
public static final String[] DAYNAMES_SHORT = {
"Mon"
,"Tys"
,"Mid"
@@ -52,7 +55,7 @@ public class WorldTime {
/**
* Note: Target FPS must be 60.
*/
public void update(){
public static void update(){
//time
seconds += timeDelta;
@@ -87,10 +90,11 @@ public class WorldTime {
}
/**
* How much time has passed today, in seconds.
* How much time has passed today, in seconds. <br />
* 0 == 6 AM
* @return
*/
public int elapsedSeconds(){
public static int elapsedSeconds(){
return (HOUR_SEC * hours + MINUTE_SEC * minutes + seconds) % DAY_LENGTH;
}
@@ -98,34 +102,34 @@ public class WorldTime {
* How much time has passed since the beginning, in seconds.
* @return
*/
public long totalSeconds(){
public static long totalSeconds(){
return (long)(DAY_LENGTH) * daysCount + HOUR_SEC * hours + MINUTE_SEC * minutes + seconds;
}
public boolean isLeapYear(){
public static boolean isLeapYear(){
return ((years % 4 == 0) && (years % 100 != 0)) || (years % 400 == 0);
}
public void setTime(int t){
public static void setTime(int t){
days += t / DAY_LENGTH;
hours = t / HOUR_SEC;
minutes = (t - HOUR_SEC * hours) / MINUTE_SEC;
seconds = t - minutes * MINUTE_SEC;
}
public void addTime(int t){
public static void addTime(int t){
setTime(elapsedSeconds() + t);
}
public void setTimeDelta(int d){
public static void setTimeDelta(int d){
timeDelta = (d == 0) ? 1 : d;
}
public String getDayName(){
public static String getDayName(){
return DAYNAMES[dayOfWeek];
}
private void kickVariables() {
private static void kickVariables() {
if (seconds >= 60){
seconds = 0;
minutes++;

View File

@@ -0,0 +1,6 @@
package com.Torvald.Terrarum.MapDrawer
/**
* Created by minjaesong on 16-03-15.
*/
internal data class LightmapLantern(var x: Int, var y: Int, var intensity: Char)

View File

@@ -3,6 +3,7 @@ package com.Torvald.Terrarum.MapDrawer
import com.Torvald.ColourUtil.Col40
import com.Torvald.Terrarum.Actors.ActorWithBody
import com.Torvald.Terrarum.Actors.Luminous
import com.Torvald.Terrarum.GameMap.WorldTime
import com.Torvald.Terrarum.Terrarum
import com.Torvald.Terrarum.TileProperties.TilePropCodex
import com.jme3.math.FastMath
@@ -714,5 +715,3 @@ object LightmapRenderer {
return Col40().createSlickColor(raw.toInt())
}
}
internal data class LightmapLantern(var x: Int, var y: Int, var intensity: Char)

View File

@@ -18,8 +18,7 @@ object MapDrawer {
@JvmStatic private val ENV_COLTEMP_LOWEST = 5500
@JvmStatic private val ENV_COLTEMP_HIGHEST = 7500
@JvmStatic private val ENV_COLTEMP_GOLDEN_HOUR = 5000
@JvmStatic private val ENV_COLTEMP_NOON = 6500
@JvmStatic val ENV_COLTEMP_NOON = 6500
private var colTemp: Int = 0
@@ -54,9 +53,8 @@ object MapDrawer {
val zoom = Terrarum.game.screenZoom
g.color = getColourFromMap(colTemp)
//g.color = getColourFromMap(3022)
g.fillRect(MapCamera.getCameraX() * zoom, MapCamera.getCameraY() * zoom, Terrarum.WIDTH * if (zoom < 1) 1f / zoom else zoom, Terrarum.HEIGHT * if (zoom < 1) 1f / zoom else zoom)
// TODO colour overlay by sun position (5000-morning -> 6500-noon -> 5000-twilight)
}
/**
@@ -71,7 +69,8 @@ object MapDrawer {
return Math.round((ENV_COLTEMP_HIGHEST - ENV_COLTEMP_LOWEST) / 2 * FastMath.clamp(x, -1f, 1f) + colTempMedian)
}
private fun getColourFromMap(K: Int): Color {
@JvmStatic
fun getColourFromMap(K: Int): Color {
return envOverlayColourmap.getColor(colTempToImagePos(K), 0)
}

View File

@@ -15,7 +15,7 @@ object MapGenerator {
private lateinit var map: GameMap
private lateinit var random: Random
//private static float[] noiseArray;
private var seed: Long = 0
private var seed: Long? = null
private var width: Int = 0
private var height: Int = 0
@@ -90,7 +90,7 @@ object MapGenerator {
*/
@JvmStatic
fun generateMap() {
random = HQRNG(seed)
random = HQRNG(seed!!)
println("[MapGenerator] Seed: " + seed)
worldOceanPosition = if (random.nextBoolean()) TYPE_OCEAN_LEFT else TYPE_OCEAN_RIGHT
@@ -216,8 +216,8 @@ object MapGenerator {
private fun caveGen(xStretch: Float, yStretch: Float): Array<FloatArray> {
val noiseMap = Array(height) { FloatArray(width) }
val simplexNoise = SimplexNoise(CAVEGEN_LARGEST_FEATURE, CAVEGEN_PERTURB_RATE, seed)
val simplexNoisePerturbMap = SimplexNoise(CAVEGEN_LARGEST_FEATURE_PERTURB, 0.5f, seed xor random.nextLong())
val simplexNoise = SimplexNoise(CAVEGEN_LARGEST_FEATURE, CAVEGEN_PERTURB_RATE, seed!!)
val simplexNoisePerturbMap = SimplexNoise(CAVEGEN_LARGEST_FEATURE_PERTURB, 0.5f, seed!! xor random.nextLong())
val xEnd = width * yStretch
val yEnd = height * xStretch
@@ -283,7 +283,7 @@ object MapGenerator {
* @return matrix in ![x][y]!
*/
private fun generate2DSimplexNoise(sizeX: Int, sizeY: Int, xStretch: Float, yStretch: Float): Array<FloatArray> {
val simplexNoise = SimplexNoise(CAVE_LARGEST_FEATURE, 0.1f, seed xor random.nextLong())
val simplexNoise = SimplexNoise(CAVE_LARGEST_FEATURE, 0.1f, seed!! xor random.nextLong())
val xStart = 0f
val yStart = 0f
@@ -524,7 +524,7 @@ object MapGenerator {
}
private fun perturbTerrain() {
val perturbGen = SimplexNoise(TERRAIN_PERTURB_LARGESTFEATURE, TERRAIN_PERTURB_RATE, seed xor random.nextLong())
val perturbGen = SimplexNoise(TERRAIN_PERTURB_LARGESTFEATURE, TERRAIN_PERTURB_RATE, seed!! xor random.nextLong())
val perturbMap = Array(height) { FloatArray(width) }
@@ -960,7 +960,7 @@ object MapGenerator {
private fun fillOcean() {
val thisSandList = intArrayOf(TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK, TileNameCode.SAND_GREEN, TileNameCode.SAND_BEACH, TileNameCode.SAND_BEACH, TileNameCode.SAND_BLACK)
val thisRand = HQRNG(seed xor random.nextLong())
val thisRand = HQRNG(seed!! xor random.nextLong())
val thisSand = thisSandList[thisRand.nextInt(thisSandList.size)]
val thisSandStr = if (thisSand == TileNameCode.SAND_BLACK)
@@ -1063,6 +1063,11 @@ object MapGenerator {
return TERRAIN_AVERAGE_HEIGHT - heightMap!![x]
}
@JvmStatic
fun getGeneratorSeed(): Long {
return seed!!
}
/* Utility */
private fun clampN(clampNumber: Int, num: Int): Int {

View File

@@ -0,0 +1,44 @@
package com.Torvald.Terrarum.MapGenerator
import com.Torvald.ColourUtil.Col4096
import com.Torvald.Rand.HQRNG
import java.util.*
/**
* Created by minjaesong on 16-03-15.
*/
object RoguelikeRandomiser {
private val POTION_PRIMARY_COLSET = intArrayOf(15, 15, 7, 7, 0, 0)
private var potionColours: HashMap<Int, Col4096> = HashMap()
private var coloursDiscovered: HashMap<Col4096, Boolean> = HashMap()
val coloursTaken: ArrayList<Col4096> = ArrayList()
private var seed: Long? = null
private val random: Random = HQRNG()
private val POTION_HEAL_TIER1 = 0x00
private val POTION_HEAL_TIRE2 = 0x01
private val POTION_MAGIC_REGEN_TIER1 = 0x10
private val POTION_BERSERK_TIER1 = 0x20
@JvmStatic
fun setSeed(seed: Long) {
this.seed = seed
}
@JvmStatic
fun setupColours() {
}
fun getGeneratorSeed(): Long {
return seed!!
}
}

View File

@@ -1,35 +0,0 @@
package com.Torvald.Terrarum;
import com.Torvald.ColourUtil.Col4096;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by minjaesong on 16-02-23.
*/
public class RoguelikeRandomiser {
private static transient final int[] POTION_PRIMARY_COLSET = {15, 15, 8, 8, 0, 0};
private static HashMap<Integer, Col4096> potionColours;
private static HashMap<Col4096, Boolean> coloursDiscovered;
private static ArrayList<Col4096> coloursTaken;
private static transient final int POTION_HEAL_TIER1 = 0x00;
private static transient final int POTION_HEAL_TIRE2 = 0x01;
private static transient final int POTION_MAGIC_REGEN_TIER1 = 0x10;
private static transient final int POTION_BERSERK_TIER1 = 0x20;
public RoguelikeRandomiser() {
potionColours = new HashMap<>();
coloursTaken = new ArrayList<>();
}
}

View File

@@ -6,12 +6,13 @@
Byte[4] TESV Magic
Byte[n] name Savegame name, UTF-8
Byte null String terminator
Byte NULL String terminator
Byte[8] terraseed Terrain seed
Byte[8] rogueseed Randomiser seed
Byte[32] hash1 SHA-256 hash of worldinfo1 being stored
Byte[32] hash2 SHA-256 hash of worldinfo2 being stored
Byte[32] hash4 SHA-256 hash of worldinfo3 beihg stored (TEMD data) [32, 214, 42, 3, 76, ...]
Byte[32] hash3 SHA-256 hash of worldinfo3 being stored
Byte[32] hash4 SHA-256 hash of worldinfo4 being stored (TEMD data) [32, 214, 42, 3, 76, ...]
* Actor data
@@ -22,7 +23,9 @@
* Prop data
- GZip'd CSV
- Filename : worldinfo1 -- tileprop.csv
worldinfo2 -- itemprop.csv (with no extension)
worldinfo2 -- itemprop.csv
worldinfo3 -- materialprop.csv
(with no extension)
* Roguelike randomiser data
@@ -33,6 +36,7 @@
* Human-readable
- Tiles_list.txt -- list of tiles in csv
- Items_list.txt -- list of items in csv
- Materials_list.txt -- list of materials in csv
@@ -50,4 +54,5 @@
--- world save meta
--- worldinfo1 tileprop
--- worldinfo2 itemprop
--- worldinfo3 TEMD binary
--- worldinfo3 materialprop
--- worldinfo4 TEMD binary

View File

@@ -15,6 +15,8 @@ public class TilePropCodex {
private static TileProp[] tileProps;
public static final String CSV_PATH = "./src/com/Torvald/Terrarum/TileProperties/tileprop.csv";
public TilePropCodex() {
tileProps = new TileProp[MapLayer.RANGE * (PairedMapLayer.RANGE)];
@@ -24,8 +26,7 @@ public class TilePropCodex {
try {
// todo verify CSV using pre-calculated SHA256 hash
List<CSVRecord> records = CSVFetcher.readCSV("" +
"./src/com/Torvald/Terrarum/TileProperties/tileprop.csv");
List<CSVRecord> records = CSVFetcher.readCSV(CSV_PATH);
System.out.println("[TilePropCodex] Building tile properties table");

View File

@@ -1,24 +0,0 @@
package com.Torvald.Terrarum.UserInterface;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import java.util.LinkedList;
/**
* Created by minjaesong on 15-12-31. <br>
*/
public interface UICanvas {
int getWidth();
int getHeight();
void update(GameContainer gc, int delta_t);
void render(GameContainer gc, Graphics g);
void processInput(Input input);
}

View File

@@ -1,22 +0,0 @@
package com.Torvald.Terrarum.UserInterface;
/**
* Created by minjaesong on 16-03-06.
*/
public interface UIClickable {
void mouseMoved(int oldx, int oldy, int newx, int newy);
void mouseDragged(int oldx, int oldy, int newx, int newy);
void mousePressed(int button, int x, int y);
void mouseReleased(int button, int x, int y);
void mouseWheelMoved(int change);
void controllerButtonPressed(int controller, int button);
void controllerButtonReleased(int controller, int button);
}

View File

@@ -1,12 +0,0 @@
package com.Torvald.Terrarum.UserInterface;
/**
* Created by minjaesong on 16-03-06.
*/
public interface UITypable {
void keyPressed(int key, char c);
void keyReleased(int key, char c);
}