diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_left.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_left.tga new file mode 100644 index 000000000..57a9e346c --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_left.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4472eb3c1b0ced31fe0c3e8adfa500aa3ff5cf21d872d3a850314891c15644a6 +size 520 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_right.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_right.tga new file mode 100644 index 000000000..815409f54 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_arm_rest_right.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ee1f5a679dfc1163776e9bc016a7bde67542985077c53dbf6ffe4bb1ec6dad4 +size 520 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_left.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_left.tga new file mode 100644 index 000000000..0d91f5098 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_left.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4de3c1282430e178f2c5ca22ab4098aa21428b3e00da9fec9846d2408511e0c5 +size 224 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_right.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_right.tga new file mode 100644 index 000000000..0d91f5098 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_foot_right.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4de3c1282430e178f2c5ca22ab4098aa21428b3e00da9fec9846d2408511e0c5 +size 224 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair.tga new file mode 100644 index 000000000..430607a8e --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2866a4aeea9ad50e9995654b103ef7f9e8d7cd3a1cb96516a1ec8818a9f1305a +size 4144 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair_fore.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair_fore.tga new file mode 100644 index 000000000..c458abf47 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hair_fore.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a17bf508a2c34733a4ff0cceb100aa1f2c120034db4f8e20908939ac3c7cfcf0 +size 4144 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_left.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_left.tga new file mode 100644 index 000000000..9f8737292 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_left.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:137ed3e7c15731f08ebcff5fc5d25870ddf9fc6cfa45987a424875d13b785a1f +size 240 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_right.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_right.tga new file mode 100644 index 000000000..9f8737292 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_hand_rest_right.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:137ed3e7c15731f08ebcff5fc5d25870ddf9fc6cfa45987a424875d13b785a1f +size 240 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_head.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_head.tga new file mode 100644 index 000000000..a87b09fac --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_head.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249784f9081460f3afb3d688bb27f229f6a96774cec02e18347e22d87dce9237 +size 1064 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_left.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_left.tga new file mode 100644 index 000000000..055e73910 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_left.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a72686f9e9ca8aea11d29a591785d7d0d2106c426a85c31225c575b0bd87a026 +size 464 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_right.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_right.tga new file mode 100644 index 000000000..055e73910 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_leg_rest_right.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a72686f9e9ca8aea11d29a591785d7d0d2106c426a85c31225c575b0bd87a026 +size 464 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_lower_torso.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_lower_torso.tga new file mode 100644 index 000000000..b547539d6 --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_lower_torso.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c2dd6de175ea831902ac88674d4a94019c6fd758ed1db3227d2bdecc7e03a0 +size 584 diff --git a/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_upper_torso.tga b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_upper_torso.tga new file mode 100644 index 000000000..0526cca5d --- /dev/null +++ b/assets/mods/basegame/sprites/sprite_assembler_test_assets/test_upper_torso.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f18c2f4e5441d7a6fc4ee3cc60c3255055a0e91742c64ceaf459b583dae08b13 +size 728 diff --git a/src/net/torvald/spriteassembler/ADPropertyObject.kt b/src/net/torvald/spriteassembler/ADProperties.kt similarity index 98% rename from src/net/torvald/spriteassembler/ADPropertyObject.kt rename to src/net/torvald/spriteassembler/ADProperties.kt index e461b37e4..451c5174f 100644 --- a/src/net/torvald/spriteassembler/ADPropertyObject.kt +++ b/src/net/torvald/spriteassembler/ADProperties.kt @@ -101,7 +101,7 @@ class ADPropertyObject(propertyRaw: String) { /** example valid input: ```LEG_RIGHT 0,1``` */ fun isADvariable(property: String) = variableInputSepRegex.containsMatchIn(property) - /** example valid input: ```sprites/test.tga``` */ + /** example valid input: ```sprites/test``` */ fun isADstring(property: String) = !isADvariable(property) } diff --git a/src/net/torvald/spriteassembler/ANIMATION_DESCRIPTION_LANGUAGE.md b/src/net/torvald/spriteassembler/ANIMATION_DESCRIPTION_LANGUAGE.md index 4087fc745..e557012cb 100644 --- a/src/net/torvald/spriteassembler/ANIMATION_DESCRIPTION_LANGUAGE.md +++ b/src/net/torvald/spriteassembler/ANIMATION_DESCRIPTION_LANGUAGE.md @@ -74,7 +74,7 @@ If a field is recognised as an animation (in this case ANIM_RUN), the assembler ### Naming convention of files -If the animation specifies a "body part" (in this example LEG_LEFT and LEG_RIGHT), the assembler will look for a file ```sprites/test_leg_left.tga.gz``` and ```sprites/test_leg_right.tga.gz``` respectively. +If the animation specifies a "body part" (in this example LEG_LEFT and LEG_RIGHT), the assembler will look for a file ```sprites/test_leg_left.tga.gz``` and ```sprites/test_leg_right.tga.gz``` respectively. Filenames are advised to be kept all lowercase. #### Reserved keywords diff --git a/src/net/torvald/spriteassembler/SpriteAssemblerApp.java b/src/net/torvald/spriteassembler/SpriteAssemblerApp.java index 0922ae526..9ea1eb7e9 100644 --- a/src/net/torvald/spriteassembler/SpriteAssemblerApp.java +++ b/src/net/torvald/spriteassembler/SpriteAssemblerApp.java @@ -3,6 +3,8 @@ package net.torvald.spriteassembler; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; @@ -18,6 +20,8 @@ public class SpriteAssemblerApp extends JFrame { private JTextPane panelCode = new JTextPane(); private JTextArea statBar = new JTextArea("Null."); + + public SpriteAssemblerApp() { JSplitPane panelDataView = new JSplitPane(JSplitPane.VERTICAL_SPLIT, new JScrollPane(panelProperties), new JScrollPane(panelBodypartsList)); @@ -26,6 +30,12 @@ public class SpriteAssemblerApp extends JFrame { JMenuBar menu = new JMenuBar(); menu.add(new JMenu("File")); + menu.add(new JMenu("Parse")).addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + System.out.println("Hello"); + } + }); menu.add(new JMenu("Run")); this.setLayout(new BorderLayout()); diff --git a/src/net/torvald/spriteassembler/test_sprite.properties b/src/net/torvald/spriteassembler/test_sprite.properties new file mode 100644 index 000000000..e546a55e1 --- /dev/null +++ b/src/net/torvald/spriteassembler/test_sprite.properties @@ -0,0 +1,32 @@ +SPRITESHEET=mods/basegame/sprites/sprite_assembler_test_assets/test_ +EXTENSION=.tga + +# 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_RIGHT -2,7;\ + FOOT_LEFT 2,2;LEG_LEFT 2,7;\ + ARM_REST_LEFT 5,24;HAND_REST_LEFT 6,12 + +# skeleton_stand is used for testing purpose +ANIM_RUN=DELAY 0.15;ROW 2;SKELETON SKELETON_STAND +ANIM_RUN_1=LEG_RIGHT 1,-1;LEG_LEFT -1,0 +ANIM_RUN_2=ALL 0,-1;LEG_RIGHT 0,1;LEG_LEFT 0,-1 +ANIM_RUN_3=LEG_RIGHT -1,0;LEG_LEFT 1,-1 +ANIM_RUN_4=ALL 0,-1;LEG_RIGHT 0,-1;LEG_LEFT 0,1 + +ANIM_IDLE=DELAY 2;ROW 1;SKELETON SKELETON_STAND +ANIM_IDLE_1= +! ANIM_IDLE_1 will not make any transformation +ANIM_IDLE_2=UPPER_TORSO 0,-1 diff --git a/src/net/torvald/terrarum/tests/ADLParsingTest.kt b/src/net/torvald/terrarum/tests/ADLParsingTest.kt index e681037fe..44d286315 100644 --- a/src/net/torvald/terrarum/tests/ADLParsingTest.kt +++ b/src/net/torvald/terrarum/tests/ADLParsingTest.kt @@ -9,8 +9,8 @@ import java.io.StringReader class ADLParsingTest { val TEST_STR = """ - SPRITESHEET=sprites/test - EXTENSION=.tga.gz + SPRITESHEET=mods/basegame/sprites/sprite_assembler_test_assets/test_ + EXTENSION=.tga # note to self: don't implement skeleton hierarchy: there's too many exceptions # besides, you have "ALL" key.