diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 000000000..0ae92fd8a
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/mods/basegame/blocks/223.tga b/assets/mods/basegame/blocks/223.tga
new file mode 100644
index 000000000..7b387c786
--- /dev/null
+++ b/assets/mods/basegame/blocks/223.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:956224d3221abb79c65e928ae1e6f2bb666ffb8785d7ca736699cb85fa17132f
+size 50220
diff --git a/assets/mods/basegame/blocks/wire.tga b/assets/mods/basegame/blocks/wire.tga
new file mode 100644
index 000000000..ec2518274
--- /dev/null
+++ b/assets/mods/basegame/blocks/wire.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:662822bb2dc056f6568896430fd48bd4954daf582ef2cb75fa77f9c80be35ec0
+size 262162
diff --git a/assets/mods/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv
index e07f6494f..ca4bcb817 100644
--- a/assets/mods/basegame/items/itemid.csv
+++ b/assets/mods/basegame/items/itemid.csv
@@ -1,5 +1,6 @@
"id";"classname"
- "8448";"net.torvald.terrarum.modulebasegame.items.PickaxeCopper"
- "8449";"net.torvald.terrarum.modulebasegame.items.PickaxeIron"
- "8450";"net.torvald.terrarum.modulebasegame.items.PickaxeSteel"
- "8466";"net.torvald.terrarum.modulebasegame.items.WirePieceSignalWire"
+ "8448";"net.torvald.terrarum.modulebasegame.gameitems.PickaxeCopper"
+ "8449";"net.torvald.terrarum.modulebasegame.gameitems.PickaxeIron"
+ "8450";"net.torvald.terrarum.modulebasegame.gameitems.PickaxeSteel"
+ "8466";"net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire"
+ "8467";"net.torvald.terrarum.modulebasegame.gameitems.TikiTorchTester"
diff --git a/assets/mods/basegame/items/malicious.groovy b/assets/mods/basegame/items/malicious.groovy
index dce7d915c..bfd6f0970 100644
--- a/assets/mods/basegame/items/malicious.groovy
+++ b/assets/mods/basegame/items/malicious.groovy
@@ -1,4 +1,4 @@
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.Material
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable
diff --git a/assets/mods/basegame/items/testpick.nope b/assets/mods/basegame/items/testpick.nope
index b93578efe..7c32011a5 100644
--- a/assets/mods/basegame/items/testpick.nope
+++ b/assets/mods/basegame/items/testpick.nope
@@ -9,7 +9,7 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ActorWBMovable
import net.torvald.terrarum.itemproperties.Calculate
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.blockproperties.Block
// following two are NOT UNUSED!
diff --git a/assets/mods/basegame/sprites/furry_sprite.properties b/assets/mods/basegame/sprites/furry_sprite.properties
new file mode 100644
index 000000000..7731b6dbc
--- /dev/null
+++ b/assets/mods/basegame/sprites/furry_sprite.properties
@@ -0,0 +1,40 @@
+# complete file name is: SPRITESHEET + bodypart name + EXTENSION
+SPRITESHEET=mods/basegame/sprites/test_furry/furbud_
+EXTENSION=.tga
+# defines frame size and origin point. Origin point is given as: (originx, size.y - 1)
+# ORIGINY is deduced from the sprite size as shown in above; you only need to set ORIGINX
+CONFIG=SIZE 48,56;ORIGINX 29
+
+# note to self: don't implement skeleton hierarchy: there's too many exceptions
+# besides, you have "ALL" key.
+
+! a skeleton also defines what body parts (images) be used.
+! you can also write multiline text using reverse solidus; this is a feature of .properties
+! skeleton joints are ordered: foremost-drawn object comes first, which means lowermost object IN THIS LIST
+! are painted first, and any object that comes before it will paint over it. In other words, this list is
+! first reversed then being iterated.
+! Joints' original point is defined in the document sprite_joints.psd. It also has visual representations.
+# TODO right now accessory points are explicitly defined. Should they be injected in run-time?
+SKELETON_STAND=HEADGEAR 0,32;HAIR_FORE 0,32;\
+ ARM_REST_RIGHT -7,23;HAND_REST_RIGHT -6,11;HELD_ITEM -6,11;\
+ HAIR 0,32;HEAD 0,32;\
+ UPPER_TORSO 0,23;LOWER_TORSO 0,15;\
+ FOOT_RIGHT -2,2;LEG_REST_RIGHT -2,7;\
+ FOOT_LEFT 2,2;LEG_REST_LEFT 2,7;\
+ ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12;\
+ TAIL_0 0,13;TAIL_1 0,13
+
+# skeleton_stand is used for testing purpose
+ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND
+ANIM_RUN_1=TAIL_0 0,-999;LEG_REST_RIGHT 1,1;FOOT_RIGHT 1,1;LEG_REST_LEFT -1,0;FOOT_LEFT -1,0
+ANIM_RUN_2=TAIL_1 0,-999;ALL 0,1;LEG_REST_RIGHT 0,-1;FOOT_RIGHT 0,-1;LEG_REST_LEFT 0,1;FOOT_LEFT 0,1
+ANIM_RUN_3=TAIL_1 0,-999;LEG_REST_RIGHT -1,0;FOOT_RIGHT -1,0;LEG_REST_LEFT 1,1;FOOT_LEFT 1,1
+ANIM_RUN_4=TAIL_0 0,-999;ALL 0,1;LEG_REST_RIGHT 0,1;FOOT_RIGHT 0,1;LEG_REST_LEFT 0,-1;FOOT_LEFT 0,-1
+
+
+ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
+ANIM_IDLE_1=TAIL_1 0,-999
+ANIM_IDLE_2=TAIL_1 0,-999;\
+ UPPER_TORSO 0,-1;HEAD 0,-1;HAIR 0,-1;HELD_ITEM 0,-1;\
+ ARM_REST_LEFT 0,-1;ARM_REST_RIGHT 0,-1;HAND_REST_LEFT 0,-1;HAND_REST_RIGHT 0,-1;\
+ HAIR_FORE 0,-1;HEADGEAR 0,-1
diff --git a/assets/mods/basegame/sprites/furry_sprite_glow.properties b/assets/mods/basegame/sprites/furry_sprite_glow.properties
new file mode 100644
index 000000000..f9ab1565e
--- /dev/null
+++ b/assets/mods/basegame/sprites/furry_sprite_glow.properties
@@ -0,0 +1,40 @@
+# complete file name is: SPRITESHEET + bodypart name + EXTENSION
+SPRITESHEET=mods/basegame/sprites/test_furry/furbudglow_
+EXTENSION=.tga
+# defines frame size and origin point. Origin point is given as: (originx, size.y - 1)
+# ORIGINY is deduced from the sprite size as shown in above; you only need to set ORIGINX
+CONFIG=SIZE 48,56;ORIGINX 29
+
+# note to self: don't implement skeleton hierarchy: there's too many exceptions
+# besides, you have "ALL" key.
+
+! a skeleton also defines what body parts (images) be used.
+! you can also write multiline text using reverse solidus; this is a feature of .properties
+! skeleton joints are ordered: foremost-drawn object comes first, which means lowermost object IN THIS LIST
+! are painted first, and any object that comes before it will paint over it. In other words, this list is
+! first reversed then being iterated.
+! Joints' original point is defined in the document sprite_joints.psd. It also has visual representations.
+# TODO right now accessory points are explicitly defined. Should they be injected in run-time?
+SKELETON_STAND=HEADGEAR 0,32;HAIR_FORE 0,32;\
+ ARM_REST_RIGHT -7,23;HAND_REST_RIGHT -6,11;HELD_ITEM -6,11;\
+ HAIR 0,32;HEAD 0,32;\
+ UPPER_TORSO 0,23;LOWER_TORSO 0,15;\
+ FOOT_RIGHT -2,2;LEG_REST_RIGHT -2,7;\
+ FOOT_LEFT 2,2;LEG_REST_LEFT 2,7;\
+ ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12;\
+ TAIL_0 0,13;TAIL_1 0,13
+
+# skeleton_stand is used for testing purpose
+ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND
+ANIM_RUN_1=TAIL_0 0,-999;LEG_REST_RIGHT 1,1;FOOT_RIGHT 1,1;LEG_REST_LEFT -1,0;FOOT_LEFT -1,0
+ANIM_RUN_2=TAIL_1 0,-999;ALL 0,1;LEG_REST_RIGHT 0,-1;FOOT_RIGHT 0,-1;LEG_REST_LEFT 0,1;FOOT_LEFT 0,1
+ANIM_RUN_3=TAIL_1 0,-999;LEG_REST_RIGHT -1,0;FOOT_RIGHT -1,0;LEG_REST_LEFT 1,1;FOOT_LEFT 1,1
+ANIM_RUN_4=TAIL_0 0,-999;ALL 0,1;LEG_REST_RIGHT 0,1;FOOT_RIGHT 0,1;LEG_REST_LEFT 0,-1;FOOT_LEFT 0,-1
+
+
+ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND
+ANIM_IDLE_1=TAIL_1 0,-999
+ANIM_IDLE_2=TAIL_1 0,-999;\
+ UPPER_TORSO 0,-1;HEAD 0,-1;HAIR 0,-1;HELD_ITEM 0,-1;\
+ ARM_REST_LEFT 0,-1;ARM_REST_RIGHT 0,-1;HAND_REST_LEFT 0,-1;HAND_REST_RIGHT 0,-1;\
+ HAIR_FORE 0,-1;HEADGEAR 0,-1
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_left.tga b/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_left.tga
new file mode 100644
index 000000000..a21d4d26e
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_left.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7d6ff8809bcc5cceba636f42fa96016deddaf9c5e77ef63a98fa1f47a1f46c1
+size 520
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_right.tga b/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_right.tga
new file mode 100644
index 000000000..8d0e91e95
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_arm_rest_right.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8500b731ddf54195e9fa696c0ba352ff2d36beea34ec7a818d30d58dc3731c4
+size 520
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_foot_left.tga b/assets/mods/basegame/sprites/test_furry/furbud_foot_left.tga
new file mode 100644
index 000000000..9380fe0ef
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_foot_left.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:720d091d3548bab6436af5e7f38b8935300b768827925116c272e86c70c8d1cf
+size 284
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_foot_right.tga b/assets/mods/basegame/sprites/test_furry/furbud_foot_right.tga
new file mode 100644
index 000000000..fc259f7d9
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_foot_right.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b83a3f8f493242dc7da8cbecefd3ad42844df6410df9109692d4c9dae8ef84fd
+size 264
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_left.tga b/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_left.tga
new file mode 100644
index 000000000..f90e68c61
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_left.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dbf22f005def83f8b99b18395b3d57872cc2c57a5e331d8c2e104904bb18572c
+size 184
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_right.tga b/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_right.tga
new file mode 100644
index 000000000..c99e0f17a
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_hand_rest_right.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c382065d1d0216710ccc2411d6da88fda1cb7e9f75ff983a8769a7b4db75a16c
+size 184
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_head.tga b/assets/mods/basegame/sprites/test_furry/furbud_head.tga
new file mode 100644
index 000000000..72fcd5bf0
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_head.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9e72cecb0db9c7563e02a5b8c7724f6161c02fc1b0f6a762ff56343b412de9f
+size 1808
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_left.tga b/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_left.tga
new file mode 100644
index 000000000..693104ec0
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_left.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c90bb75cbba7623ab22a4fb52f26cb7ccd87460a550bfd1ddf19e9f1c2a97ac2
+size 464
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_right.tga b/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_right.tga
new file mode 100644
index 000000000..20e9e68ca
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_leg_rest_right.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc01345edfda7f1b247335692ce21ba284ce184214cb7995422531edf7022dc4
+size 464
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_lower_torso.tga b/assets/mods/basegame/sprites/test_furry/furbud_lower_torso.tga
new file mode 100644
index 000000000..6a8c25efc
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_lower_torso.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a8855e0ba06026f255b7c40cc3a946a7b030659265ae81d7e90eaa691194ef8
+size 584
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_tail_0.tga b/assets/mods/basegame/sprites/test_furry/furbud_tail_0.tga
new file mode 100644
index 000000000..9f605fc57
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_tail_0.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8ea7543c2752dc91852afa8504a7ab04f911f7d27ad88ca53a4c431ec2d6873
+size 2528
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_tail_1.tga b/assets/mods/basegame/sprites/test_furry/furbud_tail_1.tga
new file mode 100644
index 000000000..c2aff40d7
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_tail_1.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:231398901ce7ca8b696cb379b8546521c0e58cbf9440f2899904d9871d09954e
+size 2712
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_tail_2.tga b/assets/mods/basegame/sprites/test_furry/furbud_tail_2.tga
new file mode 100644
index 000000000..bfbe502d1
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_tail_2.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82cf70e018c6d4a48f9c8e1e1d9dd7f0e36367bbf95c47bd3fd079a3c498e13e
+size 2288
diff --git a/assets/mods/basegame/sprites/test_furry/furbud_upper_torso.tga b/assets/mods/basegame/sprites/test_furry/furbud_upper_torso.tga
new file mode 100644
index 000000000..21f00d5f3
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbud_upper_torso.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af34e58bf26ab4a6ea24fa6818d4db29ece2f7d1aeb84a19ae44cfeb780696a8
+size 728
diff --git a/assets/mods/basegame/sprites/test_furry/furbudglow_head.tga b/assets/mods/basegame/sprites/test_furry/furbudglow_head.tga
new file mode 100644
index 000000000..43379cc93
--- /dev/null
+++ b/assets/mods/basegame/sprites/test_furry/furbudglow_head.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eebd10a3773883a0024654cd2e4d072b2a13a400059013b1b35a530a8ced0123
+size 191
diff --git a/assets/mods/basegame/sprites/test_sprite.properties b/assets/mods/basegame/sprites/test_sprite.properties
index b1380bc7c..fb409f728 100644
--- a/assets/mods/basegame/sprites/test_sprite.properties
+++ b/assets/mods/basegame/sprites/test_sprite.properties
@@ -2,6 +2,7 @@
SPRITESHEET=mods/basegame/sprites/sprite_assembler_test_assets/test_
EXTENSION=.tga
# defines frame size and origin point. Origin point is given as: (originx, size.y - 1)
+# ORIGINY is deduced from the sprite size as shown in above; you only need to set ORIGINX
CONFIG=SIZE 48,56;ORIGINX 29
# note to self: don't implement skeleton hierarchy: there's too many exceptions
@@ -13,14 +14,15 @@ CONFIG=SIZE 48,56;ORIGINX 29
! are painted first, and any object that comes before it will paint over it. In other words, this list is
! first reversed then being iterated.
! Joints' original point is defined in the document sprite_joints.psd. It also has visual representations.
-# TODO right now accessory points are explicitly defined. Should they be injected in run-time?
+# TODO right now accessory points are explicitly defined. Should they be injected in run-time? In that case, certain names (e.g. headgear, held_item) will act as an anchor.
SKELETON_STAND=HEADGEAR 0,32;HAIR_FORE 0,32;\
ARM_REST_RIGHT -7,23;HAND_REST_RIGHT -6,11;HELD_ITEM -6,11;\
HAIR 0,32;HEAD 0,32;\
UPPER_TORSO 0,23;LOWER_TORSO 0,15;\
FOOT_RIGHT -2,2;LEG_REST_RIGHT -2,7;\
FOOT_LEFT 2,2;LEG_REST_LEFT 2,7;\
- ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12
+ ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12;\
+ TAIL0 0,13
# skeleton_stand is used for testing purpose
ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND
diff --git a/src/net/torvald/spriteanimation/HasAssembledSprite.kt b/src/net/torvald/spriteanimation/HasAssembledSprite.kt
index febca283e..d7d3ccf32 100644
--- a/src/net/torvald/spriteanimation/HasAssembledSprite.kt
+++ b/src/net/torvald/spriteanimation/HasAssembledSprite.kt
@@ -11,12 +11,17 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
*/
interface HasAssembledSprite {
+ /** ADL path for main sprite. Necessary. */
var animDescPath: String
+ /** ADL path for glow sprite. Optional. */
+ var animDescPathGlow: String?
// FIXME sometimes the animmation is invisible (row and nFrames mismatch -- row is changed to 1 but it's drawing 3rd frame?)
- fun reassembleSprite(sprite: SpriteAnimation) {
+ fun reassembleSprite(sprite: SpriteAnimation, spriteGlow: SpriteAnimation? = null) {
_rebuild(ADProperties(Gdx.files.internal(animDescPath).read()), sprite)
+ if (spriteGlow != null)
+ _rebuild(ADProperties(Gdx.files.internal(animDescPathGlow).read()), spriteGlow)
}
/*fun rebuild(animDescPath: String, spriteAnimation: SpriteAnimation) {
diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt
index 6268d0df7..49e7cc330 100644
--- a/src/net/torvald/terrarum/ModMgr.kt
+++ b/src/net/torvald/terrarum/ModMgr.kt
@@ -4,9 +4,9 @@ import com.badlogic.gdx.Gdx
import com.badlogic.gdx.files.FileHandle
import net.torvald.terrarum.AppLoader.*
import net.torvald.terrarum.blockproperties.BlockCodex
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
-import net.torvald.terrarum.itemproperties.ItemID
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.utils.CSVFetcher
diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt
index e7eaa345c..683db6f44 100644
--- a/src/net/torvald/terrarum/TitleScreen.kt
+++ b/src/net/torvald/terrarum/TitleScreen.kt
@@ -145,7 +145,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
}
- cameraPlayer = object : HumanoidNPC(cameraAI, born = 0, usePhysics = false, forceAssignRefID = Terrarum.PLAYER_REF_ID) {
+ cameraPlayer = object : HumanoidNPC(cameraAI, born = 0, usePhysics = false) {
init {
setHitboxDimension(2, 2, 0, 0)
hitbox.setPosition(
diff --git a/src/net/torvald/terrarum/UIItemInventoryElem.kt b/src/net/torvald/terrarum/UIItemInventoryElem.kt
index 3919ecd6b..3ff2ba7c0 100644
--- a/src/net/torvald/terrarum/UIItemInventoryElem.kt
+++ b/src/net/torvald/terrarum/UIItemInventoryElem.kt
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull
diff --git a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt
index 5bdacd310..29019729d 100644
--- a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt
+++ b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull
diff --git a/src/net/torvald/terrarum/itemproperties/GameItem.kt b/src/net/torvald/terrarum/gameitem/GameItem.kt
similarity index 93%
rename from src/net/torvald/terrarum/itemproperties/GameItem.kt
rename to src/net/torvald/terrarum/gameitem/GameItem.kt
index c8d54f26d..53913c1bc 100644
--- a/src/net/torvald/terrarum/itemproperties/GameItem.kt
+++ b/src/net/torvald/terrarum/gameitem/GameItem.kt
@@ -1,10 +1,12 @@
-package net.torvald.terrarum.itemproperties
+package net.torvald.terrarum.gameitem
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.random.HQRNG
import net.torvald.terrarum.ItemValue
+import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC
+import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
@@ -12,15 +14,18 @@ import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
typealias ItemID = Int
/**
+ * Instances of the GameItem (e.g. net.torvald.terrarum.modulebasegame.gameitems.PickaxeCopper) are preferably referenced
+ * from the ```/items/itemid.csv``` file only, and not from the actual game code.
+ *
* Created by minjaesong on 2016-01-16.
*/
-abstract class GameItem : Comparable, Cloneable {
+abstract class GameItem(val originalID: ItemID) : Comparable, Cloneable {
- abstract var dynamicID: ItemID
+ open var dynamicID: ItemID = originalID
/**
* if the ID is a Actor range, it's an actor contained in a pocket.
*/
- abstract val originalID: ItemID // WUT?! using init does not work!!
+ //abstract val originalID: ItemID // WUT?! using init does not work!!
/**
@@ -268,6 +273,7 @@ abstract class GameItem : Comparable, Cloneable {
@JvmStatic val BLOCK = "block"
@JvmStatic val WALL = "wall"
@JvmStatic val WIRE = "wire"
+ @JvmStatic val FIXTURE = "fixture"
@JvmStatic val MISC = "misc"
}
@@ -281,7 +287,7 @@ abstract class GameItem : Comparable, Cloneable {
fun generateUniqueDynamicID(inventory: ActorInventory): GameItem {
- dynamicID = GameItem.generateUniqueDynamicID(inventory)
+ dynamicID = Companion.generateUniqueDynamicID(inventory)
ItemCodex.registerNewDynamicItem(dynamicID, this)
return this
}
diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt
index 4afcd320c..e69322cba 100644
--- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt
+++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt
@@ -5,6 +5,8 @@ import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.blockproperties.Fluid
+import net.torvald.terrarum.gameitem.GameItem
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem
@@ -174,9 +176,7 @@ object ItemCodex {
// test water bucket
- itemCodex[9000] = object : GameItem() {
- override var dynamicID: ItemID = 9000
- override val originalID: ItemID = 9000
+ itemCodex[9000] = object : GameItem(9000) {
override val isUnique: Boolean = true
override val originalName: String = "Infinite Water Bucket"
@@ -203,9 +203,7 @@ object ItemCodex {
// test lava bucket
- itemCodex[9001] = object : GameItem() {
- override var dynamicID: ItemID = 9001
- override val originalID: ItemID = 9001
+ itemCodex[9001] = object : GameItem(9001) {
override val isUnique: Boolean = true
override val originalName: String = "Infinite Lava Bucket"
diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt
index 5471a794c..b6f5abde1 100644
--- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt
+++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt
@@ -10,7 +10,7 @@ import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.BlockPropUtil
import net.torvald.terrarum.gameactors.*
-import net.torvald.terrarum.itemproperties.ItemID
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
import net.torvald.terrarum.modulebasegame.gameworld.WorldTime
diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt
index bc006f958..e878f1e8f 100644
--- a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt
+++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt
@@ -6,11 +6,11 @@ import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.ModuleEntryPoint
import net.torvald.terrarum.blockproperties.BlockCodex
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex
+import net.torvald.terrarum.modulebasegame.gameitems.BlockBase
import net.torvald.terrarum.modulebasegame.imagefont.WatchFont
-import net.torvald.terrarum.modulebasegame.items.BlockBase
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/**
@@ -56,9 +56,7 @@ class EntryPoint : ModuleEntryPoint() {
val blockProp = BlockCodex.getOrNull(i % ItemCodex.ITEM_WALLS.first)
if (blockProp != null) {
- ItemCodex.itemCodex[i] = object : GameItem() {
- override val originalID = i
- override var dynamicID = i
+ ItemCodex.itemCodex[i] = object : GameItem(i) {
override val isUnique: Boolean = false
override var baseMass: Double = blockProp.density / 1000.0
override var baseToolSize: Double? = null
diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt
index 33058a828..6ca824bb2 100644
--- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt
+++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt
@@ -15,7 +15,7 @@ import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gamecontroller.IngameController
import net.torvald.terrarum.gamecontroller.KeyToggler
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.console.AVTracker
import net.torvald.terrarum.modulebasegame.console.ActorsList
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt
index 1ebdc073e..d94557697 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt
@@ -7,8 +7,8 @@ import net.torvald.spriteanimation.HasAssembledSprite
import net.torvald.terrarum.*
import net.torvald.terrarum.gameactors.*
import net.torvald.terrarum.gameactors.faction.Faction
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameworld.GameWorld
-import net.torvald.terrarum.itemproperties.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.modulebasegame.Ingame
@@ -154,9 +154,7 @@ open class ActorHumanoid(
get() = if (Terrarum.ingame == null) false else this == Terrarum.ingame!!.actorNowPlaying
- @Transient private val nullItem = object : GameItem() {
- override var dynamicID: Int = 0
- override val originalID = dynamicID
+ @Transient private val nullItem = object : GameItem(0) {
override val isUnique: Boolean = false
override var baseMass: Double = 0.0
override var baseToolSize: Double? = null
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt
index 0b972159b..8accd1670 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt
@@ -5,11 +5,11 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.Actor
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_WALLS
-import net.torvald.terrarum.itemproperties.ItemID
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.lock
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt
index 510df1300..a430b8906 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt
@@ -1,6 +1,6 @@
package net.torvald.terrarum.modulebasegame.gameactors
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
/**
* Created by minjaesong on 2016-01-31.
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt
index 64e6bc6d1..d5a02b5d5 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt
@@ -3,7 +3,7 @@ package net.torvald.terrarum.modulebasegame.gameactors
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.gameactors.ActorWBMovable
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
/**
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt
index 836d3361c..162ca7679 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt
@@ -27,10 +27,11 @@ open class FixtureBase(val blockBox: BlockBox, val blockBoxProps: BlockBoxProps
/**
* Adds this instance of the fixture to the world
*
- * @param posX top-left position of the fixture, tile-wise
- * @param posY top-left position of the fixture, tile-wise
+ * @param posX tile-wise top-left position of the fixture
+ * @param posY tile-wise top-left position of the fixture
+ * @return true if successfully spawned, false if was not (e.g. occupied space)
*/
- open fun spawn(posX: Int, posY: Int) {
+ open fun spawn(posX: Int, posY: Int): Boolean {
// place filler blocks
// place the filler blocks where:
// origin posX: centre-left if mouseX is on the right-half of the game window,
@@ -52,6 +53,9 @@ open class FixtureBase(val blockBox: BlockBox, val blockBoxProps: BlockBoxProps
this.isVisible = true
this.hitbox.setFromWidthHeight(posX * TSIZE, posY * TSIZE, blockBox.width * TSIZE, blockBox.height * TSIZE)
+
+
+ return true // TODO for the tests' sake, just get fucking spawned
}
/**
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt
index e6d657f62..2fc412464 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt
@@ -4,7 +4,7 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AIControlled
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ai.ActorAI
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.modulebasegame.gameworld.time_t
@@ -16,8 +16,8 @@ import net.torvald.terrarum.modulebasegame.gameworld.time_t
open class HumanoidNPC(
override val ai: ActorAI, // it's there for written-in-Kotlin, "hard-wired" AIs
born: time_t,
- usePhysics: Boolean = true,
- forceAssignRefID: Int? = null
+ usePhysics: Boolean = true
+ //forceAssignRefID: Int? = null
) : ActorHumanoid(born, usePhysics = usePhysics), AIControlled, CanBeAnItem {
companion object {
@@ -29,9 +29,7 @@ open class HumanoidNPC(
}
// we're having GameItem data so that this class could be somewhat universal
- override var itemData: GameItem = object : GameItem() {
- override var dynamicID = referenceID ?: forceAssignRefID!!
- override val originalID = dynamicID
+ override var itemData: GameItem = object : GameItem(referenceID) {//GameItem(referenceID ?: forceAssignRefID!!) {
override val isUnique = true
override var baseMass: Double
get() = actorValue.getAsDouble(AVKey.BASEMASS)!!
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/IngamePlayer.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/IngamePlayer.kt
index afdbd546a..39b86ef3e 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/IngamePlayer.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/IngamePlayer.kt
@@ -11,7 +11,11 @@ import net.torvald.terrarum.modulebasegame.gameworld.time_t
* Created by minjaesong on 2015-12-31.
*/
-class IngamePlayer(override var animDescPath: String, born: time_t) : ActorHumanoid(born), HasAssembledSprite {
+class IngamePlayer(
+ override var animDescPath: String,
+ override var animDescPathGlow: String? = null,
+ born: time_t
+) : ActorHumanoid(born), HasAssembledSprite {
/**
* Creates new Player instance with empty elements (sprites, actorvalue, etc.).
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt
index 6774505bb..14951f437 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt
@@ -13,7 +13,7 @@ object PlayerBuilder {
operator fun invoke(): Actor {
val world = (Terrarum.ingame!! as Ingame).gameworld
- val p: Actor = IngamePlayer("lol", world.time.TIME_T)
+ val p: Actor = IngamePlayer("lol", "lol_glow", world.time.TIME_T)
InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json")
// attach sprite
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt
index a78d87c44..76bba53ca 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt
@@ -14,7 +14,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
object PlayerBuilderSigrid {
operator fun invoke(): IngamePlayer {
- val p = IngamePlayer("lol", - 9223372036854775807L) // XD
+ val p = IngamePlayer("lol", "lol_glow", - 9223372036854775807L) // XD
p.referenceID = 0x51621D // the only constant of this procedural universe
@@ -82,10 +82,13 @@ object PlayerBuilderSigrid {
}
}
+ // item ids are defined in /items/itemid.csv
+
inventory.add(8448) // copper pick
inventory.add(8449) // iron pick
inventory.add(8450) // steel pick
inventory.add(8466, 9995) // wire piece
+ inventory.add(8467, 9995) // test tiki torch
inventory.add(9000) // TEST water bucket
inventory.add(9001) // TEST lava bucket
}
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt
index 4aa64dd86..a3ecb717e 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt
@@ -4,14 +4,17 @@ import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
-import net.torvald.terrarum.worlddrawer.FeaturesDrawer
/**
* Created by minjaesong on 2017-02-10.
*/
object PlayerBuilderTestSubject1 {
operator fun invoke(): IngamePlayer {
- val p: IngamePlayer = IngamePlayer(ModMgr.getPath("basegame", "sprites/test_sprite.properties"), -589141658L) // random value thrown
+ val p: IngamePlayer = IngamePlayer(
+ ModMgr.getPath("basegame", "sprites/furry_sprite.properties"),
+ ModMgr.getPath("basegame", "sprites/furry_sprite_glow.properties"),
+ -589141658L // random value thrown
+ )
InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json")
@@ -26,7 +29,8 @@ object PlayerBuilderTestSubject1 {
p.sprite!!.setRowsAndFrames(2, 4)*/
p.sprite = SpriteAnimation(p)
- p.reassembleSprite(p.sprite!!)
+ p.spriteGlow = SpriteAnimation(p)
+ p.reassembleSprite(p.sprite!!, p.spriteGlow)
p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT) ?: ActorHumanoid.BASE_HEIGHT, 21, 0)
p.setPosition(3.0 * CreateTileAtlas.TILE_SIZE, 3.0 * CreateTileAtlas.TILE_SIZE)
@@ -34,10 +38,10 @@ object PlayerBuilderTestSubject1 {
PlayerBuilderSigrid.fillTestInventory(p.inventory)
- p.actorValue[AVKey.LUMR] = 0.84
- p.actorValue[AVKey.LUMG] = 0.93
- p.actorValue[AVKey.LUMB] = 1.37
- p.actorValue[AVKey.LUMA] = 1.93
+ //p.actorValue[AVKey.LUMR] = 0.84
+ //p.actorValue[AVKey.LUMG] = 0.93
+ //p.actorValue[AVKey.LUMB] = 1.37
+ //p.actorValue[AVKey.LUMA] = 1.93
return p
}
diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt
index 99c052c93..99e0c5168 100644
--- a/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt
@@ -1,9 +1,9 @@
package net.torvald.terrarum.modulebasegame.gameactors
import net.torvald.terrarum.AppLoader
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
-import net.torvald.terrarum.itemproperties.ItemID
+import net.torvald.terrarum.gameitem.ItemID
/**
* Created by minjaesong on 2016-01-15.
diff --git a/src/net/torvald/terrarum/modulebasegame/items/BlockBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt
similarity index 97%
rename from src/net/torvald/terrarum/modulebasegame/items/BlockBase.kt
rename to src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt
index 1831698e4..5b8077755 100644
--- a/src/net/torvald/terrarum/modulebasegame/items/BlockBase.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt
@@ -1,11 +1,11 @@
-package net.torvald.terrarum.modulebasegame.items
+package net.torvald.terrarum.modulebasegame.gameitems
import net.torvald.terrarum.Point2d
import net.torvald.terrarum.Point2i
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.ActorWBMovable
import net.torvald.terrarum.gameworld.GameWorld
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.IngameRenderer
diff --git a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt
similarity index 89%
rename from src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt
rename to src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt
index 019010b13..df5b76b87 100644
--- a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt
@@ -1,4 +1,4 @@
-package net.torvald.terrarum.modulebasegame.items
+package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.AppLoader
@@ -7,13 +7,13 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ActorWBMovable
+import net.torvald.terrarum.gameitem.GameItem
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.Calculate
-import net.torvald.terrarum.itemproperties.GameItem
-import net.torvald.terrarum.itemproperties.ItemID
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.modulebasegame.Ingame
-import net.torvald.terrarum.modulebasegame.items.PickaxeCore.BASE_MASS_AND_SIZE
-import net.torvald.terrarum.modulebasegame.items.PickaxeCore.TOOL_DURABILITY_BASE
+import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE
+import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import kotlin.math.roundToInt
@@ -74,9 +74,8 @@ object PickaxeCore {
/**
* Created by minjaesong on 2017-07-17.
*/
-class PickaxeCopper(override val originalID: ItemID) : GameItem() {
+class PickaxeCopper(originalID: ItemID) : GameItem(originalID) {
- override var dynamicID: ItemID = originalID
override val originalName = "PACKAGED_PICK"
override var baseToolSize: Double? = BASE_MASS_AND_SIZE
override var stackable = true
@@ -102,9 +101,8 @@ class PickaxeCopper(override val originalID: ItemID) : GameItem() {
/**
* Created by minjaesong on 2019-03-10.
*/
-class PickaxeIron(override val originalID: ItemID) : GameItem() {
+class PickaxeIron(originalID: ItemID) : GameItem(originalID) {
- override var dynamicID: ItemID = originalID
override val originalName = "PACKAGED_PICK"
override var baseToolSize: Double? = BASE_MASS_AND_SIZE
override var stackable = true
@@ -130,9 +128,8 @@ class PickaxeIron(override val originalID: ItemID) : GameItem() {
/**
* Created by minjaesong on 2019-03-10.
*/
-class PickaxeSteel(override val originalID: ItemID) : GameItem() {
+class PickaxeSteel(originalID: ItemID) : GameItem(originalID) {
- override var dynamicID: ItemID = originalID
override val originalName = "PACKAGED_PICK"
override var baseToolSize: Double? = BASE_MASS_AND_SIZE
override var stackable = true
diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/TikiTorchTester.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/TikiTorchTester.kt
new file mode 100644
index 000000000..c2c52fc65
--- /dev/null
+++ b/src/net/torvald/terrarum/modulebasegame/gameitems/TikiTorchTester.kt
@@ -0,0 +1,34 @@
+package net.torvald.terrarum.modulebasegame.gameitems
+
+import com.badlogic.gdx.graphics.g2d.TextureRegion
+import net.torvald.terrarum.AppLoader
+import net.torvald.terrarum.Terrarum
+import net.torvald.terrarum.gameitem.GameItem
+import net.torvald.terrarum.gameitem.ItemID
+import net.torvald.terrarum.itemproperties.Material
+import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch
+
+/**
+ * Created by minjaesong on 2019-05-16.
+ */
+class TikiTorchTester(originalID: ItemID) : GameItem(originalID) {
+
+ override var dynamicID: ItemID = originalID
+ override val originalName = "Tiki Torch"
+ override var baseMass = 1.0
+ override var stackable = true
+ override var inventoryCategory = Category.FIXTURE
+ override val isUnique = false
+ override val isDynamic = false
+ override val material = Material()
+ override val itemImage: TextureRegion?
+ get() = AppLoader.resourcePool.getAsTextureRegion("itemplaceholder_48")
+ override var baseToolSize: Double? = baseMass
+
+ override fun startPrimaryUse(delta: Float): Boolean {
+ val torch = FixtureTikiTorch()
+
+ return torch.spawn(Terrarum.mouseTileX, Terrarum.mouseTileY - torch.blockBox.height + 1)
+ // return true when placed, false when cannot be placed
+ }
+}
\ No newline at end of file
diff --git a/src/net/torvald/terrarum/modulebasegame/items/WeaponMeleeCore.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/WeaponMeleeCore.kt
similarity index 81%
rename from src/net/torvald/terrarum/modulebasegame/items/WeaponMeleeCore.kt
rename to src/net/torvald/terrarum/modulebasegame/gameitems/WeaponMeleeCore.kt
index 260cd4ddc..abef264dd 100644
--- a/src/net/torvald/terrarum/modulebasegame/items/WeaponMeleeCore.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameitems/WeaponMeleeCore.kt
@@ -1,8 +1,9 @@
-package net.torvald.terrarum.modulebasegame.items
+package net.torvald.terrarum.modulebasegame.gameitems
import net.torvald.random.Fudge3
import net.torvald.random.HQRNG
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import kotlin.math.pow
@@ -24,6 +25,6 @@ object WeaponMeleeCore {
}
-abstract class WeaponMeleeBase : GameItem() {
+abstract class WeaponMeleeBase(originalID: ItemID) : GameItem(originalID) {
abstract val velocityMod: Double
}
\ No newline at end of file
diff --git a/src/net/torvald/terrarum/modulebasegame/items/WirePieceSignalWire.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/WirePieceSignalWire.kt
similarity index 72%
rename from src/net/torvald/terrarum/modulebasegame/items/WirePieceSignalWire.kt
rename to src/net/torvald/terrarum/modulebasegame/gameitems/WirePieceSignalWire.kt
index 228777759..59a107aaf 100644
--- a/src/net/torvald/terrarum/modulebasegame/items/WirePieceSignalWire.kt
+++ b/src/net/torvald/terrarum/modulebasegame/gameitems/WirePieceSignalWire.kt
@@ -1,17 +1,16 @@
-package net.torvald.terrarum.modulebasegame.items
+package net.torvald.terrarum.modulebasegame.gameitems
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.blockproperties.Wire
-import net.torvald.terrarum.itemproperties.GameItem
-import net.torvald.terrarum.itemproperties.ItemID
+import net.torvald.terrarum.gameitem.GameItem
+import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.Material
-import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/**
* Created by minjaesong on 2019-03-10.
*/
-class WirePieceSignalWire(override val originalID: ItemID) : GameItem() {
+class WirePieceSignalWire(originalID: ItemID) : GameItem(originalID) {
override var dynamicID: ItemID = originalID
override val originalName = "ITEM_WIRE"
@@ -23,7 +22,7 @@ class WirePieceSignalWire(override val originalID: ItemID) : GameItem() {
override val isDynamic = false
override val material = Material()
override val itemImage: TextureRegion?
- get() = (AppLoader.resourcePool["basegame.items16"] as TextureRegionPack).get(1,9)
+ get() = AppLoader.resourcePool.getAsTextureRegionPack("basegame.items16").get(1,9)
init {
super.equipPosition = GameItem.EquipPosition.HAND_GRIP
diff --git a/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt
index 16c700daf..755a52c50 100644
--- a/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt
+++ b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt
@@ -1,6 +1,6 @@
package net.torvald.terrarum.modulebasegame.ui
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
diff --git a/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageFactory.kt b/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageFactory.kt
index 161cd5f45..e8acae85e 100644
--- a/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageFactory.kt
+++ b/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageFactory.kt
@@ -4,7 +4,7 @@ import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.toInt
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt
index d74f7b262..301d55ae3 100644
--- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt
+++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt
@@ -6,7 +6,7 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.GdxColorMap
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.ui.UIItem
import kotlin.math.roundToInt
diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt
index 51486d142..0252e5b69 100644
--- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt
+++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.*
import net.torvald.terrarum.gameworld.fmod
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt
index 319d3f53c..1cd63660f 100644
--- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt
+++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.*
import net.torvald.terrarum.gameactors.ActorWBMovable
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK
diff --git a/src/net/torvald/terrarum/serialise/SavegameWriter.kt b/src/net/torvald/terrarum/serialise/SavegameWriter.kt
index 49bf64fb6..8f91e1422 100644
--- a/src/net/torvald/terrarum/serialise/SavegameWriter.kt
+++ b/src/net/torvald/terrarum/serialise/SavegameWriter.kt
@@ -5,7 +5,7 @@ import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.Actor
-import net.torvald.terrarum.itemproperties.GameItem
+import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.*
import net.torvald.terrarum.roundInt
diff --git a/work_files/graphics/fonts/tibetan_variable.psd b/work_files/graphics/fonts/tibetan_variable.psd
new file mode 100644
index 000000000..29365229e
--- /dev/null
+++ b/work_files/graphics/fonts/tibetan_variable.psd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cd7650d1432e3d5ddbd2c07308f0af9e9ddd21a0f0058e8bc735a410839928b
+size 284466
diff --git a/work_files/graphics/sprites/fanu_jointed.psd b/work_files/graphics/sprites/fanu_jointed.psd
new file mode 100644
index 000000000..71c732bc8
--- /dev/null
+++ b/work_files/graphics/sprites/fanu_jointed.psd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d28a1dda7ceb41863a5ff7f2863bcc061176e9b19049754401da9c66a15e2e36
+size 64769
diff --git a/work_files/graphics/sprites/fanu_jointed.tga b/work_files/graphics/sprites/fanu_jointed.tga
new file mode 100644
index 000000000..a089dc19f
--- /dev/null
+++ b/work_files/graphics/sprites/fanu_jointed.tga
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db332e19fc0512381a726599f451f6735ad57be60b33183b7f9c4857b5f5122c
+size 7097
diff --git a/work_files/graphics/terrain/terrain_mask_type03.psd b/work_files/graphics/terrain/terrain_mask_type03.psd
index 6f32877f1..b05250304 100644
--- a/work_files/graphics/terrain/terrain_mask_type03.psd
+++ b/work_files/graphics/terrain/terrain_mask_type03.psd
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d11db25c28576a8cac990edc37a1abadb754713fa7c9ceccbc9d5063491476c1
-size 183946
+oid sha256:449b910d982979ce3cd9663ad301306e85fbec3283911f8a9d6ff1f186e9df1a
+size 354192