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