successfully implemented fluidal movement resistance, batch command processing

Former-commit-id: 64282c01aac622cce25cf7c9a79f53059d8f6547
Former-commit-id: d96a602887400c91bfee7660c29f12118858e6f3
This commit is contained in:
Song Minjae
2016-03-07 13:44:48 +09:00
parent fd058e9004
commit 24ec0a08a8
17 changed files with 64 additions and 18 deletions

View File

@@ -34,14 +34,14 @@
"9"; "0";"TILE_SNOW" ; "8205"; "6"; "500"; "0"; "0"; "1"; "1"; "0"; "1"; "9"; "0"; "0";"16"
"9"; "1";"TILE_ICE_FRAGILE" ; "3282"; "1"; "930"; "0"; "0"; "1"; "0"; "0"; "0"; "9"; "1"; "0";"16"
"9"; "2";"TILE_ICE_NATURAL" ; "6564"; "25"; "930"; "0"; "0"; "1"; "1"; "0"; "1"; "9"; "2"; "0"; "8"
"9"; "3";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25";"2785"; "0"; "0"; "1"; "1"; "5009"; "0"; "9"; "3"; "0"; "8"
"9"; "3";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25";"5170"; "0"; "0"; "1"; "1"; "5009"; "0"; "9"; "3"; "0"; "8"
"10"; "0";"TILE_PLATFORM_STONE" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "0"; "0";"16"
"10"; "1";"TILE_PLATFORM_WOODEN" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "1"; "0";"16"
"10"; "2";"TILE_PLATFORM_EBONY" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "2"; "0";"16"
"10"; "3";"TILE_PLATFORM_BIRCH" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "3"; "0";"16"
"10"; "4";"TILE_PLATFORM_BLOODROSE" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "4"; "0";"16"
"11"; "0";"TILE_TORCH" ; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "63412"; "0"; "11"; "0"; "0";"16"
"254"; "15";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "16"; "0"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
"254"; "15";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "9"; "0"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
"255"; "15";"TILE_LAVA" ; "62358"; "100";"2600"; "1"; "48"; "0"; "0"; "48320"; "0"; "N/A"; "N/A"; "0";"16"
# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky
# Opacity/Lumcolor: 40-step RGB
@@ -50,7 +50,7 @@
# movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed
# spcg: specific gravity, aka density. [g/l]
# Defalut torch should have a colour of 63412 (ffa44e) : real candlelight colour taken from properly configured camera.
# Assume magical ice as Ice-X.
# Magical ice: theoretical __metallic__ ice that might form under super-high pressure (> 5 TPa). Its density is a wild guess, exponential prediction.
# References:
# * Density of various woods : http://www.engineeringtoolbox.com/wood-density-d_40.html
# * Density of various phases of ice : http://www1.lsbu.ac.uk/water/ice_phases.html
Can't render this file because it contains an unexpected character in line 1 and column 18.

4
res/batchtest.txt Normal file
View File

@@ -0,0 +1,4 @@
echo "Hello, world!"
echo "This is a batch test."
setav batch true
getav batch

View File

@@ -255,7 +255,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
veloY += clampCeil(
((W - D) / mass) * SI_TO_GAME_ACC * G_MUL_PLAYABLE_CONST
* mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up from fluids
// * mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up from fluids
, VELO_HARD_LIMIT
);
}
@@ -493,7 +493,7 @@ public class ActorWithBody implements Actor, Visible, Glowing {
veloY -= ((fluidDensity - this.density)
* map.getGravitation() * submergedVolume
* Math.pow(mass, -1)
* mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up
// * mvmtRstcToMultiplier(fluidResistance) // eliminate shoot-up
* SI_TO_GAME_ACC);
}
}
@@ -615,8 +615,8 @@ public class ActorWithBody implements Actor, Visible, Glowing {
return density;
}
private float mvmtRstcToMultiplier(int viscosity) {
return 1f / (1 + (viscosity / 16f));
private float mvmtRstcToMultiplier(int movementResistanceValue) {
return 1f / (1 + (movementResistanceValue / 16f));
}
private void clampHitbox() {
@@ -634,9 +634,17 @@ public class ActorWithBody implements Actor, Visible, Glowing {
}
private void updateNextHitboxFromVelo() {
float fluidResistance = mvmtRstcToMultiplier(getTileMvmtRstc());
nextHitbox.set(
Math.round(hitbox.getPosX() + veloX)
, Math.round(hitbox.getPosY() + veloY)
Math.round(hitbox.getPosX()
+ (veloX
* (isNoSubjectToFluidResistance() ? 1 : fluidResistance)
))
, Math.round(hitbox.getPosY()
+ (veloY
* (isNoSubjectToFluidResistance() ? 1 : fluidResistance)
))
, Math.round(baseHitboxW * scale)
, Math.round(baseHitboxH * scale)
/** Full quantisation; wonder what havoc these statements would wreak...

View File

@@ -15,11 +15,10 @@ public class Authenticator implements ConsoleCommand {
public void execute(String[] args) {
if (args.length == 2) {
String pwd = args[1];
String hashedPwd = DigestUtils.sha256Hex(pwd);
if ("54c5b3dd459d5ef778bb2fa1e23a5fb0e1b62ae66970bcb436e8f81a1a1a8e41".equalsIgnoreCase(hashedPwd)) {
// alpine
if ("54c5b3dd459d5ef778bb2fa1e23a5fb0e1b62ae66970bcb436e8f81a1a1a8e41"
.equalsIgnoreCase(hashedPwd)) { // alpine
String msg = (a) ? "Locked" : "Authenticated";
new Echo().execute(msg);
System.out.println("[Authenticator] " + msg);

View File

@@ -0,0 +1,25 @@
package com.Torvald.Terrarum.ConsoleCommand;
import java.nio.file.FileSystems;
import java.nio.file.Files;
/**
* Created by minjaesong on 16-03-07.
*/
public class Batch implements ConsoleCommand {
@Override
public void execute(String[] args) throws Exception {
if (args.length == 2) {
Files.lines(FileSystems.getDefault().getPath(args[1])).forEach
(CommandInterpreter::execute);
}
else {
printUsage();
}
}
@Override
public void printUsage() {
new Echo().execute("batch path/to/batch.txt");
}
}

View File

@@ -14,6 +14,7 @@ public class CommandDict {
public CommandDict() {
dict = new Hashtable<>();
dict.put("echo", new Echo());
dict.put("setav", new SetAV());
dict.put("qqq", new QuitApp());
dict.put("codex", new CodexEdictis());
@@ -27,6 +28,7 @@ public class CommandDict {
dict.put("setlocale", new SetLocale());
dict.put("zoom", new Zoom());
dict.put("teleport", new TeleportPlayer());
dict.put("tp", dict.get("teleport"));
dict.put("cat", new CatStdout());
dict.put("exportav", new ExportAV());
dict.put("gsontest", new GsonTest());
@@ -34,6 +36,7 @@ public class CommandDict {
dict.put("getfaction", new GetFactioning());
dict.put("auth", Terrarum.game.auth);
dict.put("spawnball", new SpawnPhysTestBall());
dict.put("batch", new Batch());
}
public static ConsoleCommand getCommand(String commandName) {

View File

@@ -1,17 +1,24 @@
package com.Torvald.Terrarum.ConsoleCommand;
import com.Torvald.Terrarum.Game;
import com.Torvald.Terrarum.Terrarum;
import com.Torvald.Terrarum.UserInterface.ConsoleWindow;
import java.util.Arrays;
import java.util.List;
/**
* Created by minjaesong on 16-01-16.
*/
class Echo implements ConsoleCommand {
@Override
public void execute(String[] args) {
((ConsoleWindow) Terrarum.game.consoleHandler.getUI())
.sendMessage(args.toString());
String[] argsWoHeader = new String[args.length - 1];
for (int i = 0; i < argsWoHeader.length; i++)
argsWoHeader[i] = args[i + 1];
Arrays.asList(argsWoHeader).forEach(
((ConsoleWindow) Terrarum.game.consoleHandler.getUI())::sendMessage
);
}
public void execute(String single_line) {

View File

@@ -34,14 +34,14 @@
"9"; "0";"TILE_SNOW" ; "8205"; "6"; "500"; "0"; "0"; "1"; "1"; "0"; "1"; "9"; "0"; "0";"16"
"9"; "1";"TILE_ICE_FRAGILE" ; "3282"; "1"; "930"; "0"; "0"; "1"; "0"; "0"; "0"; "9"; "1"; "0";"16"
"9"; "2";"TILE_ICE_NATURAL" ; "6564"; "25"; "930"; "0"; "0"; "1"; "1"; "0"; "1"; "9"; "2"; "0"; "8"
"9"; "3";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25";"2785"; "0"; "0"; "1"; "1"; "5009"; "0"; "9"; "3"; "0"; "8"
"9"; "3";"TILE_ICE_CLEAR_MAGICAL" ; "8205"; "25";"3720"; "0"; "0"; "1"; "1"; "5009"; "0"; "9"; "3"; "0"; "8"
"10"; "0";"TILE_PLATFORM_STONE" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "0"; "0";"16"
"10"; "1";"TILE_PLATFORM_WOODEN" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "1"; "0";"16"
"10"; "2";"TILE_PLATFORM_EBONY" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "2"; "0";"16"
"10"; "3";"TILE_PLATFORM_BIRCH" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "3"; "0";"16"
"10"; "4";"TILE_PLATFORM_BLOODROSE" ; "0"; "1"; "N/A"; "0"; "0"; "0"; "0"; "0"; "0"; "10"; "4"; "0";"16"
"11"; "0";"TILE_TORCH" ; "0"; "0"; "N/A"; "0"; "0"; "0"; "0"; "63412"; "0"; "11"; "0"; "0";"16"
"254"; "15";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "16"; "0"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
"254"; "15";"TILE_WATER" ; "6522"; "100";"1000"; "1"; "12"; "0"; "0"; "0"; "0"; "N/A"; "N/A"; "0";"16"
"255"; "15";"TILE_LAVA" ; "62358"; "100";"2600"; "1"; "48"; "0"; "0"; "48320"; "0"; "N/A"; "N/A"; "0";"16"
# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky
# Opacity/Lumcolor: 40-step RGB
@@ -50,7 +50,7 @@
# movr: Movement resistance, (walkspeedmax) / (1 + (n/16)), 16 halves movement speed
# spcg: specific gravity, aka density. [g/l]
# Defalut torch should have a colour of 63412 (ffa44e) : real candlelight colour taken from properly configured camera.
# Assume magical ice as Ice-X.
# Magical ice: theoretical __metallic__ ice that might form under super-high pressure (> 5 TPa). Its density is a wild guess.
# References:
# * Density of various woods : http://www.engineeringtoolbox.com/wood-density-d_40.html
# * Density of various phases of ice : http://www1.lsbu.ac.uk/water/ice_phases.html
Can't render this file because it contains an unexpected character in line 1 and column 18.