Compare commits

...

16 Commits

Author SHA1 Message Date
minjaesong
8446cb2ecf fix: door won't consider the distance of the actor 2023-05-22 11:56:57 +09:00
minjaesong
07b44a92c5 reload() for dynamicitems 2023-05-22 11:46:06 +09:00
minjaesong
f12bf553ff door retains its apparance after load; autodoor is permissible for all IngamePlayers 2023-05-22 01:25:14 +09:00
minjaesong
3ba7ddd30e new toggler design 2023-05-21 20:46:54 +09:00
minjaesong
eee551058f graphics control panel reworked 2023-05-21 19:59:16 +09:00
minjaesong
974ad2ec50 loading process will try to unstuck the player if the player appears to stuck in the terrain 2023-05-21 16:57:28 +09:00
minjaesong
5d78df9e99 savegame listing - if multiple valid savegames with same UUID is there, only the most recent one is retained 2023-05-21 11:31:32 +09:00
minjaesong
6268b99c1c material and 5 temporary vectors no longer go into the savegame 2023-05-21 11:20:45 +09:00
minjaesong
b0d83325a7 lib cleanup 2023-05-19 14:53:29 +09:00
minjaesong
16ae3225e6 graalvm-js update 2023-05-19 14:19:39 +09:00
minjaesong
a587c86826 Terragen param adjustments 2023-05-17 21:00:02 +09:00
minjaesong
68b5d15944 disallowing nicknames (may contain non-ascii) on filename: somehow incompatible with BTRFS and Java 17? 2023-05-17 19:52:51 +09:00
minjaesong
4ba1173d8a fix: bad key assignments on Colemak keyboards 2023-05-17 13:43:20 +09:00
minjaesong
7e10039d29 no autocorrect on biomegen; code structure improvements 2023-05-17 09:52:28 +09:00
minjaesong
9e44ca93ab build_app_all.sh 2023-05-16 22:56:38 +09:00
minjaesong
8cb11d5c82 doors for test 2023-05-16 22:52:46 +09:00
129 changed files with 1583 additions and 6133 deletions

View File

@@ -11,78 +11,78 @@
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jlayer-1.0.1-gdx.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jorbis-0.0.17.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-68.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-core-2.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/GetCpuName.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/prtree.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-codec-1.15.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jxinput-1.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.21/kotlin-stdlib-jdk8-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.21/kotlin-stdlib-common-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.21/kotlin-stdlib-jdk7-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.21/kotlin-stdlib-jdk7-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.21/kotlin-stdlib-common-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.21/kotlin-stdlib-jdk8-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-windows-x86.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-macos-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-stb-3.3.1-natives-linux-arm64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-opengl-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-linux-arm32.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-windows.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-glfw-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-jemalloc-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1-natives-macos.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-openal-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/lwjgl-3.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-71.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-22.3.1-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-22.3.1-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-22.3.1.jar" path-in-jar="/" />
</root>
</artifact>
</component>

View File

@@ -13,20 +13,10 @@
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-controllers-desktop-2.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/GetCpuName.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/jxinput-1.0.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-csv-1.8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/prtree.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/Terrarum_Joise.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/TerrarumSansBitmap.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-68.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-21.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-21.1.0-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-1.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-jnigen-loader-2.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-backend-lwjgl3-1.11.0.jar" path-in-jar="/" />
@@ -82,11 +72,21 @@
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.11.0-natives-armeabi-v7a.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.11.0-natives-desktop.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/gdx-platform-1.11.0-natives-x86_64.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.8.21/kotlin-reflect-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.21/kotlin-stdlib-common-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.21/kotlin-stdlib-common-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-test/1.8.21/kotlin-test-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.8.21/kotlin-reflect-1.8.21.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib-jdk7.jar" path-in-jar="/" />
<element id="extracted-dir" path="$KOTLIN_BUNDLED$/lib/kotlin-stdlib.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/icu4j-71.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-22.3.1-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/regex-22.3.1-edit.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/truffle-api-22.3.1.jar" path-in-jar="/" />
</root>
</artifact>
</component>

View File

@@ -1,14 +0,0 @@
<component name="libraryTable">
<library name="gdx-lwjgl3-glfw-awt-macos-1.11.0-javadoc">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/gdx-lwjgl3-glfw-awt-macos-1.11.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/gdx-lwjgl3-glfw-awt-macos-1.11.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/lib/gdx-lwjgl3-glfw-awt-macos-1.11.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/lib/gdx-lwjgl3-glfw-awt-macos-1.11.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -1,28 +0,0 @@
<component name="libraryTable">
<library name="graalvm-js-21.1.0 and graalvm-js-scriptengine-21.1.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-21.1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-68.2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-21.1.0-edit.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-21.1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-21.1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-21.1.0-edit.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-21.1.0-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-68.2-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-21.1.0-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-21.1.0-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-21.1.0-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-21.1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-21.1.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-68.2-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-21.1.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-21.1.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-21.1.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-21.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

28
.idea/libraries/graalvm_js_22_3_1.xml generated Normal file
View File

@@ -0,0 +1,28 @@
<component name="libraryTable">
<library name="graalvm-js 22.3.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-edit.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-edit.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/lib/graal-sdk-22.3.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/icu4j-71.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-22.3.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/js-scriptengine-22.3.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/regex-22.3.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/truffle-api-22.3.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -9,7 +9,7 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="ModuleComputersLib" level="project" />
<orderEntry type="module" module-name="TerrarumBuild" />
<orderEntry type="library" name="graalvm-js-21.1.0 and graalvm-js-scriptengine-21.1.0" level="project" />
<orderEntry type="library" name="graalvm-js 22.3.1" level="project" />
<orderEntry type="library" name="TerrarumSansBitmap" level="project" />
<orderEntry type="library" name="badlogicgames.gdx" level="project" />
<orderEntry type="library" name="badlogicgames.gdx.backend.lwjgl3" level="project" />

View File

@@ -24,7 +24,7 @@ class ItemHomeComputer(originalID: ItemID) : GameItem(originalID) {
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = FixtureItemBase.getItemImageFromSheet("dwarventech", "sprites/fixtures/desktop_computer.tga", TerrarumAppConfiguration.TILE_SIZE, TerrarumAppConfiguration.TILE_SIZE)
override var baseToolSize: Double? = baseMass

View File

@@ -32,7 +32,7 @@ class ItemWearableWorldRadar(originalID: String) {// : GameItem(originalID) {
override var inventoryCategory = Category.TOOL
override val isUnique = false
override val isDynamic = true
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = FixtureItemBase.getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")

View File

@@ -18,7 +18,7 @@
<orderEntry type="library" name="gdx-controllers-desktop-2.2.1" level="project" />
<orderEntry type="library" name="jxinput-1.0.0" level="project" />
<orderEntry type="library" name="gdx-platform-1.11.0-natives" level="project" />
<orderEntry type="library" name="graalvm-js-21.1.0 and graalvm-js-scriptengine-21.1.0" level="project" />
<orderEntry type="library" name="graalvm-js 22.3.1" level="project" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
<orderEntry type="library" name="badlogicgames.gdx" level="project" />
<orderEntry type="library" name="badlogicgames.gdx.backend.lwjgl3" level="project" />

Binary file not shown.

View File

@@ -65,12 +65,12 @@
["<ENVELOPE>"],
["\n"],
["\x08"],
["`","~","\u0303",""],
["`","~","\u0300","\u0303"],
["-","_","","—"],
["=","+","×","÷"],
["[","{","«",""],
["]","}","»",""],
["\\","|","~","¦"],
["\\","|","¬","¦"],
["o","O","ó","Ó"],
["'",'"',"õ","Õ"],
["/","?","¿","§"],

View File

@@ -65,12 +65,12 @@
["<ENVELOPE>"],
["\n"],
["\x08"],
["`","~","\u0303",""],
["`","~","\u0300","\u0303"],
["-","_","","—"],
["=","+","×","÷"],
["[","{","«",""],
["]","}","»",""],
["\\","|","~","¦"],
["\\","|","¬","¦"],
["o","O","ó","Ó"],
["'",'"',"õ","Õ"],
["/","?","¿","§"],

View File

@@ -25,5 +25,6 @@
"APP_NOMODULE_2": "Please configure your Load Order and restart:",
"MENU_LABEL_KEYCONFIG_HELP1": "Click On the Keycap to Assign Actions",
"MENU_LABEL_IME_TOGGLE": "Toggle IME",
"MENU_LABEL_PASTE_FROM_CLIPBOARD": "Paste from Cliboard"
"MENU_LABEL_PASTE_FROM_CLIPBOARD": "Paste from Cliboard",
"MENU_OPTIONS_PERFORMANCE": "Performance"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +0,0 @@
{
"MENU_LABEL_COPYRIGHT": "ちょさくけん",
"COPYRIGHT_ALL_RIGHTS_RESERVED": "ぜんちょさくけん しょゆう",
"COPYRIGHT_GNU_GPL_3": "GNU GPL 3で はいふ",
"APP_WARNING_HEALTH_AND_SAFETY": "けいこくーけんこうと あんぜんの ために",
"MENU_LABEL_PRESS_START_SYMBOL": "> ボタンを おす",
"MENU_MODULES" : "モジュール"
}

View File

@@ -24,5 +24,6 @@
"APP_NOMODULE_2": "다음의 파일에서 불러오기 순서를 설정하고 게임을 재시작하십시오.",
"MENU_LABEL_KEYCONFIG_HELP1": "키캡을 클릭해 컨트롤을 배정하십시오",
"MENU_LABEL_IME_TOGGLE": "입력기 켜고 끄기",
"MENU_LABEL_PASTE_FROM_CLIPBOARD": "복사한 텍스트 붙여넣기"
"MENU_LABEL_PASTE_FROM_CLIPBOARD": "복사한 텍스트 붙여넣기",
"MENU_OPTIONS_PERFORMANCE": "성능"
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +0,0 @@
{
"CONTEXT_CHARACTER": "캐리ᄀ터",
"MENU_LABEL_COPYRIGHT": "저자ᄀ구ᅥᄂ",
"COPYRIGHT_ALL_RIGHTS_RESERVED": "모드ᄂ 구ᅥᄂ리 보유",
"COPYRIGHT_GNU_GPL_3": "GNU GPL 3에 ᄃ다라 배포도ᅵᄆ",
"APP_WARNING_HEALTH_AND_SAFETY": "겨ᄋ고—거ᄂ가ᄋ고ᅡ 아ᄂ저ᄂ으ᄅ 우ᅵ하여",
"MENU_LABEL_PRESS_START_SYMBOL": ">으ᄅ 누르세요",
"MENU_MODULES" : "모듀ᄅ",
"GAME_ACTION_MOVE_VERB" : "이도ᄋ하기",
"GAME_ACTION_ZOOM" : "호ᅡᄀ대·추ᄀ소",
"MENU_LABEL_RESET" : "재서ᄅ저ᄋ",
"GAME_32BIT_WARNING1": "32비트 버저ᄂ으ᅵ Java르ᄅ 사요ᄋ주ᄋ이ᄂ 거ᄉ 가ᄐ스ᄇ니다.",
"GAME_32BIT_WARNING2": "아래 리ᄋ크에서 초ᅵ시ᄂ 64비트 Java르ᄅ 내려바ᄃ아 서ᄅ치해주세요.",
"GAME_32BIT_WARNING3": "https://www.java.com/ko/download/",
"MENU_OPTION_STREAMERS_LAYOUT": "채티ᄋ차ᄋ 오버레이",
"MENU_LABEL_RESTART_REQUIRED": "재시자ᄀ 피ᄅ요",
"MENU_LABEL_KEYBOARD_LAYOUT": "자파ᄂ 배여ᄅ",
"MENU_LABEL_IME": "이ᄇ려ᄀ기",
"MENU_OPTIONS_DITHER": "디더리ᄋ",
"MENU_OPTIONS_BLUR": "흐리ᄆ",
"MENU_OPTIONS_PARTICLES": "이ᄇ자 수",
"MENU_IO_IMPORT": "가져오기"
}

Binary file not shown.

View File

@@ -9,6 +9,9 @@ id;classname
9;net.torvald.terrarum.modulebasegame.gameitems.WireCutterAll
10;net.torvald.terrarum.modulebasegame.gameitems.ItemTypewriter
256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak
257;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorEbony
258;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorBirch
259;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorRosewood
999998;net.torvald.terrarum.modulebasegame.gameitems.ItemTestDoor
999999;net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry
1 id classname
9 9 net.torvald.terrarum.modulebasegame.gameitems.WireCutterAll
10 10 net.torvald.terrarum.modulebasegame.gameitems.ItemTypewriter
11 999998 256 net.torvald.terrarum.modulebasegame.gameitems.ItemTestDoor net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak
12 257 net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorEbony
13 258 net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorBirch
14 259 net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorRosewood
15 999999 net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry
16
17

View File

@@ -1,14 +0,0 @@
{
"CONTEXT_WORLD_NEW": "あたらしい せかい",
"MENU_LABEL_DELETE_WORLD": "せかいを さくじょ",
"CONTEXT_WORLD_COUNT": "せかい: ",
"MENU_MONITOR_CALI_TITLE": "モニターチェック",
"GAME_INVENTORY_INGREDIENTS" : "ざいりょう",
"GAME_INVENTORY_POTIONS" : "すいやく",
"GAME_INVENTORY_BLOCKS" : "ブロック",
"GAME_INVENTORY_WALLS" : "かべ",
"CONTEXT_ITEM_TOOL_PLURAL" : "どうぐ",
"GAME_INVENTORY_FAVORITES" : "とうろく"
}

View File

@@ -1,78 +0,0 @@
{
"BLOCK_STONE": "도ᄅ",
"BLOCK_STONE_PLURAL": "도ᄅ",
"BLOCK_DIRT": "흐ᄅᄀ",
"BLOCK_DIRT_PLURAL": "흐ᄅᄀ",
"BLOCK_GRASS": "자ᄂ디",
"BLOCK_GRAS_PLURALS": "자ᄂ디",
"BLOCK_PLANK_NORMAL": "나무파ᄂ자",
"BLOCK_PLANK_NORMAL_PLURAL": "나무파ᄂ자",
"BLOCK_PLANK_EBONY": "거ᄆ저ᄋ 나무파ᄂ자",
"BLOCK_PLANK_EBONY_PLURAL": "거ᄆ저ᄋ 나무파ᄂ자",
"BLOCK_PLANK_BIRCH": "하야ᄋ 나무파ᄂ자",
"BLOCK_PLANK_BIRCH_PLURAL": "하야ᄋ 나무파ᄂ자",
"BLOCK_PLANK_BLOODROSE": "ᄇ바ᄅ가ᄋ 나무파ᄂ자",
"BLOCK_PLANK_BLOODROSE_PLURAL": "ᄇ바ᄅ가ᄋ 나무파ᄂ자",
"BLOCK_TRUNK_NORMAL": "토ᄋ나무",
"BLOCK_TRUNK_NORMAL_PLURAL": "토ᄋ나무",
"BLOCK_TRUNK_EBONY": "흐ᄀ다ᄂ나무",
"BLOCK_TRUNK_EBONY_PLURAL": "흐ᄀ다ᄂ나무",
"BLOCK_TRUNK_BIRCH": "자자ᄀ나무",
"BLOCK_TRUNK_BIRCH_PLURAL": "자자ᄀ나무",
"BLOCK_TRUNK_BLOODROSE": "자다ᄂ나무",
"BLOCK_TRUNK_BLOODROSE_PLURAL": "자다ᄂ나무",
"BLOCK_STONE_QUARRIED": "서ᄀ재",
"BLOCK_STONE_QUARRIED_PLURAL": "서ᄀ재",
"BLOCK_SAND": "모래",
"BLOCK_SAND_PLURAL": "모래",
"BLOCK_GRAVEL": "자가ᄅ",
"BLOCK_GRAVEL_PLURAL": "자가ᄅ",
"BLOCK_ORE_MALACHITE": "고ᄋ자ᄀ서ᄀ",
"BLOCK_ORE_MALACHITES": "고ᄋ자ᄀ서ᄀ",
"BLOCK_ORE_HEMATITE": "저ᄀ처ᄅ서ᄀ",
"BLOCK_ORE_HEMATITE_PLURAL": "저ᄀ처ᄅ서ᄀ",
"BLOCK_ORE_NATURAL_GOLD": "자여ᄂ그ᄆ",
"BLOCK_ORE_NATERAL_GOLD_PLURAL": "자여ᄂ그ᄆ",
"BLOCK_ORE_NATURAL_SILVER": "자여ᄂ으ᄂ",
"BLOCK_ORE_NATURAL_SILVER_PLURAL": "자여ᄂ으ᄂ",
"BLOCK_ORE_RUTILE": "그ᄆ호ᄋ서ᄀ",
"BLOCK_ORE_RUTILE_PLURAL": "그ᄆ호ᄋ서ᄀ",
"BLOCK_ORE_AURICHALCUMITE": "지ᄂ그ᄆ서ᄀ",
"BLOCK_ORE_AURICHALCUMITE_PLURAL": "지ᄂ그ᄆ서ᄀ",
"BLOCK_GEM_RUBY": "호ᄋ오ᄀ서ᄀ",
"BLOCK_GEM_RUBY_PLURAL": "호ᄋ오ᄀ서ᄀ",
"BLOCK_GEM_EMERALD": "추ᅵ오ᄀ서ᄀ",
"BLOCK_GEM_EMERALD_PLURAL": "추ᅵ오ᄀ서ᄀ",
"BLOCK_GEM_SAPPHIRE": "처ᄋ오ᄀ서ᄀ",
"BLOCK_GEM_SAPPHIRE_PLURAL": "처ᄋ오ᄀ서ᄀ",
"BLOCK_GEM_TOPAZ": "호ᅡᄋ오ᄀ서ᄀ",
"BLOCK_GEM_TOPAZ_PLURAL": "호ᅡᄋ오ᄀ서ᄀ",
"BLOCK_GEM_DIAMOND": "그ᄆ가ᄋ서ᄀ",
"BLOCK_GEM_DIAMOND_PLURAL": "그ᄆ가ᄋ서ᄀ",
"BLOCK_GEM_AMETHYST": "자수저ᄋ서ᄀ",
"BLOCK_GEM_AMETHYST_PLURAL": "자수저ᄋ서ᄀ",
"BLOCK_SNOW": "누ᄂ",
"BLOCK_SNOW_PLURAL": "누ᄂ",
"BLOCK_ICE_FRAGILE": "사ᄅ어ᄅ으ᄆ",
"BLOCK_ICE_FRAGILE_PLURAL": "사ᄅ어ᄅ으ᄆ",
"BLOCK_ICE_NATURAL": "어ᄅ으ᄆ",
"BLOCK_ICE_NATURAL_PLURAL": "어ᄅ으ᄆ",
"BLOCK_ICE_CLEAR_MAGICAL": "ᄀ개ᄀ그ᄉ하ᄂ 어ᄅ으ᄆ",
"BLOCK_ICE_CLEAR_MAGICAL_PLURAL": "ᄀ개ᄀ그ᄉ하ᄂ 어ᄅ으ᄆ",
"BLOCK_PLATFORM_STONE": "도ᄅ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_STONE_PLURAL": "도ᄅ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_WOODEN": "나무 바ᄅ파ᄂ",
"BLOCK_PLATFORM_WOODEN_PLURAL": "나무 바ᄅ파ᄂ",
"BLOCK_PLATFORM_EBONY": "흐ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_EBONY_PLURAL": "흐ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_BIRCH": "배ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_BIRCH_PLURAL": "배ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_BLOODROSE": "저ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_PLATFORM_BLOODROSE_PLURAL": "저ᄀ다ᄂ 바ᄅ파ᄂ",
"BLOCK_TORCH": "호ᅢᄉ부ᄅ",
"BLOCK_TORCH_PLURAL": "호ᅢᄉ부ᄅ",
"BLOCK_WATER": "무ᄅ",
"BLOCK_WATER_PLURAL": "무ᄅ",
"BLOCK_LAVA": "요ᄋ아ᄆ",
"BLOCK_LAVA_PLURAL": "요ᄋ아ᄆ"
}

View File

@@ -1,5 +0,0 @@
{
"DEV_MESSAGE_CONSOLE_CODEX": "사요ᄋ 가느ᄋ하ᄂ 며ᄋ려ᄋ어 모ᄀ로ᄀ으ᄅ 보려며ᄂ codex르ᄅ 이ᄇ려ᄀ해 주시ᄇ시오.",
"DEV_MESSAGE_CONSOLE_AVAILABLE_COMMANDS": "며ᄋ려ᄋ어 모ᄀ로ᄀ:",
"DEV_MESSAGE_CONSOLE_COMMAND_UNKNOWN": "%1$s: 아ᄅ 수 어ᄇᄉ느ᄂ 며ᄋ려ᄋ어"
}

View File

@@ -1,18 +0,0 @@
{
"CONTEXT_WORLD_NEW": "새 세계",
"MENU_LABEL_DELETE_WORLD": "새계 사ᄀ제",
"CONTEXT_WORLD_COUNT": "새계: ",
"MENU_MONITOR_CALI_TITLE": "모니터 호ᅡᄀ이ᄂ",
"GAME_INVENTORY_INGREDIENTS": "재료",
"GAME_INVENTORY_POTIONS": "무ᄅ야ᄀ",
"GAME_INVENTORY_BLOCKS": "브ᄅ로ᄀ",
"GAME_INVENTORY_WALLS": "벼ᄀ지",
"CONTEXT_ITEM_TOOL_PLURAL": "도구",
"GAME_INVENTORY_FAVORITES": "즈ᄅ겨차ᄌ기",
"GAME_INVENTORY_REGISTER": "드ᄋ로ᄀ하기",
"MENU_LABEL_MENU": "메뉴",
"CONTEXT_ITEM_MAP": "지도",
"CONTEXT_GENERATOR_SEED": "시드",
"GAME_ACTION_GRAPPLE": "매다ᄅ리기",
"GAME_ACTION_QUICKSEL": "빠르ᄂ 서ᄂ태ᄀ"
}

View File

@@ -1,3 +0,0 @@
{
"ITEM_STORAGE_CHEST": "보고ᅡᄂ사ᄋ자"
}

7
buildapp/build_app_all.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
./build_app_linux_arm.sh
./build_app_linux_x86.sh
./build_app_mac_arm.sh
./build_app_mac_x86.sh
./build_app_windows_x86.sh

View File

@@ -0,0 +1,20 @@
## How To Edit the Graaljs Jars
0. Download following from Maven:
org.graalvm.js:js:00.0.0
org.graalvm.js:js-scriptengine:00.0.0
1. grab `js-00.0.0.jar`
2. on `META-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider`, edit as shown:
com.oracle.truffle.js.lang.JavaScriptLanguageProvider (existing line)
com.oracle.truffle.regex.RegexLanguageProvider (<< add this line)
3. grab `regex-00.0.0.jar`
4. on `META-INF/services/com.oracle.truffle.api.TruffleLanguage$Provider`, edit as shown:
com.oracle.truffle.regex.RegexLanguageProvider (existing line)
com.oracle.truffle.js.lang.JavaScriptLanguageProvider (<< add this line)
5. Re-zip two files

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/graal-sdk-22.3.1-javadoc.jar LFS Normal file

Binary file not shown.

BIN
lib/graal-sdk-22.3.1-sources.jar LFS Normal file

Binary file not shown.

BIN
lib/graal-sdk-22.3.1.jar LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/icu4j-71.1-javadoc.jar LFS Normal file

Binary file not shown.

BIN
lib/icu4j-71.1-sources.jar LFS Normal file

Binary file not shown.

BIN
lib/icu4j-71.1.jar LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/js-22.3.1-edit.jar LFS Normal file

Binary file not shown.

BIN
lib/js-22.3.1-javadoc.jar LFS Normal file

Binary file not shown.

BIN
lib/js-22.3.1-sources.jar LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/js-scriptengine-22.3.1.jar LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/regex-22.3.1-edit.jar LFS Normal file

Binary file not shown.

BIN
lib/regex-22.3.1-javadoc.jar LFS Normal file

Binary file not shown.

BIN
lib/regex-22.3.1-sources.jar LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/truffle-api-22.3.1.jar LFS Normal file

Binary file not shown.

View File

@@ -1,6 +1,6 @@
package net.torvald.parametricsky.datasets
import net.torvald.terrarum.serialise.toLittleLong
import net.torvald.terrarum.serialise.toLittleInt64
import java.io.File
import java.io.FileInputStream
@@ -14,7 +14,7 @@ object DatasetOp {
val ret = DoubleArray(entrysize) {
val inputbuf = ByteArray(8)
fis.read(inputbuf)
val rawnum = inputbuf.toLittleLong()
val rawnum = inputbuf.toLittleInt64()
Double.fromBits(rawnum)
}

View File

@@ -22,29 +22,19 @@ object CommonResourcePool {
init {
addToLoadingList("itemplaceholder_16") {
val t = TextureRegion(Texture("assets/item_kari_16.tga"))
t.flip(false, false)
/*return*/t
TextureRegion(Texture("assets/item_kari_16.tga")).also { it.flip(false, false) }
}
addToLoadingList("itemplaceholder_24") {
val t = TextureRegion(Texture("assets/item_kari_24.tga"))
t.flip(false, false)
/*return*/t
TextureRegion(Texture("assets/item_kari_24.tga")).also { it.flip(false, false) }
}
addToLoadingList("itemplaceholder_32") {
val t = TextureRegion(Texture("assets/item_kari_32.tga"))
t.flip(false, false)
/*return*/t
TextureRegion(Texture("assets/item_kari_32.tga")).also { it.flip(false, false) }
}
addToLoadingList("itemplaceholder_48") {
val t = TextureRegion(Texture("assets/item_kari_48.tga"))
t.flip(false, false)
/*return*/t
TextureRegion(Texture("assets/item_kari_48.tga")).also { it.flip(false, false) }
}
addToLoadingList("test_texture") {
val t = TextureRegion(Texture("assets/test_texture.tga"))
t.flip(false, false)
/*return*/t
TextureRegion(Texture("assets/test_texture.tga")).also { it.flip(false, false) }
}
loadAll()
}
@@ -130,7 +120,7 @@ object CommonResourcePool {
fun getAsTexture(identifier: String) = getAs<Texture>(identifier)
fun dispose() {
pool.forEach { name, u ->
pool.forEach { (name, u) ->
try {
when {
u is Disposable -> u.dispose()

View File

@@ -3,6 +3,12 @@ package net.torvald.terrarum
typealias ItemValue = KVHashMap
/**
* Supported Value Types:
* - Int
* - Double (`getAsFloat()` first retrieves the Double value then casts to Float)
* - Boolean
* - String
*
* Created by minjaesong on 2015-12-30.
*/
open class KVHashMap {
@@ -42,47 +48,29 @@ open class KVHashMap {
}
fun getAsInt(key: String): Int? {
val value = get(key)
if (value == null) return null
val value = get(key) ?: return null
return value as Int
}
fun getAsDouble(key: String): Double? {
val value = get(key)
if (value == null) return null
if (value is Int)
return value.toDouble()
val value = get(key) ?: return null
if (value is Int) return value.toDouble()
return value as Double
}
fun getAsFloat(key: String): Float? {
val value = get(key)
if (value == null) return null
if (value is Float) return value as Float
val value = get(key) ?: return null
if (value is Float) return value
return getAsDouble(key)?.toFloat()
}
fun getAsString(key: String): String? {
val value = get(key)
if (value == null) return null
val value = get(key) ?: return null
return value as String
}
fun getAsBoolean(key: String): Boolean? {
val value = get(key)
if (value == null) return null
val value = get(key) ?: return null
return value as Boolean
}

View File

@@ -788,7 +788,7 @@ fun AppUpdateListOfSavegames() {
// create list of worlds
File(worldsDir).listFiles().filter { !it.isDirectory && !it.name.contains('.') }.mapNotNull { file ->
try {
DiskSkimmer(file, Common.CHARSET, true)
DiskSkimmer(file, true)
}
catch (e: Throwable) {
System.err.println("Unable to load a world file ${file.absolutePath}")
@@ -802,9 +802,13 @@ fun AppUpdateListOfSavegames() {
val jsonFile = it.getFile(SAVEGAMEINFO)!!
val json = JsonReader().parse(ByteArray64Reader(jsonFile.bytes, Common.CHARSET).readText())
val worldUUID = UUID.fromString(json.getString("worldIndex"))
App.savegameWorlds[worldUUID] = it
App.savegameWorldsName[worldUUID] = it.getDiskName(Common.CHARSET)
App.sortedSavegameWorlds.add(worldUUID)
// if multiple valid savegames with same UUID exist, only the most recent one is retained
if (!App.savegameWorlds.contains(worldUUID)) {
App.savegameWorlds[worldUUID] = it
App.savegameWorldsName[worldUUID] = it.getDiskName(Common.CHARSET)
App.sortedSavegameWorlds.add(worldUUID)
}
}
@@ -814,7 +818,7 @@ fun AppUpdateListOfSavegames() {
// create list of players
File(playersDir).listFiles().filter { !it.isDirectory && !it.name.contains('.') }.mapNotNull { file ->
try {
DiskSkimmer(file, Common.CHARSET, true)
DiskSkimmer(file, true)
}
catch (e: Throwable) {
System.err.println("Unable to load a player file ${file.absolutePath}")
@@ -828,9 +832,13 @@ fun AppUpdateListOfSavegames() {
val jsonFile = it.getFile(SAVEGAMEINFO)!!
val json = JsonReader().parse(ByteArray64Reader(jsonFile.bytes, Common.CHARSET).readText())
val playerUUID = UUID.fromString(json.getString("uuid"))
App.savegamePlayers[playerUUID] = it
App.savegamePlayersName[playerUUID] = it.getDiskName(Common.CHARSET)
App.sortedPlayers.add(playerUUID)
// if multiple valid savegames with same UUID exist, only the most recent one is retained
if (!App.savegamePlayers.contains(playerUUID)) {
App.savegamePlayers[playerUUID] = it
App.savegamePlayersName[playerUUID] = it.getDiskName(Common.CHARSET)
App.sortedPlayers.add(playerUUID)
}
}
}

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.Pixmap
import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.ui.*
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import kotlin.math.roundToInt
@@ -41,6 +42,18 @@ class UIItemInventoryCatBar(
arrayOf(GameItem.Category.MISC),
arrayOf(CAT_ALL)
)
internal val catIconsLabels = listOf(
{ Lang["GAME_INVENTORY_WEAPONS"] },
{ Lang["CONTEXT_ITEM_TOOL_PLURAL"] },
{ Lang["CONTEXT_ITEM_ARMOR"] },
{ Lang["GAME_INVENTORY_INGREDIENTS"] },
{ Lang["GAME_INVENTORY_POTIONS"] },
{ Lang["CONTEXT_ITEM_MAGIC"] },
{ Lang["GAME_INVENTORY_BLOCKS"] },
{ Lang["GAME_INVENTORY_WALLS"] },
{ Lang["GAME_GENRE_MISC"] },
{ Lang["MENU_LABEL_ALL"] },
)
private val inventoryUI = parentUI
@@ -274,12 +287,17 @@ class UIItemInventoryCatBar(
batch.color = underlineColour
Toolkit.drawStraightLine(batch, posX, posY + height - 1, posX + width, 1, false)
// indicator
if (selectedPanel == 1) {
// indicator
batch.color = underlineHighlightColour
batch.draw(underlineIndTex, (highlighterXPos - buttonGapSize / 2).toFloat().round(), posY + highlighterYPos)
}
batch.draw(underlineIndTex, (highlighterXPos - buttonGapSize / 2).round(), posY + highlighterYPos)
// label
batch.color = Color.WHITE
catIconsLabels[selectedIcon]().let {
App.fontGame.draw(batch, it, posX + ((width - App.fontGame.getWidth(it)) / 2).toFloat(), posY + highlighterYPos + 4)
}
}
}

View File

@@ -50,10 +50,7 @@ object AVKey {
const val STRENGTH = "strength"
const val STRENGTHBUFF = "$STRENGTH$BUFF"
const val ENCUMBRANCE = "encumbrance"
/** 30-bit RGB (Int)
* 0000 0010000000 0010000000 0010000000
* ^ Red ^ Green ^ Blue
*/
const val LUMR = "luminosityred"
const val LUMG = "luminositygreen"
const val LUMB = "luminosityblue"
@@ -142,4 +139,14 @@ object AVKey {
const val BAREHAND_MINHEIGHT = "barehandactionminheight"
const val BAREHAND_BASE_DIGSIZE = "basebarehanddiggingsize"
/** String
* Comma-separated values of UUID for the world, Ascii85-encoded, big endian.
*
* Use extension function `UUID.toAscii85()` and `String.ascii85toUUID()` defined in the file for net.torvald.terrarum.serialise.Ascii85
*
* example value: `"SIxM+kGlrjZgLx5Zeqz7,;:UIZ5Q=2WT35SgKpOp.,vvf'fNW3G<ROimy(Y;E<,-mdtr5|^RGOqr0x*T*lC,YABr1oQwErKG)pGC'gUG"`
*/
const val WORLD_PORTAL_DICT = ""
}

View File

@@ -74,10 +74,10 @@ abstract class Actor : Comparable<Actor>, Runnable {
fun Int.sign(): Int = if (this > 0) 1 else if (this < 0) -1 else 0
/* called when the actor is loaded from the save; one use of this function is to "re-sync" the
* Transient variables such as `mainUI` of FixtureBase
*/
open fun reload() {
/* called when the actor is loaded from the save; one use of this function is to "re-sync" the
* Transient variables such as `mainUI` of FixtureBase
*/
actorValue.actor = this
if (this is Pocketed)

View File

@@ -3,6 +3,8 @@ package net.torvald.terrarum.gameactors
import net.torvald.terrarum.KVHashMap
/**
* For the dictionary of recognised ActorValues, see the source code of [net.torvald.terrarum.gameactors.AVKey]
*
* Created by minjaesong on 2017-04-28.
*/
class ActorValue : KVHashMap {

View File

@@ -433,15 +433,15 @@ open class ActorWithBody : Actor {
}
// get() methods are moved to update(), too much stray object being created is definitely not good
val centrePosVector: Vector2 = Vector2(0.0,0.0)
@Transient val centrePosVector: Vector2 = Vector2(0.0,0.0)
//get() = Vector2(hitbox.centeredX, hitbox.centeredY)
val centrePosPoint: Point2d = Point2d(0.0, 0.0)
@Transient val centrePosPoint: Point2d = Point2d(0.0, 0.0)
//get() = Point2d(hitbox.centeredX, hitbox.centeredY)
val feetPosVector: Vector2 = Vector2(0.0,0.0)
@Transient val feetPosVector: Vector2 = Vector2(0.0,0.0)
//get() = Vector2(hitbox.centeredX, hitbox.endY)
val feetPosPoint: Point2d = Point2d(0.0,0.0)
@Transient val feetPosPoint: Point2d = Point2d(0.0,0.0)
//get() = Point2d(hitbox.centeredX, hitbox.endY)
val feetPosTile: Point2i = Point2i(0,0)
@Transient val feetPosTile: Point2i = Point2i(0,0)
//get() = Point2i(hIntTilewiseHitbox.centeredX.floorInt(), hIntTilewiseHitbox.endY.floorInt())
override fun run() = update(App.UPDATE_RATE)
@@ -459,6 +459,40 @@ open class ActorWithBody : Actor {
private val bounceDampenVelThreshold = 0.5
/**
* Used on final loading phase, move the player to the opposite direction of the gravitation, until the player's
* not colliding
*/
open fun tryUnstuck() {
val newHitbox = hitbox.clone()
val translation = gravitation.setMagnitude(-1.0)
while (isColliding(newHitbox)) {
newHitbox.translate(translation)
}
hitbox.reassign(newHitbox)
hIntTilewiseHitbox.setFromTwoPoints(
hitbox.startX.plus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor() + 0.5,
hitbox.startY.plus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor() + 0.5,
hitbox.endX.plus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor() + 0.5,
hitbox.endY.plus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor() + 0.5
)
intTilewiseHitbox.setFromTwoPoints(
hitbox.startX.div(TILE_SIZE).floor(),
hitbox.startY.div(TILE_SIZE).floor(),
hitbox.endX.minus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor(),
hitbox.endY.minus(PHYS_EPSILON_DIST).div(TILE_SIZE).floor()
)
centrePosVector.set(hitbox.centeredX, hitbox.centeredY)
centrePosPoint.set(hitbox.centeredX, hitbox.centeredY)
feetPosVector.set(hitbox.centeredX, hitbox.endY)
feetPosPoint.set(hitbox.centeredX, hitbox.endY)
feetPosTile.set(hIntTilewiseHitbox.centeredX.floorInt(), hIntTilewiseHitbox.endY.floorInt())
}
override fun update(delta: Float) {
// re-scale hitbox

View File

@@ -124,11 +124,7 @@ object IME {
if (langCode.isNotEmpty()) {
printdbg(this, "Icon order #${(k+1) / 20} - icons[\"$langCode\"] = iconSheet.get(1, ${k/20})")
iconSheet.get(1, k / 20).let {
it.flip(false, false)
icons["$langCode"] = it
}
icons["$langCode"] = iconSheet.get(1, k / 20).also { it.flip(false, false) }
}
}

View File

@@ -108,7 +108,9 @@ abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneabl
*/
var equipPosition: Int = EquipPosition.NULL
abstract val material: Material
internal val material: Material
get() = MaterialCodex.getOrDefault(materialId)
abstract val materialId: String
/**
* DO NOT READ FROM THIS VALUE: USE `ItemCodex.getItemImage(item)`;
@@ -190,6 +192,11 @@ abstract class GameItem(val originalID: ItemID) : Comparable<GameItem>, Cloneabl
*/
open val extra = Codex()
/* called when the instance of the dynamic is loaded from the save; one may use this function to "re-sync" some values,
* for the purpose of savegame format update, defence against rogue savegame manipulation, etc.
*/
open fun reload() { }
/**
* Effects applied continuously while in pocket
*/

View File

@@ -73,6 +73,9 @@ class ItemCodex {
}
}
dynamicItemInventory[dynid] = item
// try to call reload() of the dynamic items
item.reload()
}
}

View File

@@ -88,7 +88,7 @@ class EntryPoint : ModuleEntryPoint() {
override var stackable = true
override var inventoryCategory = if (isWall) Category.WALL else Category.BLOCK
override var isDynamic = false
override val material = MaterialCodex.getOrDefault(tile.material)
override val materialId = tile.material
// override val itemImage: TextureRegion
// get() {
// val itemSheetNumber = App.tileMaker.tileIDtoItemSheetNumber(originalID)

View File

@@ -356,7 +356,9 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
codices.player.setPosition(it.physics.position)
if (isMultiplayer) {
printdbg(this, "Using world's ActorValue instead of player's")
codices.player.actorValue = it.actorValue!!
printdbg(this, "Using world's Inventory instead of player's")
codices.player.inventory = it.inventory!!
}
}
@@ -370,6 +372,11 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
}
// try to unstuck the repositioned player
codices.player.tryUnstuck()
// by doing this, whatever the "possession" the player had will be broken by the game load
actorNowPlaying = codices.player
actorGamer = codices.player
@@ -381,7 +388,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
private fun postInitForNewGame() {
worldSavefileName = LoadSavegame.getWorldSavefileName(savegameNickname, world)
worldSavefileName = LoadSavegame.getWorldSavefileName(world)
playerSavefileName = LoadSavegame.getPlayerSavefileName(actorGamer)
worldDisk = VDUtil.createNewDisk(

View File

@@ -186,9 +186,9 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) {
// load a half-gradient texture that would be used throughout the titlescreen and its sub UIs
CommonResourcePool.addToLoadingList("title_halfgrad") {
val t = Texture(Gdx.files.internal("./assets/graphics/halfgrad.tga"))
t.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
t
Texture(Gdx.files.internal("./assets/graphics/halfgrad.tga")).also {
it.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
}
}
CommonResourcePool.loadAll()

View File

@@ -191,7 +191,7 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
override val originalName: String = actorValue.getAsString(AVKey.NAME) ?: "(no name)"
override var stackable = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
}
override fun update(delta: Float) {

View File

@@ -1,29 +1,12 @@
package net.torvald.terrarum.modulebasegame.gameactors
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.*
import net.torvald.terrarum.App.gamepadLabelStart
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_COUNT
import net.torvald.terrarum.modulebasegame.ui.*
import net.torvald.terrarum.modulebasegame.ui.UIInventoryCells.Companion.weightBarWidth
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.CELLS_VRT
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_X
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.catBarWidth
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.controlHelpHeight
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.listGap
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.unicode.getKeycapPC
/**
* Created by minjaesong on 2019-07-08.
@@ -65,236 +48,3 @@ internal class FixtureStorageChest : FixtureBase {
const val MASS = 2.0
}
}
internal class UIStorageChest : UICanvas(
toggleKeyLiteral = App.getConfigInt("control_key_inventory"),
toggleButtonLiteral = App.getConfigInt("control_gamepad_start"),
), HasInventory {
lateinit var chestInventory: FixtureInventory
lateinit var chestNameFun: () -> String
override var width = App.scr.width
override var height = App.scr.height
private val negotiator = object : InventoryTransactionNegotiator() {
override fun accept(player: FixtureInventory, fixture: FixtureInventory, item: GameItem, amount: Long) {
player.remove(item, amount)
fixture.add(item, amount)
}
override fun reject(fixture: FixtureInventory, player: FixtureInventory, item: GameItem, amount: Long) {
fixture.remove(item, amount)
player.add(item, amount)
}
}
override fun getNegotiator() = negotiator
override fun getFixtureInventory(): FixtureInventory = chestInventory
override fun getPlayerInventory(): FixtureInventory = INGAME.actorNowPlaying!!.inventory
private val catBar: UIItemInventoryCatBar
private val itemListChest: UIItemInventoryItemGrid
private val itemListPlayer: UIItemInventoryItemGrid
private var encumbrancePerc = 0f
private var isEncumbered = false
private var halfSlotOffset = (UIItemInventoryElemSimple.height + listGap) / 2
init {
catBar = UIItemInventoryCatBar(
this,
(App.scr.width - catBarWidth) / 2,
42 - UIInventoryFull.YPOS_CORRECTION + (App.scr.height - internalHeight) / 2,
internalWidth,
catBarWidth,
false
)
catBar.selectionChangeListener = { old, new -> itemListUpdate() }
itemListChest = UIItemInventoryItemGrid(
this,
catBar,
{ getFixtureInventory() },
INVENTORY_CELLS_OFFSET_X() - halfSlotOffset,
INVENTORY_CELLS_OFFSET_Y(),
6, CELLS_VRT,
drawScrollOnRightside = false,
drawWallet = false,
keyDownFun = { _, _, _, _, _ -> Unit },
touchDownFun = { gameItem, amount, _, _, _ ->
if (gameItem != null) {
negotiator.reject(getFixtureInventory(), getPlayerInventory(), gameItem, amount)
}
itemListUpdate()
}
)
// make grid mode buttons work together
itemListChest.gridModeButtons[0].touchDownListener = { _,_,_,_ -> setCompact(false) }
itemListChest.gridModeButtons[1].touchDownListener = { _,_,_,_ -> setCompact(true) }
itemListPlayer = UIItemInventoryItemGrid(
this,
catBar,
{ INGAME.actorNowPlaying!!.inventory }, // literally a player's inventory
INVENTORY_CELLS_OFFSET_X() - halfSlotOffset + (listGap + UIItemInventoryElemWide.height) * 7,
INVENTORY_CELLS_OFFSET_Y(),
6, CELLS_VRT,
drawScrollOnRightside = true,
drawWallet = false,
keyDownFun = { _, _, _, _, _ -> Unit },
touchDownFun = { gameItem, amount, _, _, _ ->
if (gameItem != null) {
negotiator.accept(getPlayerInventory(), getFixtureInventory(), gameItem, amount)
}
itemListUpdate()
}
)
itemListPlayer.gridModeButtons[0].touchDownListener = { _,_,_,_ -> setCompact(false) }
itemListPlayer.gridModeButtons[1].touchDownListener = { _,_,_,_ -> setCompact(true) }
handler.allowESCtoClose = true
addUIitem(catBar)
addUIitem(itemListChest)
addUIitem(itemListPlayer)
}
private var openingClickLatched = false
override fun show() {
itemListPlayer.getInventory = { INGAME.actorNowPlaying!!.inventory }
itemListUpdate()
openingClickLatched = Terrarum.mouseDown
UIItemInventoryItemGrid.tooltipShowing.clear()
INGAME.setTooltipMessage(null)
}
private fun itemListUpdate() {
itemListChest.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
itemListPlayer.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
encumbrancePerc = getPlayerInventory().capacity.toFloat() / getPlayerInventory().maxCapacity
isEncumbered = getPlayerInventory().isEncumbered
}
private fun setCompact(yes: Boolean) {
itemListChest.isCompactMode = yes
itemListChest.gridModeButtons[0].highlighted = !yes
itemListChest.gridModeButtons[1].highlighted = yes
itemListChest.itemPage = 0
itemListChest.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
itemListPlayer.isCompactMode = yes
itemListPlayer.gridModeButtons[0].highlighted = !yes
itemListPlayer.gridModeButtons[1].highlighted = yes
itemListPlayer.itemPage = 0
itemListPlayer.rebuild(catBar.catIconsMeaning[catBar.selectedIcon])
itemListUpdate()
}
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
if (!openingClickLatched) {
return super.touchDown(screenX, screenY, pointer, button)
}
return false
}
override fun updateUI(delta: Float) {
catBar.update(delta)
itemListChest.update(delta)
itemListPlayer.update(delta)
if (openingClickLatched && !Terrarum.mouseDown) openingClickLatched = false
}
private val thisOffsetX = UIInventoryFull.INVENTORY_CELLS_OFFSET_X() - halfSlotOffset
private val thisOffsetX2 = thisOffsetX + (listGap + UIItemInventoryElemWide.height) * 7
private val thisOffsetY = UIInventoryFull.INVENTORY_CELLS_OFFSET_Y()
private val cellsWidth = (listGap + UIItemInventoryElemWide.height) * 6 - listGap
private val controlHelp: String
get() = if (App.environment == RunningEnvironment.PC)
"${getKeycapPC(App.getConfigInt("control_key_inventory"))} ${Lang["GAME_ACTION_CLOSE"]}"
else
"$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]} "
override fun renderUI(batch: SpriteBatch, camera: Camera) {
// background fill
UIInventoryFull.drawBackground(batch, handler.opacity)
// UI items
batch.color = Color.WHITE
catBar.render(batch, camera)
itemListChest.render(batch, camera)
itemListPlayer.render(batch, camera)
blendNormalStraightAlpha(batch)
// encumbrance meter
val encumbranceText = Lang["GAME_INVENTORY_ENCUMBRANCE"]
val chestName = chestNameFun()
val playerName = INGAME.actorNowPlaying!!.actorValue.getAsString(AVKey.NAME).orEmpty().let { it.ifBlank { Lang["GAME_INVENTORY"] } }
val encumbBarXPos = itemListPlayer.posX + itemListPlayer.width - weightBarWidth
val encumbBarTextXPos = encumbBarXPos - 6 - App.fontGame.getWidth(encumbranceText)
val yEnd = -UIInventoryFull.YPOS_CORRECTION + (App.scr.height + internalHeight).div(2).toFloat() // directly copied from UIInventoryFull.yEnd
val encumbBarYPos = yEnd - 20 + 3 // dunno why but extra 3 px is needed
val encumbCol = UIItemInventoryCellCommonRes.getHealthMeterColour(1f - encumbrancePerc, 0f, 1f)
val encumbBack = encumbCol mul UIItemInventoryCellCommonRes.meterBackDarkening
// encumbrance bar background
batch.color = encumbBack
Toolkit.fillArea(batch, encumbBarXPos, encumbBarYPos, weightBarWidth, controlHelpHeight - 6f)
// encumbrance bar
batch.color = encumbCol
Toolkit.fillArea(batch,
encumbBarXPos, encumbBarYPos,
if (getPlayerInventory().capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER)
1f
else // make sure 1px is always be seen
minOf(weightBarWidth, maxOf(1f, weightBarWidth * encumbrancePerc)),
controlHelpHeight - 6f
)
// chest name text
batch.color = Color.WHITE
App.fontGame.draw(batch, chestName, thisOffsetX + (cellsWidth - App.fontGame.getWidth(chestName)) / 2, thisOffsetY - 30)
App.fontGame.draw(batch, playerName, thisOffsetX2 + (cellsWidth - App.fontGame.getWidth(playerName)) / 2, thisOffsetY - 30)
// control hint
App.fontGame.draw(batch, controlHelp, thisOffsetX + 2f, encumbBarYPos - 3)
// encumb text
batch.color = Color.WHITE
App.fontGame.draw(batch, encumbranceText, encumbBarTextXPos, encumbBarYPos - 3f)
}
override fun doOpening(delta: Float) {
INGAME.pause()
INGAME.setTooltipMessage(null)
}
override fun doClosing(delta: Float) {
INGAME.resume()
INGAME.setTooltipMessage(null)
}
override fun endOpening(delta: Float) {
}
override fun endClosing(delta: Float) {
UIItemInventoryItemGrid.tooltipShowing.clear()
INGAME.setTooltipMessage(null) // required!
}
override fun dispose() {
}
}

View File

@@ -145,8 +145,10 @@ open class FixtureSwingingDoorBase : FixtureBase {
nameFun = customNameFun
// redefine the sprite's appearance when opened to left/right
(sprite!! as SheetSpriteAnimation).currentRow = if (doorState < 0) 2 else doorState
// define light/shadebox
// TODO: redefine when opened to left/right
(if (isOpacityActuallyLuminosity) lightBoxList else shadeBoxList)[0].light = opacity
}
@@ -336,20 +338,20 @@ open class FixtureSwingingDoorBase : FixtureBase {
}
// automatic opening/closing
else if (doorStateTimer > doorHoldLength[doorState]!!) {
val actors = INGAME.actorContainerActive.filterIsInstance<ActorWithBody>()
// val actors = INGAME.actorContainerActive.filterIsInstance<ActorWithBody>()
// auto opening and closing
// TODO make this work with "player_alies" faction, not just a player
// TODO auto open from the other side does not work if X-coord is 0 or (world width - 1)
val installer: IngamePlayer? = if (actorThatInstalledThisFixture == null) null
else INGAME.actorContainerActive.filterIsInstance<IngamePlayer>().filter { it.uuid == actorThatInstalledThisFixture }.ifEmpty {
INGAME.actorContainerInactive.filterIsInstance<IngamePlayer>().filter { it.uuid == actorThatInstalledThisFixture }
}.getOrNull(0)
// val installer: IngamePlayer? = if (actorThatInstalledThisFixture == null) null
// else INGAME.actorContainerActive.filterIsInstance<IngamePlayer>().filter { it.uuid == actorThatInstalledThisFixture }.ifEmpty {
// INGAME.actorContainerInactive.filterIsInstance<IngamePlayer>().filter { it.uuid == actorThatInstalledThisFixture }
// }.getOrNull(0)
// if the door is "owned" by someone, restrict access to its "amicable" (defined using Faction subsystem) actors
// if the door is owned by null, restrict access to ActorHumanoid and actors with "intelligent" actor value set up
if (actorThatInstalledThisFixture == null || installer != null) {
val amicableActors: List<ActorWithBody> = ArrayList(
if (true) {//actorThatInstalledThisFixture == null || installer != null) {
/*val amicableActors: List<ActorWithBody> = ArrayList(
if (actorThatInstalledThisFixture == null)
actors.filterIsInstance<ActorHumanoid>() union actors.filter { it.actorValue.getAsBoolean("intelligent") == true }
else {
@@ -367,8 +369,15 @@ open class FixtureSwingingDoorBase : FixtureBase {
}.filter {
// filter amicableActors so that ones standing near the door remain
this.hitbox.containsHitbox(INGAME.world.width * TILE_SIZED, it.hitbox)
}*/
val amicableActors = INGAME.actorContainerActive.filterIsInstance<IngamePlayer>().filter {
// actor.ontheLeftSideOfDoor and actor.ontheRightSideOfDoor won't consider the distance of the actor so we filter the actors further
this.hitbox.containsHitbox(INGAME.world.width * TILE_SIZED, it.hitbox)
}
var nobodyIsThere = true
val oldState = doorState

View File

@@ -48,7 +48,7 @@ open class HumanoidNPC : ActorHumanoid, AIControlled, CanBeAnItem {
override val originalName: String = actorValue.getAsString(AVKey.NAME) ?: "NPC"
override var stackable = true
override val isDynamic = false
override val material = Material()
override val materialId = ""
override fun startPrimaryUse(actor: ActorWithBody, delta: Float): Long {
try {

View File

@@ -93,6 +93,11 @@ object PlayerBuilderSigrid {
inventory.add("item@basegame:8", 9995) // power source
inventory.add("item@basegame:9", 1) // wire cutter
inventory.add("item@basegame:256", 995) // doors
inventory.add("item@basegame:257", 995) // doors
inventory.add("item@basegame:258", 995) // doors
inventory.add("item@basegame:259", 995) // doors
WireCodex.getAll().forEach {
try {
inventory.add(it.id, 9995)

View File

@@ -44,7 +44,7 @@ open class FixtureItemBase(originalID: ItemID, val fixtureClassName: String) : G
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
/**
* Do not address the CommonResourcePool directly; just do it like this snippet:

View File

@@ -17,7 +17,7 @@ class ItemLogicSignalEmitter(originalID: ItemID) : FixtureItemBase(originalID, "
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = getItemImageFromSingleImage("basegame", "sprites/fixtures/signal_source.tga")

View File

@@ -19,7 +19,7 @@ class ItemStorageChest(originalID: ItemID) : FixtureItemBase(originalID, "net.to
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_48")
override var baseToolSize: Double? = baseMass

View File

@@ -0,0 +1,110 @@
package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.modulebasegame.gameactors.*
/**
* Created by minjaesong on 2022-07-15.
*/
class ItemSwingingDoorOak(originalID: ItemID) :
FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorOak") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_DOOR_OAK"
override var baseMass = 20.0 // 360[L] * 0.1 * 0.56[SpecificGravity], rounded to the nearest integer
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureSwingingDoorOak()
}
}
class ItemSwingingDoorEbony(originalID: ItemID) :
FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorEbony") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_DOOR_EBONY"
override var baseMass = 30.0 // 360[L] * 0.1 * 0.82[SpecificGravity], rounded to the nearest integer
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureSwingingDoorEbony()
}
}
class ItemSwingingDoorBirch(originalID: ItemID) :
FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorBirch") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_DOOR_BIRCH"
override var baseMass = 17.0 // 360[L] * 0.1 * 0.48[SpecificGravity], rounded to the nearest integer
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureSwingingDoorBirch()
}
}
class ItemSwingingDoorRosewood(originalID: ItemID) :
FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorRosewood") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_DOOR_ROSEWOOD"
override var baseMass = 24.0 // 360[L] * 0.1 * 0.68[SpecificGravity], rounded to the nearest integer
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureSwingingDoorRosewood()
}
}

View File

@@ -21,7 +21,7 @@ class ItemTapestry(originalID: ItemID) : FixtureItemBase(originalID, "net.torval
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass

View File

@@ -1,35 +0,0 @@
package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
import net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorRosewood
/**
* Created by minjaesong on 2022-07-15.
*/
class ItemTestDoor(originalID: ItemID) : FixtureItemBase(originalID, "net.torvald.terrarum.modulebasegame.gameactors.FixtureSwingingDoorRosewood") {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_DOOR"
override var baseMass = 12.0
override var stackable = true
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val itemImage: TextureRegion
get() = CommonResourcePool.getAsTextureRegion("itemplaceholder_16")
override var baseToolSize: Double? = baseMass
init {
equipPosition = EquipPosition.HAND_GRIP
}
override val makeFixture: () -> FixtureBase = {
FixtureSwingingDoorRosewood()
}
}

View File

@@ -17,7 +17,7 @@ class ItemTikiTorch(originalID: ItemID) : FixtureItemBase(originalID, "net.torva
override var inventoryCategory = Category.MISC
override val isUnique = false
override val isDynamic = false
override val material = Material()
override val materialId = ""
override val itemImage: TextureRegion
get() = getItemImageFromSheet("basegame", "sprites/fixtures/tiki_torch.tga", 16, 32)

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