com.torvald → net.torvald

Former-commit-id: 375604da8a20a6ba7cd0a8d05a44add02b2d04f4
Former-commit-id: 287287c5920b07618174d7a7573f049d350ded66
This commit is contained in:
Song Minjae
2016-04-12 12:29:02 +09:00
parent 2a34efb489
commit ac9f5b5138
148 changed files with 473 additions and 524 deletions

View File

@@ -1,4 +1,4 @@
package com.torvald package net.torvald
import org.apache.commons.csv.CSVFormat import org.apache.commons.csv.CSVFormat
import org.apache.commons.csv.CSVParser import org.apache.commons.csv.CSVParser

View File

@@ -1,4 +1,4 @@
package com.torvald package net.torvald
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.google.gson.JsonParser import com.google.gson.JsonParser

View File

@@ -1,4 +1,4 @@
package com.torvald package net.torvald
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonElement import com.google.gson.JsonElement

View File

@@ -1,6 +1,6 @@
package com.torvald package net.torvald
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import javax.imageio.ImageIO import javax.imageio.ImageIO
import java.awt.* import java.awt.*

View File

@@ -1,4 +1,4 @@
package com.torvald.colourutil package net.torvald.colourutil
import org.newdawn.slick.Color import org.newdawn.slick.Color

View File

@@ -1,4 +1,4 @@
package com.torvald.colourutil package net.torvald.colourutil
import org.newdawn.slick.Color import org.newdawn.slick.Color

View File

@@ -1,4 +1,4 @@
package com.torvald.colourutil package net.torvald.colourutil
/** /**
* Created by minjaesong on 16-03-10. * Created by minjaesong on 16-03-10.

View File

@@ -1,4 +1,4 @@
package com.torvald.colourutil package net.torvald.colourutil
import com.jme3.math.FastMath import com.jme3.math.FastMath
import org.newdawn.slick.Color import org.newdawn.slick.Color

View File

@@ -1,4 +1,4 @@
package com.torvald.colourutil package net.torvald.colourutil
import org.newdawn.slick.Color import org.newdawn.slick.Color

View File

@@ -1,6 +1,6 @@
package com.torvald.imagefont package net.torvald.imagefont
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import org.newdawn.slick.* import org.newdawn.slick.*

View File

@@ -1,6 +1,6 @@
package com.torvald.imagefont package net.torvald.imagefont
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import org.newdawn.slick.* import org.newdawn.slick.*
/** /**

View File

@@ -1,4 +1,4 @@
package com.torvald.point package net.torvald.point
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,4 +1,4 @@
package com.torvald.random package net.torvald.random
import java.util.Random import java.util.Random

View File

@@ -1,4 +1,4 @@
package com.torvald.random package net.torvald.random
import java.util.Random import java.util.Random

View File

@@ -1,4 +1,4 @@
package com.torvald.random; package net.torvald.random;
import java.util.Random; import java.util.Random;
//import java.util.concurrent.locks.*; //import java.util.concurrent.locks.*;

View File

@@ -1,4 +1,4 @@
package com.torvald.random; package net.torvald.random;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;

View File

@@ -1,10 +1,10 @@
package com.torvald.serialise package net.torvald.serialise
import com.torvald.CSVFetcher import net.torvald.CSVFetcher
import com.torvald.terrarum.itemproperties.ItemPropCodex import net.torvald.terrarum.itemproperties.ItemPropCodex
import com.torvald.terrarum.itemproperties.MaterialPropCodex import net.torvald.terrarum.itemproperties.MaterialPropCodex
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import java.io.IOException import java.io.IOException
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path

View File

@@ -1,7 +1,7 @@
package com.torvald.serialise package net.torvald.serialise
import com.torvald.terrarum.gamemap.GameMap import net.torvald.terrarum.gamemap.GameMap
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import java.io.IOException import java.io.IOException
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path

View File

@@ -1,9 +1,9 @@
package com.torvald.serialise package net.torvald.serialise
import com.torvald.terrarum.mapgenerator.MapGenerator import net.torvald.terrarum.mapgenerator.MapGenerator
import com.torvald.terrarum.mapgenerator.RoguelikeRandomiser import net.torvald.terrarum.mapgenerator.RoguelikeRandomiser
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import org.apache.commons.codec.digest.DigestUtils import org.apache.commons.codec.digest.DigestUtils
import java.io.FileInputStream import java.io.FileInputStream
import java.io.File import java.io.File

View File

@@ -1,4 +1,4 @@
package com.torvald.simplecipher package net.torvald.simplecipher
/** /**
* Created by minjaesong on 16-03-20. * Created by minjaesong on 16-03-20.

View File

@@ -2,10 +2,10 @@
* This code is based on the original author's code written in Lua. * This code is based on the original author's code written in Lua.
*/ */
package com.torvald.spriteanimation package net.torvald.spriteanimation
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.jme3.math.FastMath import com.jme3.math.FastMath
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics
import org.newdawn.slick.Image import org.newdawn.slick.Image

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum package net.torvald.terrarum
import com.google.gson.JsonObject import com.google.gson.JsonObject

View File

@@ -1,24 +1,24 @@
package com.torvald.terrarum package net.torvald.terrarum
import com.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameactors.*
import com.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.Authenticator
import com.torvald.terrarum.gamecontroller.GameController import net.torvald.terrarum.gamecontroller.GameController
import com.torvald.terrarum.gamecontroller.Key import net.torvald.terrarum.gamecontroller.Key
import com.torvald.terrarum.gamecontroller.KeyMap import net.torvald.terrarum.gamecontroller.KeyMap
import com.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gamecontroller.KeyToggler
import com.torvald.terrarum.gamemap.GameMap import net.torvald.terrarum.gamemap.GameMap
import com.torvald.terrarum.gamemap.WorldTime import net.torvald.terrarum.gamemap.WorldTime
import com.torvald.terrarum.mapdrawer.LightmapRenderer import net.torvald.terrarum.mapdrawer.LightmapRenderer
import com.torvald.terrarum.mapdrawer.MapCamera import net.torvald.terrarum.mapdrawer.MapCamera
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import com.torvald.terrarum.mapgenerator.MapGenerator import net.torvald.terrarum.mapgenerator.MapGenerator
import com.torvald.terrarum.mapgenerator.RoguelikeRandomiser import net.torvald.terrarum.mapgenerator.RoguelikeRandomiser
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import com.torvald.terrarum.tilestats.TileStats import net.torvald.terrarum.tilestats.TileStats
import com.torvald.terrarum.ui.BasicDebugInfoWindow import net.torvald.terrarum.ui.BasicDebugInfoWindow
import com.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.ui.ConsoleWindow
import com.torvald.terrarum.ui.Notification import net.torvald.terrarum.ui.Notification
import com.torvald.terrarum.ui.UIHandler import net.torvald.terrarum.ui.UIHandler
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import org.newdawn.slick.* import org.newdawn.slick.*
import org.newdawn.slick.fills.GradientFill import org.newdawn.slick.fills.GradientFill
@@ -102,7 +102,7 @@ constructor() : BasicGameState() {
// add new player and put it to actorContainer // add new player and put it to actorContainer
player = PFSigrid.create() player = PBSigrid.create()
//player = PFCynthia.create() //player = PFCynthia.create()
//player.setNoClip(true); //player.setNoClip(true);
addActor(player) addActor(player)

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum package net.torvald.terrarum
/** /**
* Created by minjaesong on 16-03-19. * Created by minjaesong on 16-03-19.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum package net.torvald.terrarum
import com.google.gson.JsonPrimitive import com.google.gson.JsonPrimitive
import java.util.* import java.util.*

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum package net.torvald.terrarum
import com.torvald.imagefont.GameFontWhite import net.torvald.imagefont.GameFontWhite
import com.torvald.JsonFetcher import net.torvald.JsonFetcher
import com.torvald.JsonWriter import net.torvald.JsonWriter
import org.lwjgl.input.Controllers import org.lwjgl.input.Controllers
import org.lwjgl.opengl.GL11 import org.lwjgl.opengl.GL11
import org.newdawn.slick.AppGameContainer import org.newdawn.slick.AppGameContainer

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.ui.ConsoleWindow
import org.apache.commons.codec.digest.DigestUtils import org.apache.commons.codec.digest.DigestUtils
/** /**

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import java.nio.file.FileSystems import java.nio.file.FileSystems
import java.nio.file.Files import java.nio.file.Files

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import java.io.IOException import java.io.IOException
import java.nio.file.FileSystems import java.nio.file.FileSystems

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.ui.ConsoleWindow
import java.util.Formatter import java.util.Formatter

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import java.util.HashMap import java.util.HashMap

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import java.util.ArrayList import java.util.ArrayList
import java.util.Formatter import java.util.Formatter

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.ui.ConsoleWindow
import java.util.Arrays import java.util.Arrays

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.JsonWriter import net.torvald.JsonWriter
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import java.io.IOException import java.io.IOException

View File

@@ -1,9 +1,9 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.colourutil.Col4096 import net.torvald.colourutil.Col4096
import com.torvald.RasterWriter import net.torvald.RasterWriter
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.tileproperties.TileNameCode import net.torvald.terrarum.tileproperties.TileNameCode
import java.io.* import java.io.*
import java.util.HashMap import java.util.HashMap

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
/** /**
* Created by minjaesong on 16-01-18. * Created by minjaesong on 16-01-18.

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.gameactors.ActorValue import net.torvald.terrarum.gameactors.ActorValue
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-19. * Created by minjaesong on 16-01-19.

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import java.util.HashSet import java.util.HashSet

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-22. * Created by minjaesong on 16-01-22.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-03-20. * Created by minjaesong on 16-03-20.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonElement import com.google.gson.JsonElement

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
/** /**
* Created by minjaesong on 16-03-22. * Created by minjaesong on 16-03-22.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.ui.Notification import net.torvald.terrarum.ui.Notification
/** /**
* Created by minjaesong on 16-01-23. * Created by minjaesong on 16-01-23.

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.mapdrawer.LightmapRenderer import net.torvald.terrarum.mapdrawer.LightmapRenderer
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-02-17. * Created by minjaesong on 16-02-17.

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.imagefont.GameFontBase import net.torvald.imagefont.GameFontBase
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import org.apache.commons.csv.CSVRecord import org.apache.commons.csv.CSVRecord
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.gamemap.WorldTime import net.torvald.terrarum.gamemap.WorldTime
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-03-20. * Created by minjaesong on 16-03-20.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-03-20. * Created by minjaesong on 16-03-20.

View File

@@ -1,10 +1,10 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.Actor
import com.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.ActorWithBody
import com.torvald.terrarum.gameactors.PhysTestBall import net.torvald.terrarum.gameactors.PhysTestBall
import com.torvald.terrarum.mapdrawer.MapCamera import net.torvald.terrarum.mapdrawer.MapCamera
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-03-05. * Created by minjaesong on 16-03-05.

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-24. * Created by minjaesong on 16-01-24.

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Game import net.torvald.terrarum.Game
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-19. * Created by minjaesong on 16-01-19.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.console package net.torvald.terrarum.console
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
/** /**
* Created by minjaesong on 16-01-25. * Created by minjaesong on 16-01-25.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameactors.ai.ActorAI
/** /**
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
/** /**
* Created by minjaesong on 16-04-02. * Created by minjaesong on 16-04-02.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.gameitem.InventoryItem import net.torvald.terrarum.gameitem.InventoryItem
import com.torvald.terrarum.itemproperties.ItemPropCodex import net.torvald.terrarum.itemproperties.ItemPropCodex
import java.util.* import java.util.*
/** /**

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.KVHashMap import net.torvald.terrarum.KVHashMap
/** /**
* Created by minjaesong on 16-03-19. * Created by minjaesong on 16-03-19.

View File

@@ -1,13 +1,13 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.random.HQRNG import net.torvald.random.HQRNG
import com.torvald.terrarum.* import net.torvald.terrarum.*
import com.torvald.terrarum.gamemap.GameMap import net.torvald.terrarum.gamemap.GameMap
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import com.torvald.spriteanimation.SpriteAnimation import net.torvald.spriteanimation.SpriteAnimation
import com.jme3.math.FastMath import com.jme3.math.FastMath
import com.torvald.terrarum.tileproperties.TileNameCode import net.torvald.terrarum.tileproperties.TileNameCode
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics
@@ -57,8 +57,8 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
/** /**
* Positions: top-left point * Positions: top-left point
*/ */
@Volatile var hitbox: Hitbox? = null val hitbox = Hitbox(0f,0f,0f,0f)
@Volatile @Transient var nextHitbox: Hitbox? = null @Transient val nextHitbox = Hitbox(0f,0f,0f,0f)
/** /**
* Physical properties * Physical properties
@@ -127,16 +127,14 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
*/ */
@Transient val INVINCIBILITY_TIME = 500 @Transient val INVINCIBILITY_TIME = 500
/**
* Will ignore fluid resistance if (submerged height / actor height) <= this var
*/
@Transient private val FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO = 0.2f
@Transient private val FLUID_RESISTANCE_APPLY_FULL_RATIO = 0.5f
@Transient private val map: GameMap @Transient private val map: GameMap
@Transient private val MASS_DEFAULT = 60f @Transient private val MASS_DEFAULT = 60f
private var posAdjustX = 0
private var posAdjustY = 0
init { init {
do { do {
referenceID = HQRNG().nextLong() // set new ID referenceID = HQRNG().nextLong() // set new ID
@@ -172,11 +170,17 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
* @param y * @param y
*/ */
fun setPosition(x: Float, y: Float) { fun setPosition(x: Float, y: Float) {
hitbox = Hitbox( hitbox.set(
x - (baseHitboxW / 2 - hitboxTranslateX) * scale, y - (baseHitboxH - hitboxTranslateY) * scale, baseHitboxW * scale, baseHitboxH * scale) x - (baseHitboxW / 2 - hitboxTranslateX) * scale,
y - (baseHitboxH - hitboxTranslateY) * scale,
baseHitboxW * scale,
baseHitboxH * scale)
nextHitbox = Hitbox( nextHitbox.set(
x - (baseHitboxW / 2 - hitboxTranslateX) * scale, y - (baseHitboxH - hitboxTranslateY) * scale, baseHitboxW * scale, baseHitboxH * scale) x - (baseHitboxW / 2 - hitboxTranslateX) * scale,
y - (baseHitboxH - hitboxTranslateY) * scale,
baseHitboxW * scale,
baseHitboxH * scale)
} }
private fun updatePhysicalInfos() { private fun updatePhysicalInfos() {
@@ -216,24 +220,16 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
// Actors are subject to the gravity and the buoyancy if they are not levitating // Actors are subject to the gravity and the buoyancy if they are not levitating
if (!isNoSubjectToGrav) { if (!isNoSubjectToGrav) {
applyGravitation() applyGravitation()
applyBuoyancy() //applyBuoyancy()
} }
// hard limit velocity // hard limit velocity
if (veloX > VELO_HARD_LIMIT) veloX = VELO_HARD_LIMIT if (veloX > VELO_HARD_LIMIT) veloX = VELO_HARD_LIMIT
if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT if (veloY > VELO_HARD_LIMIT) veloY = VELO_HARD_LIMIT
// limit velocity by fluid resistance
//int tilePropResistance = getTileMvmtRstc();
//if (!noSubjectToFluidResistance) {
// veloX *= mvmtRstcToMultiplier(tilePropResistance);
// veloY *= mvmtRstcToMultiplier(tilePropResistance);
//}
// Set 'next' position (hitbox) to fiddle with // Set 'next' position (hitbox) to fiddle with
updateNextHitboxFromVelo() updateNextHitboxFromVelo()
// if not horizontally moving then ... // if not horizontally moving then ...
//if (Math.abs(veloX) < 0.5) { // fix for special situations (see fig. 1 at the bottom of the source) //if (Math.abs(veloX) < 0.5) { // fix for special situations (see fig. 1 at the bottom of the source)
// updateVerticalPos(); // updateVerticalPos();
@@ -286,10 +282,12 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
if (veloY >= 0) { // check downward if (veloY >= 0) { // check downward
if (isColliding(CONTACT_AREA_BOTTOM)) { // the ground has dug into the body if (isColliding(CONTACT_AREA_BOTTOM)) { // the ground has dug into the body
adjustHitBottom() adjustHitBottom()
veloY = 0f // reset veloY, simulating normal force
elasticReflectY() elasticReflectY()
grounded = true grounded = true
} }
else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) { // the actor is standing ON the ground else if (isColliding(CONTACT_AREA_BOTTOM, 0, 1)) { // the actor is standing ON the ground
veloY = 0f // reset veloY, simulating normal force
elasticReflectY() elasticReflectY()
grounded = true grounded = true
} }
@@ -301,9 +299,11 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
grounded = false grounded = false
if (isColliding(CONTACT_AREA_TOP)) { // the ceiling has dug into the body if (isColliding(CONTACT_AREA_TOP)) { // the ceiling has dug into the body
adjustHitTop() adjustHitTop()
veloY = 0f // reset veloY, simulating normal force
elasticReflectY() elasticReflectY()
} }
else if (isColliding(CONTACT_AREA_TOP, 0, -1)) { // the actor is touching the ceiling else if (isColliding(CONTACT_AREA_TOP, 0, -1)) { // the actor is touching the ceiling
veloY = 0f // reset veloY, simulating normal force
elasticReflectY() // reflect on ceiling, for reversed gravity elasticReflectY() // reflect on ceiling, for reversed gravity
} }
else { // the actor is not grounded at all else { // the actor is not grounded at all
@@ -313,9 +313,9 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
} }
private fun adjustHitBottom() { private fun adjustHitBottom() {
val newX = nextHitbox!!.pointedX // look carefully, getPos or getPointed val newX = nextHitbox.pointedX // look carefully, getPos or getPointed
// int-ify posY of nextHitbox // int-ify posY of nextHitbox
nextHitbox!!.setPositionYFromPoint(FastMath.floor(nextHitbox!!.pointedY).toFloat()) nextHitbox.setPositionYFromPoint(FastMath.floor(nextHitbox.pointedY).toFloat())
var newYOff = 0 // always positive var newYOff = 0 // always positive
@@ -326,14 +326,15 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff) colliding = isColliding(CONTACT_AREA_BOTTOM, 0, -newYOff)
} while (colliding) } while (colliding)
val newY = nextHitbox!!.pointedY - newYOff posAdjustY = -newYOff
nextHitbox!!.setPositionFromPoint(newX, newY) val newY = nextHitbox.pointedY - newYOff
nextHitbox.setPositionFromPoint(newX, newY)
} }
private fun adjustHitTop() { private fun adjustHitTop() {
val newX = nextHitbox!!.posX val newX = nextHitbox.posX
// int-ify posY of nextHitbox // int-ify posY of nextHitbox
nextHitbox!!.setPositionY(FastMath.ceil(nextHitbox!!.posY).toFloat()) nextHitbox.setPositionY(FastMath.ceil(nextHitbox.posY).toFloat())
var newYOff = 0 // always positive var newYOff = 0 // always positive
@@ -344,8 +345,9 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff) colliding = isColliding(CONTACT_AREA_TOP, 0, newYOff)
} while (colliding) } while (colliding)
val newY = nextHitbox!!.posY + newYOff posAdjustY = newYOff
nextHitbox!!.setPosition(newX, newY) val newY = nextHitbox.posY + newYOff
nextHitbox.setPosition(newX, newY)
} }
private fun updateHorizontalPos() { private fun updateHorizontalPos() {
@@ -354,10 +356,12 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
if (isColliding(CONTACT_AREA_RIGHT) && !isColliding(CONTACT_AREA_LEFT)) { if (isColliding(CONTACT_AREA_RIGHT) && !isColliding(CONTACT_AREA_LEFT)) {
// the actor is embedded to the wall // the actor is embedded to the wall
adjustHitRight() adjustHitRight()
veloX = 0f // reset veloX, simulating normal force
elasticReflectX() elasticReflectX()
} }
else if (isColliding(CONTACT_AREA_RIGHT, 1, 0) && !isColliding(CONTACT_AREA_LEFT, -1, 0)) { else if (isColliding(CONTACT_AREA_RIGHT, 2, 0) && !isColliding(CONTACT_AREA_LEFT, 0, 0)) { // offset by +1, to fix directional quarks
// the actor is touching the wall // the actor is touching the wall
veloX = 0f // reset veloX, simulating normal force
elasticReflectX() elasticReflectX()
} }
else { else {
@@ -368,10 +372,12 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
if (isColliding(CONTACT_AREA_LEFT) && !isColliding(CONTACT_AREA_RIGHT)) { if (isColliding(CONTACT_AREA_LEFT) && !isColliding(CONTACT_AREA_RIGHT)) {
// the actor is embedded to the wall // the actor is embedded to the wall
adjustHitLeft() adjustHitLeft()
veloX = 0f // reset veloX, simulating normal force
elasticReflectX() elasticReflectX()
} }
else if (isColliding(CONTACT_AREA_LEFT, -1, 0) && !isColliding(CONTACT_AREA_RIGHT, 1, 0)) { else if (isColliding(CONTACT_AREA_LEFT, -1, 0) && !isColliding(CONTACT_AREA_RIGHT, 1, 0)) {
// the actor is touching the wall // the actor is touching the wall
veloX = 0f // reset veloX, simulating normal force
elasticReflectX() elasticReflectX()
} }
else { else {
@@ -380,6 +386,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
else { // check both sides? else { // check both sides?
// System.out.println("updatehorizontal - |velo| < 0.5"); // System.out.println("updatehorizontal - |velo| < 0.5");
//if (isColliding(CONTACT_AREA_LEFT) || isColliding(CONTACT_AREA_RIGHT)) { //if (isColliding(CONTACT_AREA_LEFT) || isColliding(CONTACT_AREA_RIGHT)) {
// veloX = 0f // reset veloX, simulating normal force
// elasticReflectX() // elasticReflectX()
//} //}
} }
@@ -387,9 +394,9 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
} }
private fun adjustHitRight() { private fun adjustHitRight() {
val newY = nextHitbox!!.posY // look carefully, posY or pointedY val newY = nextHitbox.posY // look carefully, posY or pointedY
// int-ify posY of nextHitbox // int-ify posY of nextHitbox
nextHitbox!!.setPositionX(FastMath.floor(nextHitbox!!.posX + nextHitbox!!.width) - nextHitbox!!.width) nextHitbox.setPositionX(FastMath.floor(nextHitbox.posX + nextHitbox.width) - nextHitbox.width)
var newXOff = 0 // always positive var newXOff = 0 // always positive
@@ -397,17 +404,17 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
var colliding: Boolean var colliding: Boolean
do { do {
newXOff += 1 newXOff += 1
colliding = isColliding(CONTACT_AREA_BOTTOM, -newXOff, 0) colliding = isColliding(CONTACT_AREA_BOTTOM, -newXOff + 1, 0) // offset by +1, to fix directional quarks
} while (newXOff < TSIZE && colliding) } while (newXOff < TSIZE && colliding)
val newX = nextHitbox!!.posX - newXOff -1 // -1: Q&D way to prevent the actor sticking to the wall and won't detach val newX = nextHitbox.posX - newXOff // -1: Q&D way to prevent the actor sticking to the wall and won't detach
nextHitbox!!.setPosition(newX, newY) nextHitbox.setPosition(newX, newY)
} }
private fun adjustHitLeft() { private fun adjustHitLeft() {
val newY = nextHitbox!!.posY val newY = nextHitbox.posY
// int-ify posY of nextHitbox // int-ify posY of nextHitbox
nextHitbox!!.setPositionX(FastMath.ceil(nextHitbox!!.posX).toFloat()) nextHitbox.setPositionX(FastMath.ceil(nextHitbox.posX).toFloat())
var newXOff = 0 // always positive var newXOff = 0 // always positive
@@ -418,44 +425,50 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
colliding = isColliding(CONTACT_AREA_TOP, newXOff, 0) colliding = isColliding(CONTACT_AREA_TOP, newXOff, 0)
} while (newXOff < TSIZE && colliding) } while (newXOff < TSIZE && colliding)
val newX = nextHitbox!!.posX + newXOff +1 // +1: Q&D way to prevent the actor sticking to the wall and won't detach posAdjustX = newXOff
nextHitbox!!.setPosition(newX, newY) val newX = nextHitbox.posX + newXOff // +1: Q&D way to prevent the actor sticking to the wall and won't detach
nextHitbox.setPosition(newX, newY)
} }
private fun elasticReflectX() { private fun elasticReflectX() {
if (veloX != 0f) veloX = -veloX * elasticity if (veloX != 0f && (veloX * elasticity).abs() > 0.5) {
veloX = -veloX * elasticity
}
} }
private fun elasticReflectY() { private fun elasticReflectY() {
if (veloY != 0f) veloY = -veloY * elasticity if (veloY != 0f && (veloY * elasticity).abs() > 0.5) {
veloY = -veloY * elasticity
}
} }
private fun isColliding(side: Int, tx: Int = 0, ty: Int = 0): Boolean = getContactingArea(side, tx, ty) > 1 private fun isColliding(side: Int, tx: Int = 0, ty: Int = 0): Boolean = getContactingArea(side, tx, ty) > 1
private fun getContactingArea(side: Int, translateX: Int = 0, translateY: Int = 0): Int { private fun getContactingArea(side: Int, translateX: Int = 0, translateY: Int = 0): Int {
var contactAreaCounter = 0 var contactAreaCounter = 0
for (i in 0..Math.round(if (side % 2 == 0) nextHitbox!!.width else nextHitbox!!.height) - 1) { for (i in 0..(if (side % 2 == 0) nextHitbox.width else nextHitbox.height).roundToInt() - 1) {
// set tile positions // set tile positions
val tileX: Int val tileX: Int
val tileY: Int val tileY: Int
if (side == CONTACT_AREA_BOTTOM) { if (side == CONTACT_AREA_BOTTOM) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt()
+ i + translateX) + i + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxEnd.y) + translateY) tileY = div16TruncateToMapHeight(nextHitbox.hitboxEnd.y.roundToInt() + translateY)
} }
else if (side == CONTACT_AREA_TOP) { else if (side == CONTACT_AREA_TOP) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt()
+ i + translateX) + i + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) + translateY) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt() + translateY)
} }
else if (side == CONTACT_AREA_RIGHT) { else if (side == CONTACT_AREA_RIGHT) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxEnd.x) + translateX) tileX = div16TruncateToMapWidth(nextHitbox.hitboxEnd.x.roundToInt() + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt()
+ i + translateY) + i + translateY)
} }
else if (side == CONTACT_AREA_LEFT) { else if (side == CONTACT_AREA_LEFT) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) + translateX) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt() + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt()
+ i + translateY) + i + translateY)
} }
else { else {
@@ -473,28 +486,28 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
private fun getContactingAreaFluid(side: Int, translateX: Int = 0, translateY: Int = 0): Int { private fun getContactingAreaFluid(side: Int, translateX: Int = 0, translateY: Int = 0): Int {
var contactAreaCounter = 0 var contactAreaCounter = 0
for (i in 0..Math.round(if (side % 2 == 0) nextHitbox!!.width else nextHitbox!!.height) - 1) { for (i in 0..(if (side % 2 == 0) nextHitbox.width else nextHitbox.height).roundToInt() - 1) {
// set tile positions // set tile positions
val tileX: Int val tileX: Int
val tileY: Int val tileY: Int
if (side == CONTACT_AREA_BOTTOM) { if (side == CONTACT_AREA_BOTTOM) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt()
+ i + translateX) + i + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxEnd.y) + translateY) tileY = div16TruncateToMapHeight(nextHitbox.hitboxEnd.y.roundToInt() + translateY)
} }
else if (side == CONTACT_AREA_TOP) { else if (side == CONTACT_AREA_TOP) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt()
+ i + translateX) + i + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) + translateY) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt() + translateY)
} }
else if (side == CONTACT_AREA_RIGHT) { else if (side == CONTACT_AREA_RIGHT) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxEnd.x) + translateX) tileX = div16TruncateToMapWidth(nextHitbox.hitboxEnd.x.roundToInt() + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt()
+ i + translateY) + i + translateY)
} }
else if (side == CONTACT_AREA_LEFT) { else if (side == CONTACT_AREA_LEFT) {
tileX = div16TruncateToMapWidth(Math.round(nextHitbox!!.hitboxStart.x) + translateX) tileX = div16TruncateToMapWidth(nextHitbox.hitboxStart.x.roundToInt() + translateX)
tileY = div16TruncateToMapHeight(Math.round(nextHitbox!!.hitboxStart.y) tileY = div16TruncateToMapHeight(nextHitbox.hitboxStart.y.roundToInt()
+ i + translateY) + i + translateY)
} }
else { else {
@@ -514,7 +527,7 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
* [N] = [kg * m / s^2] * [N] = [kg * m / s^2]
* F(bo) = density * submerged_volume * gravitational_acceleration [N] * F(bo) = density * submerged_volume * gravitational_acceleration [N]
*/ */
private fun applyBuoyancy() { /*private fun applyBuoyancy() {
val fluidDensity = tileDensity val fluidDensity = tileDensity
val submergedVolume = submergedVolume val submergedVolume = submergedVolume
@@ -525,16 +538,16 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
* Math.pow(mass.toDouble(), -1.0) * Math.pow(mass.toDouble(), -1.0)
* SI_TO_GAME_ACC.toDouble()).toFloat() * SI_TO_GAME_ACC.toDouble()).toFloat()
} }
} }*/
private val submergedVolume: Float /*private val submergedVolume: Float
get() = submergedHeight * hitbox!!.width * hitbox!!.width get() = submergedHeight * hitbox.width * hitbox.width
private val submergedHeight: Float private val submergedHeight: Float
get() = Math.max( get() = Math.max(
getContactingAreaFluid(CONTACT_AREA_LEFT), getContactingAreaFluid(CONTACT_AREA_LEFT),
getContactingAreaFluid(CONTACT_AREA_RIGHT) getContactingAreaFluid(CONTACT_AREA_RIGHT)
).toFloat() ).toFloat()*/
/** /**
@@ -546,9 +559,9 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
var friction = 0 var friction = 0
//get highest fluid density //get highest fluid density
val tilePosXStart = Math.round(nextHitbox!!.posX / TSIZE) val tilePosXStart = (nextHitbox.posX / TSIZE).roundToInt()
val tilePosXEnd = Math.round(nextHitbox!!.hitboxEnd.x / TSIZE) val tilePosXEnd = (nextHitbox.hitboxEnd.x / TSIZE).roundToInt()
val tilePosY = Math.round(nextHitbox!!.pointedY / TSIZE) val tilePosY = (nextHitbox.pointedY / TSIZE).roundToInt()
for (x in tilePosXStart..tilePosXEnd) { for (x in tilePosXStart..tilePosXEnd) {
val tile = map.getTileFromTerrain(x, tilePosY) val tile = map.getTileFromTerrain(x, tilePosY)
if (TilePropCodex.getProp(tile).isFluid) { if (TilePropCodex.getProp(tile).isFluid) {
@@ -561,33 +574,6 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
return friction return friction
} }
/**
* Get highest movement resistance value from tiles that the body occupies.
* @return
*/
private val tileMvmtRstc: Int
get() {
var resistance = 0
//get highest fluid density
val tilePosXStart = Math.round(nextHitbox!!.posX / TSIZE)
val tilePosYStart = Math.round(nextHitbox!!.posY / TSIZE)
val tilePosXEnd = Math.round(nextHitbox!!.hitboxEnd.x / TSIZE)
val tilePosYEnd = Math.round(nextHitbox!!.hitboxEnd.y / TSIZE)
for (y in tilePosYStart..tilePosYEnd) {
for (x in tilePosXStart..tilePosXEnd) {
val tile = map.getTileFromTerrain(x, y)
if (TilePropCodex.getProp(tile).isFluid) {
val thisFluidDensity = TilePropCodex.getProp(tile).movementResistance
if (thisFluidDensity > resistance) resistance = thisFluidDensity
}
}
}
return resistance
}
/** /**
* Get highest density (specific gravity) value from tiles that the body occupies. * Get highest density (specific gravity) value from tiles that the body occupies.
* @return * @return
@@ -597,10 +583,10 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
var density = 0 var density = 0
//get highest fluid density //get highest fluid density
val tilePosXStart = Math.round(nextHitbox!!.posX / TSIZE) val tilePosXStart = (nextHitbox.posX / TSIZE).roundToInt()
val tilePosYStart = Math.round(nextHitbox!!.posY / TSIZE) val tilePosYStart = (nextHitbox.posY / TSIZE).roundToInt()
val tilePosXEnd = Math.round(nextHitbox!!.hitboxEnd.x / TSIZE) val tilePosXEnd = (nextHitbox.hitboxEnd.x / TSIZE).roundToInt()
val tilePosYEnd = Math.round(nextHitbox!!.hitboxEnd.y / TSIZE) val tilePosYEnd = (nextHitbox.hitboxEnd.y / TSIZE).roundToInt()
for (y in tilePosYStart..tilePosYEnd) { for (y in tilePosYStart..tilePosYEnd) {
for (x in tilePosXStart..tilePosXEnd) { for (x in tilePosXStart..tilePosXEnd) {
val tile = map.getTileFromTerrain(x, y) val tile = map.getTileFromTerrain(x, y)
@@ -620,55 +606,45 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
} }
private fun clampHitbox() { private fun clampHitbox() {
hitbox!!.setPositionFromPoint( hitbox.setPositionFromPoint(
clampW(hitbox!!.pointedX), clampH(hitbox!!.pointedY)) clampW(hitbox.pointedX), clampH(hitbox.pointedY))
} }
private fun clampNextHitbox() { private fun clampNextHitbox() {
nextHitbox!!.setPositionFromPoint( nextHitbox.setPositionFromPoint(
clampW(nextHitbox!!.pointedX), clampH(nextHitbox!!.pointedY)) clampW(nextHitbox.pointedX), clampH(nextHitbox.pointedY))
} }
private fun updateNextHitboxFromVelo() { private fun updateNextHitboxFromVelo() {
val fluidResistance = mvmtRstcToMultiplier(tileMvmtRstc)
val submergedRatio = FastMath.clamp(
submergedHeight / nextHitbox!!.height,
0f, 1f
)
val applyResistance: Boolean = !isNoSubjectToFluidResistance
&& submergedRatio > FLUID_RESISTANCE_IGNORE_THRESHOLD_RATIO
val resistance: Float = FastMath.interpolateLinear(
submergedRatio,
1f, fluidResistance
)
nextHitbox!!.set( nextHitbox.set(
Math.round(hitbox!!.posX + veloX * (if (!applyResistance) 1f else resistance)).toFloat() (hitbox.posX + veloX).round()
, Math.round(hitbox!!.posY + veloY * (if (!applyResistance) 1f else resistance)).toFloat() , (hitbox.posY + veloY).round()
, Math.round(baseHitboxW * scale).toFloat() , (baseHitboxW * scale).round()
, Math.round(baseHitboxH * scale).toFloat()) , (baseHitboxH * scale).round()
)
/** Full quantisation; wonder what havoc these statements would wreak... /** Full quantisation; wonder what havoc these statements would wreak...
*/ */
} }
private fun updateHitboxX() { private fun updateHitboxX() {
hitbox!!.setDimension( hitbox.setDimension(
nextHitbox!!.width, nextHitbox!!.height) nextHitbox.width, nextHitbox.height)
hitbox!!.setPositionX(nextHitbox!!.posX) hitbox.setPositionX(nextHitbox.posX)
} }
private fun updateHitboxY() { private fun updateHitboxY() {
hitbox!!.setDimension( hitbox.setDimension(
nextHitbox!!.width, nextHitbox!!.height) nextHitbox.width, nextHitbox.height)
hitbox!!.setPositionY(nextHitbox!!.posY) hitbox.setPositionY(nextHitbox.posY)
} }
override fun drawGlow(gc: GameContainer, g: Graphics) { override fun drawGlow(gc: GameContainer, g: Graphics) {
if (isVisible && spriteGlow != null) { if (isVisible && spriteGlow != null) {
if (!sprite!!.flippedHorizontal()) { if (!sprite!!.flippedHorizontal()) {
spriteGlow!!.render(g, hitbox!!.posX - hitboxTranslateX * scale, hitbox!!.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale) spriteGlow!!.render(g, hitbox.posX - hitboxTranslateX * scale, hitbox.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale)
} else { } else {
spriteGlow!!.render(g, hitbox!!.posX - scale, hitbox!!.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale) spriteGlow!!.render(g, hitbox.posX - scale, hitbox.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale)
} }
} }
} }
@@ -676,9 +652,9 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
override fun drawBody(gc: GameContainer, g: Graphics) { override fun drawBody(gc: GameContainer, g: Graphics) {
if (isVisible && sprite != null) { if (isVisible && sprite != null) {
if (!sprite!!.flippedHorizontal()) { if (!sprite!!.flippedHorizontal()) {
sprite!!.render(g, hitbox!!.posX - hitboxTranslateX * scale, hitbox!!.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale) sprite!!.render(g, hitbox.posX - hitboxTranslateX * scale, hitbox.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale)
} else { } else {
sprite!!.render(g, hitbox!!.posX - scale, hitbox!!.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale) sprite!!.render(g, hitbox.posX - scale, hitbox.posY + hitboxTranslateY * scale - (baseSpriteHeight - baseHitboxH) * scale + 2, scale)
} }
} }
} }
@@ -691,52 +667,46 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
if (sprite != null) sprite!!.update(delta) if (sprite != null) sprite!!.update(delta)
} }
private fun clampW(x: Float): Float { private fun clampW(x: Float): Float =
if (x < TSIZE + nextHitbox!!.width / 2) { if (x < TSIZE + nextHitbox.width / 2) {
return TSIZE + nextHitbox!!.width / 2 TSIZE + nextHitbox.width / 2
} else if (x >= (map.width * TSIZE).toFloat() - TSIZE.toFloat() - nextHitbox!!.width / 2) { } else if (x >= (map.width * TSIZE).toFloat() - TSIZE.toFloat() - nextHitbox.width / 2) {
return (map.width * TSIZE).toFloat() - 1f - TSIZE.toFloat() - nextHitbox!!.width / 2 (map.width * TSIZE).toFloat() - 1f - TSIZE.toFloat() - nextHitbox.width / 2
} else { } else {
return x x
} }
}
private fun clampH(y: Float): Float { private fun clampH(y: Float): Float =
if (y < TSIZE + nextHitbox!!.height) { if (y < TSIZE + nextHitbox.height) {
return TSIZE + nextHitbox!!.height TSIZE + nextHitbox.height
} else if (y >= (map.height * TSIZE).toFloat() - TSIZE.toFloat() - nextHitbox!!.height) { } else if (y >= (map.height * TSIZE).toFloat() - TSIZE.toFloat() - nextHitbox.height) {
return (map.height * TSIZE).toFloat() - 1f - TSIZE.toFloat() - nextHitbox!!.height (map.height * TSIZE).toFloat() - 1f - TSIZE.toFloat() - nextHitbox.height
} else { } else {
return y y
} }
}
private fun clampWtile(x: Int): Int { private fun clampWtile(x: Int): Int =
if (x < 0) { if (x < 0) {
return 0 0
} else if (x >= map.width) { } else if (x >= map.width) {
return map.width - 1 map.width - 1
} else { } else {
return x x
} }
}
private fun clampHtile(x: Int): Int { private fun clampHtile(x: Int): Int =
if (x < 0) { if (x < 0) {
return 0 0
} else if (x >= map.height) { } else if (x >= map.height) {
return map.height - 1 map.height - 1
} else { } else {
return x x
} }
}
private val isPlayerNoClip: Boolean private val isPlayerNoClip: Boolean
get() = this is Player && this.isNoClip() get() = this is Player && this.isNoClip()
private fun quantiseTSize(v: Float): Int { private fun quantiseTSize(v: Float): Int = FastMath.floor(v / TSIZE) * TSIZE
return FastMath.floor(v / TSIZE) * TSIZE
}
fun setDensity(density: Int) { fun setDensity(density: Int) {
if (density < 0) if (density < 0)
@@ -745,6 +715,10 @@ open class ActorWithBody constructor() : Actor, Visible, Glowing {
this.density = density.toFloat() this.density = density.toFloat()
} }
fun Float.round() = Math.round(this).toFloat()
fun Float.roundToInt(): Int = Math.round(this)
fun Float.abs() = FastMath.abs(this)
companion object { companion object {
@Transient private val TSIZE = MapDrawer.TILE_SIZE @Transient private val TSIZE = MapDrawer.TILE_SIZE

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.gameitem.InventoryItem import net.torvald.terrarum.gameitem.InventoryItem
/** /**
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.Input import org.newdawn.slick.Input

View File

@@ -1,9 +1,9 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.JsonFetcher import net.torvald.JsonFetcher
import com.torvald.random.Fudge3 import net.torvald.random.Fudge3
import com.torvald.random.HQRNG import net.torvald.random.HQRNG
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.google.gson.JsonObject import com.google.gson.JsonObject
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException
import java.io.IOException import java.io.IOException

View File

@@ -1,8 +1,8 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.JsonFetcher import net.torvald.JsonFetcher
import com.torvald.random.Fudge3 import net.torvald.random.Fudge3
import com.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import com.google.gson.JsonObject import com.google.gson.JsonObject
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException
import java.io.IOException import java.io.IOException

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
import java.util.* import java.util.*
/** /**

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.point.Point2f import net.torvald.point.Point2f
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import java.util.* import java.util.*

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
/** /**
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.

View File

@@ -1,10 +1,10 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.random.HQRNG import net.torvald.random.HQRNG
import com.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameactors.ai.ActorAI
import com.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
import com.torvald.terrarum.gameitem.InventoryItem import net.torvald.terrarum.gameitem.InventoryItem
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import java.util.* import java.util.*

View File

@@ -1,7 +1,7 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.spriteanimation.SpriteAnimation import net.torvald.spriteanimation.SpriteAnimation
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
/** /**
* Created by minjaesong on 16-03-25. * Created by minjaesong on 16-03-25.

View File

@@ -1,11 +1,11 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.JsonFetcher import net.torvald.JsonFetcher
import com.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
import com.torvald.spriteanimation.SpriteAnimation import net.torvald.spriteanimation.SpriteAnimation
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.torvald.terrarum.gameactors.faction.FactionFactory import net.torvald.terrarum.gameactors.faction.FactionFactory
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException
import java.io.IOException import java.io.IOException

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.mapgenerator.RoguelikeRandomiser import net.torvald.terrarum.mapgenerator.RoguelikeRandomiser
import org.newdawn.slick.Color import org.newdawn.slick.Color
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics

View File

@@ -1,11 +1,11 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
import com.torvald.terrarum.gamecontroller.EnumKeyFunc import net.torvald.terrarum.gamecontroller.EnumKeyFunc
import com.torvald.terrarum.gamecontroller.KeyMap import net.torvald.terrarum.gamecontroller.KeyMap
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.spriteanimation.SpriteAnimation import net.torvald.spriteanimation.SpriteAnimation
import com.jme3.math.FastMath import com.jme3.math.FastMath
import org.lwjgl.input.Controller import org.lwjgl.input.Controller
import org.lwjgl.input.Controllers import org.lwjgl.input.Controllers

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException
import java.io.IOException import java.io.IOException

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
/** /**
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Graphics import org.newdawn.slick.Graphics

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors.ai package net.torvald.terrarum.gameactors.ai
/** /**
* Created by minjaesong on 16-03-14. * Created by minjaesong on 16-03-14.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors.faction package net.torvald.terrarum.gameactors.faction
import com.torvald.random.HQRNG import net.torvald.random.HQRNG
import java.util.HashSet import java.util.HashSet
/** /**

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameactors.faction package net.torvald.terrarum.gameactors.faction
import com.torvald.JsonFetcher import net.torvald.JsonFetcher
import com.google.gson.JsonObject import com.google.gson.JsonObject
import java.io.IOException import java.io.IOException

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameactors.scheduler package net.torvald.terrarum.gameactors.scheduler
/** /**
* Ultima-like NPC scheduler * Ultima-like NPC scheduler

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
/** /**
* Created by minjaesong on 15-12-31. * Created by minjaesong on 15-12-31.

View File

@@ -1,13 +1,13 @@
package com.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
import com.torvald.terrarum.gameactors.Controllable import net.torvald.terrarum.gameactors.Controllable
import com.torvald.terrarum.gameactors.Player import net.torvald.terrarum.gameactors.Player
import com.torvald.terrarum.mapdrawer.MapCamera import net.torvald.terrarum.mapdrawer.MapCamera
import com.torvald.terrarum.mapdrawer.MapDrawer import net.torvald.terrarum.mapdrawer.MapDrawer
import com.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import com.torvald.terrarum.tileproperties.TileNameCode import net.torvald.terrarum.tileproperties.TileNameCode
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import com.torvald.terrarum.ui.UIHandler import net.torvald.terrarum.ui.UIHandler
import org.newdawn.slick.Input import org.newdawn.slick.Input
/** /**

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
/** /**
* Created by minjaesong on 16-01-15. * Created by minjaesong on 16-01-15.

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
import java.util.Hashtable import java.util.Hashtable

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
import org.newdawn.slick.Input import org.newdawn.slick.Input

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gameitem package net.torvald.terrarum.gameitem
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gameitem package net.torvald.terrarum.gameitem
import com.torvald.terrarum.tileproperties.TilePropCodex import net.torvald.terrarum.tileproperties.TilePropCodex
import org.newdawn.slick.GameContainer import org.newdawn.slick.GameContainer
/** /**

View File

@@ -1,5 +1,5 @@
package com.torvald.terrarum.gamemap package net.torvald.terrarum.gamemap
import org.newdawn.slick.SlickException import org.newdawn.slick.SlickException

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamemap package net.torvald.terrarum.gamemap
/** /**
* Created by minjaesong on 16-01-17. * Created by minjaesong on 16-01-17.

View File

@@ -1,6 +1,6 @@
package com.torvald.terrarum.gamemap package net.torvald.terrarum.gamemap
import com.torvald.point.Point2f import net.torvald.point.Point2f
import java.io.Serializable import java.io.Serializable

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamemap package net.torvald.terrarum.gamemap
import java.io.Serializable import java.io.Serializable
import java.util.Spliterator import java.util.Spliterator

View File

@@ -1,4 +1,4 @@
package com.torvald.terrarum.gamemap package net.torvald.terrarum.gamemap
/** /**
* Created by minjaesong on 16-01-24. * Created by minjaesong on 16-01-24.

Some files were not shown because too many files have changed in this diff Show More