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

@@ -7,6 +7,9 @@
<JetCodeStyleSettings>
<option name="ALIGN_IN_COLUMNS_CASE_BRANCH" value="true" />
</JetCodeStyleSettings>
<MultiMarkdownCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MultiMarkdownCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>

View File

@@ -6,13 +6,12 @@ This project mainly uses Kotlin and Java, Python/Lua/etc. for tools.
Documentations and resources for work (such as .psd) are also included in the repo. You will need Mac computer to read and edit documentations in .gcx and .numbers.
Any contribution in this project is sorely in English, so be sure to use English in codes, comments, etc.
Any contribution in this project must be made sorely in English, so be sure to use English in codes, comments, etc.
## Setup ##
* Configuration
Just make sure you have Java version 8 or higher
* Dependencies
JRE 1.8
Just make sure you have JDK 8 or higher
* Required libraries are included in the repository.
## Contribution guidelines ##

View File

@@ -4,10 +4,11 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="ibxm" level="project" />
<orderEntry type="library" name="lib" level="project" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 728 B

BIN
res/graphics/sky_colour.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

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);
}

Binary file not shown.