diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-12 08:40:08 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-11-12 09:57:16 +0100 |
commit | a6af5d7b0cdb037bf8d0fd99aedfedc9789fd74c (patch) | |
tree | 6664758f61d0bee67ba64f231a6ec2e6b4dd72ac | |
parent | 7434d29f3ce0033194b53b44ed881f749e67da75 (diff) |
add offset to anim_group rotations
-rw-r--r-- | anim-crop-tool/atlas.cpp | 19 | ||||
-rw-r--r-- | anim-crop-tool/atlas.hpp | 4 | ||||
-rw-r--r-- | anim-crop-tool/main.cpp | 13 | ||||
-rw-r--r-- | anim/door_close.json | 12 | ||||
-rw-r--r-- | anim/npc_walk.json | 3968 | ||||
-rw-r--r-- | doc/atlas.json.example | 16 | ||||
-rw-r--r-- | loader/impl.hpp | 4 | ||||
-rw-r--r-- | loader/json.cpp | 4 | ||||
-rw-r--r-- | serialize/anim.cpp | 12 | ||||
-rw-r--r-- | serialize/anim.hpp | 56 | ||||
-rw-r--r-- | src/anim-atlas.cpp | 24 | ||||
-rw-r--r-- | src/anim-atlas.hpp | 15 | ||||
-rw-r--r-- | src/anim.cpp | 0 | ||||
-rw-r--r-- | src/anim.hpp | 41 |
14 files changed, 2103 insertions, 2085 deletions
diff --git a/anim-crop-tool/atlas.cpp b/anim-crop-tool/atlas.cpp index 90dda284..392f90fc 100644 --- a/anim-crop-tool/atlas.cpp +++ b/anim-crop-tool/atlas.cpp @@ -1,15 +1,16 @@ #include "atlas.hpp" -#include "serialize/anim.hpp" +#include "src/anim.hpp" #include <opencv2/imgcodecs.hpp> #include "compat/assert.hpp" // must go below opencv headers -using namespace floormat::Serialize; + +namespace floormat::Serialize { void anim_atlas_row::add_entry(const anim_atlas_entry& x) { auto& frame = *x.frame; const auto& mat = x.mat; - frame.offset = {xpos, ypos}; - frame.size = {(unsigned)mat.cols, (unsigned)mat.rows}; + frame.offset = { xpos, ypos }; + frame.size = { (unsigned)mat.cols, (unsigned)mat.rows }; fm_assert(mat.rows > 0 && mat.cols > 0); data.push_back(x); @@ -26,13 +27,13 @@ void anim_atlas::advance_row() fm_assert(row.max_height > 0); ypos += row.max_height; maxx = std::max(row.xpos, maxx); - rows.push_back({{}, 0, 0, ypos}); + rows.push_back({ {}, 0, 0, ypos }); } Magnum::Vector2ui anim_atlas::offset() const noexcept { const auto& row = rows.back(); - return {row.xpos, row.ypos}; + return { row.xpos, row.ypos }; } Magnum::Vector2ui anim_atlas::size() const noexcept @@ -40,7 +41,7 @@ Magnum::Vector2ui anim_atlas::size() const noexcept const anim_atlas_row& row = rows.back(); // prevent accidentally writing out of bounds by forgetting to call // anim_atlas::advance_row() one last time prior to anim_atlas::size() - return {std::max(maxx, row.xpos), ypos + row.max_height}; + return { std::max(maxx, row.xpos), ypos + row.max_height }; } bool anim_atlas::dump(StringView filename) const @@ -54,9 +55,11 @@ bool anim_atlas::dump(StringView filename) const { auto offset = x.frame->offset; auto size = x.frame->size; - cv::Rect roi = {(int)offset[0], (int)offset[1], (int)size[0], (int)size[1]}; + cv::Rect roi = { (int)offset[0], (int)offset[1], (int)size[0], (int)size[1] }; x.mat.copyTo(mat(roi)); } return cv::imwrite(filename.data(), mat); } + +} // namespace floormat::Serialize diff --git a/anim-crop-tool/atlas.hpp b/anim-crop-tool/atlas.hpp index 6b5f7b95..41e8ecca 100644 --- a/anim-crop-tool/atlas.hpp +++ b/anim-crop-tool/atlas.hpp @@ -5,9 +5,9 @@ #include <Magnum/Math/Vector2.h> #include <opencv2/core/mat.hpp> -namespace floormat::Serialize { +namespace floormat { struct anim_frame; } -struct anim_frame; +namespace floormat::Serialize { struct anim_atlas_entry { diff --git a/anim-crop-tool/main.cpp b/anim-crop-tool/main.cpp index 15335d84..0d20781c 100644 --- a/anim-crop-tool/main.cpp +++ b/anim-crop-tool/main.cpp @@ -1,7 +1,7 @@ #include "atlas.hpp" -#include "serialize/anim.hpp" #include "serialize/magnum-vector2i.hpp" #include "serialize/json-helper.hpp" +#include "serialize/anim.hpp" #include "compat/defs.hpp" #include "compat/sysexits.hpp" @@ -28,7 +28,6 @@ #include "compat/assert.hpp" using namespace floormat; -using namespace floormat::Serialize; using Corrade::Utility::Error; using Corrade::Utility::Debug; @@ -66,7 +65,7 @@ static std::tuple<cv::Vec2i, cv::Vec2i, bool> find_image_bounds(const cv::Mat4b& } [[nodiscard]] -static bool load_file(anim_group& group, options& opts, anim_atlas& atlas, StringView filename) +static bool load_file(anim_group& group, options& opts, Serialize::anim_atlas& atlas, StringView filename) { auto mat = fm_begin( cv::Mat mat = cv::imread(filename, cv::IMREAD_UNCHANGED); @@ -128,7 +127,7 @@ static bool load_file(anim_group& group, options& opts, anim_atlas& atlas, Strin } [[nodiscard]] -static bool load_directory(anim_group& group, options& opts, anim_atlas& atlas) +static bool load_directory(anim_group& group, options& opts, Serialize::anim_atlas& atlas) { const auto input_dir = Path::join(opts.input_dir, group.name); @@ -248,7 +247,7 @@ int main(int argc, char** argv) if (!opts_ok) return usage(args); - auto anim_info = json_helper::from_json<anim>(opts.input_file); + auto anim_info = json_helper::from_json<anim_def>(opts.input_file); if (!check_atlas_name(anim_info.object_name)) { @@ -274,7 +273,7 @@ int main(int argc, char** argv) return usage(args); } - anim_atlas atlas; + Serialize::anim_atlas atlas; for (anim_group& group : anim_info.groups) if (!load_directory(group, opts, atlas)) @@ -291,7 +290,7 @@ int main(int argc, char** argv) return EX_CANTCREAT; } anim_info.pixel_size = Vector2ui(atlas.size()); - json_helper::to_json<anim>(anim_info, Path::join(opts.output_dir, (base_name + ".json"))); + json_helper::to_json<anim_def>(anim_info, Path::join(opts.output_dir, (base_name + ".json"))); return 0; } diff --git a/anim/door_close.json b/anim/door_close.json index fdb7ee8e..de578210 100644 --- a/anim/door_close.json +++ b/anim/door_close.json @@ -282,7 +282,8 @@ }
],
"ground": "959 x 540",
- "name": "n"
+ "name": "n",
+ "offset": "0 x -32"
},
{
"frames": [
@@ -563,7 +564,8 @@ }
],
"ground": "959 x 540",
- "name": "e"
+ "name": "e",
+ "offset": "32 x 0"
},
{
"frames": [
@@ -844,7 +846,8 @@ }
],
"ground": "959 x 540",
- "name": "s"
+ "name": "s",
+ "offset": "0 x 32"
},
{
"frames": [
@@ -1125,7 +1128,8 @@ }
],
"ground": "959 x 540",
- "name": "w"
+ "name": "w",
+ "offset": "-32 x 0"
}
],
"height": 0,
diff --git a/anim/npc_walk.json b/anim/npc_walk.json index 94a55ce6..f3d0add1 100644 --- a/anim/npc_walk.json +++ b/anim/npc_walk.json @@ -1,1980 +1,1988 @@ -{ - "actionframe": 0, - "anim_name": "walk", - "fps": 24, - "groups": [ - { - "frames": [ - { - "ground": "12 x 82", - "offset": "0 x 0", - "size": "30 x 88" - }, - { - "ground": "13 x 82", - "offset": "30 x 0", - "size": "30 x 88" - }, - { - "ground": "13 x 82", - "offset": "60 x 0", - "size": "31 x 87" - }, - { - "ground": "13 x 82", - "offset": "91 x 0", - "size": "31 x 87" - }, - { - "ground": "13 x 82", - "offset": "122 x 0", - "size": "31 x 87" - }, - { - "ground": "13 x 82", - "offset": "153 x 0", - "size": "31 x 87" - }, - { - "ground": "12 x 83", - "offset": "184 x 0", - "size": "30 x 87" - }, - { - "ground": "12 x 83", - "offset": "214 x 0", - "size": "30 x 87" - }, - { - "ground": "11 x 83", - "offset": "244 x 0", - "size": "29 x 87" - }, - { - "ground": "11 x 83", - "offset": "273 x 0", - "size": "29 x 87" - }, - { - "ground": "10 x 83", - "offset": "302 x 0", - "size": "28 x 87" - }, - { - "ground": "10 x 83", - "offset": "330 x 0", - "size": "28 x 86" - }, - { - "ground": "9 x 83", - "offset": "358 x 0", - "size": "27 x 86" - }, - { - "ground": "9 x 83", - "offset": "385 x 0", - "size": "26 x 86" - }, - { - "ground": "9 x 83", - "offset": "411 x 0", - "size": "25 x 85" - }, - { - "ground": "8 x 83", - "offset": "436 x 0", - "size": "24 x 85" - }, - { - "ground": "8 x 83", - "offset": "460 x 0", - "size": "23 x 84" - }, - { - "ground": "8 x 83", - "offset": "483 x 0", - "size": "23 x 85" - }, - { - "ground": "9 x 82", - "offset": "506 x 0", - "size": "24 x 85" - }, - { - "ground": "10 x 82", - "offset": "530 x 0", - "size": "25 x 85" - }, - { - "ground": "11 x 82", - "offset": "555 x 0", - "size": "26 x 85" - }, - { - "ground": "12 x 82", - "offset": "581 x 0", - "size": "27 x 85" - }, - { - "ground": "12 x 82", - "offset": "608 x 0", - "size": "29 x 85" - }, - { - "ground": "13 x 82", - "offset": "637 x 0", - "size": "31 x 85" - }, - { - "ground": "13 x 82", - "offset": "668 x 0", - "size": "31 x 85" - }, - { - "ground": "13 x 82", - "offset": "699 x 0", - "size": "31 x 84" - }, - { - "ground": "13 x 82", - "offset": "730 x 0", - "size": "31 x 84" - }, - { - "ground": "13 x 82", - "offset": "761 x 0", - "size": "31 x 84" - }, - { - "ground": "13 x 82", - "offset": "792 x 0", - "size": "31 x 84" - }, - { - "ground": "13 x 82", - "offset": "823 x 0", - "size": "30 x 84" - }, - { - "ground": "13 x 82", - "offset": "853 x 0", - "size": "29 x 84" - }, - { - "ground": "13 x 82", - "offset": "882 x 0", - "size": "28 x 83" - }, - { - "ground": "13 x 82", - "offset": "910 x 0", - "size": "27 x 83" - }, - { - "ground": "12 x 82", - "offset": "937 x 0", - "size": "26 x 83" - }, - { - "ground": "12 x 82", - "offset": "963 x 0", - "size": "24 x 83" - }, - { - "ground": "12 x 82", - "offset": "987 x 0", - "size": "23 x 83" - }, - { - "ground": "11 x 82", - "offset": "1010 x 0", - "size": "23 x 84" - }, - { - "ground": "10 x 82", - "offset": "1033 x 0", - "size": "22 x 84" - }, - { - "ground": "9 x 82", - "offset": "1055 x 0", - "size": "22 x 85" - }, - { - "ground": "10 x 82", - "offset": "1077 x 0", - "size": "23 x 85" - }, - { - "ground": "10 x 82", - "offset": "1100 x 0", - "size": "24 x 85" - }, - { - "ground": "10 x 82", - "offset": "1124 x 0", - "size": "25 x 86" - }, - { - "ground": "11 x 82", - "offset": "1149 x 0", - "size": "26 x 86" - }, - { - "ground": "11 x 82", - "offset": "1175 x 0", - "size": "27 x 86" - }, - { - "ground": "11 x 82", - "offset": "1202 x 0", - "size": "27 x 87" - }, - { - "ground": "11 x 82", - "offset": "1229 x 0", - "size": "28 x 87" - }, - { - "ground": "12 x 82", - "offset": "1257 x 0", - "size": "29 x 88" - }, - { - "ground": "12 x 82", - "offset": "1286 x 0", - "size": "29 x 88" - } - ], - "ground": "479 x 494", - "name": "n" - }, - { - "frames": [ - { - "ground": "16 x 79", - "offset": "0 x 88", - "size": "38 x 82" - }, - { - "ground": "16 x 79", - "offset": "38 x 88", - "size": "38 x 82" - }, - { - "ground": "16 x 79", - "offset": "76 x 88", - "size": "38 x 82" - }, - { - "ground": "16 x 79", - "offset": "114 x 88", - "size": "38 x 82" - }, - { - "ground": "16 x 80", - "offset": "152 x 88", - "size": "37 x 82" - }, - { - "ground": "16 x 80", - "offset": "189 x 88", - "size": "36 x 82" - }, - { - "ground": "16 x 80", - "offset": "225 x 88", - "size": "35 x 82" - }, - { - "ground": "16 x 80", - "offset": "260 x 88", - "size": "33 x 82" - }, - { - "ground": "15 x 80", - "offset": "293 x 88", - "size": "31 x 82" - }, - { - "ground": "15 x 80", - "offset": "324 x 88", - "size": "30 x 83" - }, - { - "ground": "14 x 80", - "offset": "354 x 88", - "size": "28 x 83" - }, - { - "ground": "13 x 80", - "offset": "382 x 88", - "size": "27 x 83" - }, - { - "ground": "12 x 80", - "offset": "409 x 88", - "size": "26 x 83" - }, - { - "ground": "11 x 80", - "offset": "435 x 88", - "size": "25 x 83" - }, - { - "ground": "10 x 80", - "offset": "460 x 88", - "size": "24 x 83" - }, - { - "ground": "8 x 80", - "offset": "484 x 88", - "size": "22 x 83" - }, - { - "ground": "7 x 80", - "offset": "506 x 88", - "size": "21 x 83" - }, - { - "ground": "9 x 80", - "offset": "527 x 88", - "size": "22 x 83" - }, - { - "ground": "10 x 80", - "offset": "549 x 88", - "size": "24 x 82" - }, - { - "ground": "12 x 80", - "offset": "573 x 88", - "size": "26 x 82" - }, - { - "ground": "13 x 79", - "offset": "599 x 88", - "size": "29 x 82" - }, - { - "ground": "14 x 79", - "offset": "628 x 88", - "size": "32 x 82" - }, - { - "ground": "15 x 79", - "offset": "660 x 88", - "size": "35 x 82" - }, - { - "ground": "16 x 79", - "offset": "695 x 88", - "size": "37 x 82" - }, - { - "ground": "16 x 79", - "offset": "732 x 88", - "size": "38 x 81" - }, - { - "ground": "16 x 79", - "offset": "770 x 88", - "size": "38 x 81" - }, - { - "ground": "17 x 79", - "offset": "808 x 88", - "size": "38 x 81" - }, - { - "ground": "16 x 79", - "offset": "846 x 88", - "size": "38 x 81" - }, - { - "ground": "16 x 79", - "offset": "884 x 88", - "size": "37 x 81" - }, - { - "ground": "16 x 79", - "offset": "921 x 88", - "size": "36 x 81" - }, - { - "ground": "16 x 79", - "offset": "957 x 88", - "size": "35 x 81" - }, - { - "ground": "16 x 79", - "offset": "992 x 88", - "size": "33 x 81" - }, - { - "ground": "15 x 79", - "offset": "1025 x 88", - "size": "31 x 82" - }, - { - "ground": "15 x 79", - "offset": "1056 x 88", - "size": "29 x 82" - }, - { - "ground": "14 x 79", - "offset": "1085 x 88", - "size": "28 x 82" - }, - { - "ground": "13 x 79", - "offset": "1113 x 88", - "size": "27 x 82" - }, - { - "ground": "12 x 79", - "offset": "1140 x 88", - "size": "26 x 82" - }, - { - "ground": "11 x 79", - "offset": "1166 x 88", - "size": "25 x 82" - }, - { - "ground": "10 x 79", - "offset": "1191 x 88", - "size": "24 x 83" - }, - { - "ground": "8 x 79", - "offset": "1215 x 88", - "size": "22 x 83" - }, - { - "ground": "7 x 79", - "offset": "1237 x 88", - "size": "21 x 83" - }, - { - "ground": "9 x 79", - "offset": "1258 x 88", - "size": "23 x 83" - }, - { - "ground": "10 x 79", - "offset": "1281 x 88", - "size": "24 x 83" - }, - { - "ground": "12 x 79", - "offset": "1305 x 88", - "size": "26 x 83" - }, - { - "ground": "13 x 79", - "offset": "1331 x 88", - "size": "29 x 83" - }, - { - "ground": "14 x 79", - "offset": "1360 x 88", - "size": "32 x 83" - }, - { - "ground": "15 x 79", - "offset": "1392 x 88", - "size": "35 x 83" - }, - { - "ground": "16 x 79", - "offset": "1427 x 88", - "size": "37 x 83" - } - ], - "ground": "479 x 494", - "name": "ne" - }, - { - "frames": [ - { - "ground": "13 x 77", - "offset": "0 x 171", - "size": "31 x 82" - }, - { - "ground": "13 x 77", - "offset": "31 x 171", - "size": "31 x 82" - }, - { - "ground": "13 x 77", - "offset": "62 x 171", - "size": "31 x 82" - }, - { - "ground": "13 x 77", - "offset": "93 x 171", - "size": "31 x 82" - }, - { - "ground": "13 x 77", - "offset": "124 x 171", - "size": "31 x 82" - }, - { - "ground": "13 x 77", - "offset": "155 x 171", - "size": "30 x 82" - }, - { - "ground": "13 x 77", - "offset": "185 x 171", - "size": "29 x 82" - }, - { - "ground": "13 x 77", - "offset": "214 x 171", - "size": "28 x 81" - }, - { - "ground": "13 x 77", - "offset": "242 x 171", - "size": "27 x 81" - }, - { - "ground": "12 x 77", - "offset": "269 x 171", - "size": "26 x 81" - }, - { - "ground": "12 x 77", - "offset": "295 x 171", - "size": "24 x 81" - }, - { - "ground": "12 x 77", - "offset": "319 x 171", - "size": "23 x 80" - }, - { - "ground": "11 x 77", - "offset": "342 x 171", - "size": "23 x 80" - }, - { - "ground": "10 x 77", - "offset": "365 x 171", - "size": "22 x 80" - }, - { - "ground": "9 x 77", - "offset": "387 x 171", - "size": "21 x 79" - }, - { - "ground": "9 x 77", - "offset": "408 x 171", - "size": "21 x 80" - }, - { - "ground": "9 x 77", - "offset": "429 x 171", - "size": "22 x 80" - }, - { - "ground": "10 x 77", - "offset": "451 x 171", - "size": "23 x 81" - }, - { - "ground": "10 x 77", - "offset": "474 x 171", - "size": "24 x 82" - }, - { - "ground": "11 x 77", - "offset": "498 x 171", - "size": "25 x 82" - }, - { - "ground": "11 x 77", - "offset": "523 x 171", - "size": "26 x 83" - }, - { - "ground": "12 x 77", - "offset": "549 x 171", - "size": "27 x 84" - }, - { - "ground": "12 x 77", - "offset": "576 x 171", - "size": "28 x 84" - }, - { - "ground": "13 x 76", - "offset": "604 x 171", - "size": "29 x 84" - }, - { - "ground": "13 x 76", - "offset": "633 x 171", - "size": "30 x 84" - }, - { - "ground": "13 x 76", - "offset": "663 x 171", - "size": "30 x 84" - }, - { - "ground": "13 x 76", - "offset": "693 x 171", - "size": "30 x 84" - }, - { - "ground": "13 x 76", - "offset": "723 x 171", - "size": "30 x 84" - }, - { - "ground": "13 x 76", - "offset": "753 x 171", - "size": "30 x 84" - }, - { - "ground": "12 x 76", - "offset": "783 x 171", - "size": "30 x 84" - }, - { - "ground": "12 x 76", - "offset": "813 x 171", - "size": "30 x 83" - }, - { - "ground": "12 x 76", - "offset": "843 x 171", - "size": "30 x 83" - }, - { - "ground": "11 x 76", - "offset": "873 x 171", - "size": "29 x 83" - }, - { - "ground": "11 x 76", - "offset": "902 x 171", - "size": "29 x 82" - }, - { - "ground": "10 x 76", - "offset": "931 x 171", - "size": "28 x 82" - }, - { - "ground": "10 x 77", - "offset": "959 x 171", - "size": "28 x 82" - }, - { - "ground": "9 x 77", - "offset": "987 x 171", - "size": "27 x 82" - }, - { - "ground": "9 x 77", - "offset": "1014 x 171", - "size": "26 x 81" - }, - { - "ground": "9 x 77", - "offset": "1040 x 171", - "size": "25 x 81" - }, - { - "ground": "8 x 77", - "offset": "1065 x 171", - "size": "24 x 81" - }, - { - "ground": "8 x 77", - "offset": "1089 x 171", - "size": "23 x 80" - }, - { - "ground": "8 x 77", - "offset": "1112 x 171", - "size": "22 x 80" - }, - { - "ground": "9 x 77", - "offset": "1134 x 171", - "size": "24 x 79" - }, - { - "ground": "10 x 77", - "offset": "1158 x 171", - "size": "25 x 80" - }, - { - "ground": "11 x 77", - "offset": "1183 x 171", - "size": "26 x 81" - }, - { - "ground": "12 x 77", - "offset": "1209 x 171", - "size": "27 x 81" - }, - { - "ground": "12 x 77", - "offset": "1236 x 171", - "size": "29 x 82" - }, - { - "ground": "13 x 77", - "offset": "1265 x 171", - "size": "31 x 82" - } - ], - "ground": "479 x 494", - "name": "e" - }, - { - "frames": [ - { - "ground": "12 x 75", - "offset": "0 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "25 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "50 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "75 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "100 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "125 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "150 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "175 x 255", - "size": "25 x 83" - }, - { - "ground": "12 x 76", - "offset": "200 x 255", - "size": "25 x 83" - }, - { - "ground": "12 x 76", - "offset": "225 x 255", - "size": "25 x 82" - }, - { - "ground": "12 x 76", - "offset": "250 x 255", - "size": "25 x 82" - }, - { - "ground": "12 x 76", - "offset": "275 x 255", - "size": "25 x 81" - }, - { - "ground": "13 x 76", - "offset": "300 x 255", - "size": "25 x 81" - }, - { - "ground": "13 x 76", - "offset": "325 x 255", - "size": "25 x 81" - }, - { - "ground": "13 x 76", - "offset": "350 x 255", - "size": "25 x 80" - }, - { - "ground": "14 x 76", - "offset": "375 x 255", - "size": "26 x 80" - }, - { - "ground": "14 x 76", - "offset": "401 x 255", - "size": "26 x 79" - }, - { - "ground": "14 x 76", - "offset": "427 x 255", - "size": "26 x 79" - }, - { - "ground": "14 x 76", - "offset": "453 x 255", - "size": "26 x 81" - }, - { - "ground": "14 x 76", - "offset": "479 x 255", - "size": "26 x 82" - }, - { - "ground": "14 x 76", - "offset": "505 x 255", - "size": "26 x 83" - }, - { - "ground": "14 x 76", - "offset": "531 x 255", - "size": "26 x 84" - }, - { - "ground": "13 x 76", - "offset": "557 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 76", - "offset": "582 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 76", - "offset": "607 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "632 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "657 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "682 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "707 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "732 x 255", - "size": "25 x 84" - }, - { - "ground": "13 x 75", - "offset": "757 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 75", - "offset": "782 x 255", - "size": "25 x 83" - }, - { - "ground": "12 x 76", - "offset": "807 x 255", - "size": "25 x 83" - }, - { - "ground": "12 x 76", - "offset": "832 x 255", - "size": "25 x 82" - }, - { - "ground": "12 x 76", - "offset": "857 x 255", - "size": "25 x 82" - }, - { - "ground": "12 x 76", - "offset": "882 x 255", - "size": "26 x 81" - }, - { - "ground": "12 x 76", - "offset": "908 x 255", - "size": "26 x 81" - }, - { - "ground": "12 x 76", - "offset": "934 x 255", - "size": "26 x 81" - }, - { - "ground": "12 x 76", - "offset": "960 x 255", - "size": "26 x 80" - }, - { - "ground": "12 x 76", - "offset": "986 x 255", - "size": "26 x 80" - }, - { - "ground": "12 x 76", - "offset": "1012 x 255", - "size": "26 x 79" - }, - { - "ground": "12 x 76", - "offset": "1038 x 255", - "size": "26 x 79" - }, - { - "ground": "12 x 76", - "offset": "1064 x 255", - "size": "26 x 81" - }, - { - "ground": "12 x 76", - "offset": "1090 x 255", - "size": "26 x 82" - }, - { - "ground": "12 x 76", - "offset": "1116 x 255", - "size": "26 x 83" - }, - { - "ground": "12 x 76", - "offset": "1142 x 255", - "size": "26 x 84" - }, - { - "ground": "12 x 76", - "offset": "1168 x 255", - "size": "25 x 84" - }, - { - "ground": "12 x 76", - "offset": "1193 x 255", - "size": "25 x 84" - } - ], - "ground": "479 x 494", - "name": "se" - }, - { - "frames": [ - { - "ground": "17 x 76", - "offset": "0 x 339", - "size": "30 x 84" - }, - { - "ground": "17 x 76", - "offset": "30 x 339", - "size": "30 x 84" - }, - { - "ground": "17 x 76", - "offset": "60 x 339", - "size": "31 x 84" - }, - { - "ground": "18 x 76", - "offset": "91 x 339", - "size": "31 x 84" - }, - { - "ground": "18 x 76", - "offset": "122 x 339", - "size": "31 x 84" - }, - { - "ground": "18 x 76", - "offset": "153 x 339", - "size": "31 x 84" - }, - { - "ground": "18 x 76", - "offset": "184 x 339", - "size": "30 x 83" - }, - { - "ground": "18 x 76", - "offset": "214 x 339", - "size": "30 x 83" - }, - { - "ground": "18 x 76", - "offset": "244 x 339", - "size": "29 x 83" - }, - { - "ground": "18 x 76", - "offset": "273 x 339", - "size": "29 x 82" - }, - { - "ground": "18 x 77", - "offset": "302 x 339", - "size": "28 x 82" - }, - { - "ground": "17 x 77", - "offset": "330 x 339", - "size": "28 x 82" - }, - { - "ground": "17 x 77", - "offset": "358 x 339", - "size": "27 x 82" - }, - { - "ground": "16 x 77", - "offset": "385 x 339", - "size": "26 x 81" - }, - { - "ground": "16 x 77", - "offset": "411 x 339", - "size": "25 x 81" - }, - { - "ground": "15 x 77", - "offset": "436 x 339", - "size": "24 x 81" - }, - { - "ground": "14 x 77", - "offset": "460 x 339", - "size": "23 x 81" - }, - { - "ground": "14 x 77", - "offset": "483 x 339", - "size": "23 x 80" - }, - { - "ground": "14 x 77", - "offset": "506 x 339", - "size": "24 x 79" - }, - { - "ground": "15 x 77", - "offset": "530 x 339", - "size": "25 x 80" - }, - { - "ground": "15 x 77", - "offset": "555 x 339", - "size": "26 x 81" - }, - { - "ground": "15 x 77", - "offset": "581 x 339", - "size": "27 x 81" - }, - { - "ground": "16 x 77", - "offset": "608 x 339", - "size": "29 x 82" - }, - { - "ground": "17 x 77", - "offset": "637 x 339", - "size": "31 x 82" - }, - { - "ground": "18 x 77", - "offset": "668 x 339", - "size": "31 x 82" - }, - { - "ground": "18 x 77", - "offset": "699 x 339", - "size": "31 x 82" - }, - { - "ground": "18 x 77", - "offset": "730 x 339", - "size": "31 x 82" - }, - { - "ground": "18 x 77", - "offset": "761 x 339", - "size": "31 x 82" - }, - { - "ground": "17 x 77", - "offset": "792 x 339", - "size": "31 x 82" - }, - { - "ground": "17 x 77", - "offset": "823 x 339", - "size": "30 x 82" - }, - { - "ground": "16 x 77", - "offset": "853 x 339", - "size": "29 x 82" - }, - { - "ground": "15 x 77", - "offset": "882 x 339", - "size": "28 x 81" - }, - { - "ground": "14 x 77", - "offset": "910 x 339", - "size": "27 x 81" - }, - { - "ground": "13 x 77", - "offset": "937 x 339", - "size": "26 x 81" - }, - { - "ground": "12 x 77", - "offset": "963 x 339", - "size": "24 x 81" - }, - { - "ground": "11 x 77", - "offset": "987 x 339", - "size": "23 x 80" - }, - { - "ground": "11 x 78", - "offset": "1010 x 339", - "size": "23 x 80" - }, - { - "ground": "11 x 78", - "offset": "1033 x 339", - "size": "22 x 80" - }, - { - "ground": "12 x 78", - "offset": "1055 x 339", - "size": "22 x 80" - }, - { - "ground": "13 x 77", - "offset": "1077 x 339", - "size": "23 x 80" - }, - { - "ground": "14 x 77", - "offset": "1100 x 339", - "size": "24 x 80" - }, - { - "ground": "14 x 77", - "offset": "1124 x 339", - "size": "25 x 81" - }, - { - "ground": "15 x 77", - "offset": "1149 x 339", - "size": "26 x 82" - }, - { - "ground": "15 x 77", - "offset": "1175 x 339", - "size": "27 x 82" - }, - { - "ground": "16 x 77", - "offset": "1202 x 339", - "size": "27 x 83" - }, - { - "ground": "16 x 77", - "offset": "1229 x 339", - "size": "28 x 84" - }, - { - "ground": "17 x 77", - "offset": "1257 x 339", - "size": "29 x 84" - }, - { - "ground": "17 x 76", - "offset": "1286 x 339", - "size": "29 x 84" - } - ], - "ground": "479 x 494", - "name": "s" - }, - { - "frames": [ - { - "ground": "21 x 79", - "offset": "0 x 423", - "size": "38 x 81" - }, - { - "ground": "21 x 79", - "offset": "38 x 423", - "size": "38 x 81" - }, - { - "ground": "21 x 79", - "offset": "76 x 423", - "size": "38 x 81" - }, - { - "ground": "21 x 79", - "offset": "114 x 423", - "size": "38 x 81" - }, - { - "ground": "20 x 79", - "offset": "152 x 423", - "size": "37 x 81" - }, - { - "ground": "19 x 79", - "offset": "189 x 423", - "size": "36 x 81" - }, - { - "ground": "18 x 79", - "offset": "225 x 423", - "size": "35 x 82" - }, - { - "ground": "17 x 79", - "offset": "260 x 423", - "size": "33 x 82" - }, - { - "ground": "16 x 79", - "offset": "293 x 423", - "size": "31 x 82" - }, - { - "ground": "15 x 79", - "offset": "324 x 423", - "size": "30 x 82" - }, - { - "ground": "14 x 79", - "offset": "354 x 423", - "size": "29 x 82" - }, - { - "ground": "14 x 79", - "offset": "383 x 423", - "size": "27 x 82" - }, - { - "ground": "14 x 79", - "offset": "410 x 423", - "size": "26 x 82" - }, - { - "ground": "14 x 79", - "offset": "436 x 423", - "size": "25 x 83" - }, - { - "ground": "14 x 79", - "offset": "461 x 423", - "size": "24 x 83" - }, - { - "ground": "14 x 79", - "offset": "485 x 423", - "size": "22 x 83" - }, - { - "ground": "14 x 80", - "offset": "507 x 423", - "size": "21 x 83" - }, - { - "ground": "14 x 79", - "offset": "528 x 423", - "size": "23 x 83" - }, - { - "ground": "14 x 79", - "offset": "551 x 423", - "size": "24 x 83" - }, - { - "ground": "14 x 79", - "offset": "575 x 423", - "size": "26 x 83" - }, - { - "ground": "15 x 79", - "offset": "601 x 423", - "size": "29 x 83" - }, - { - "ground": "18 x 79", - "offset": "630 x 423", - "size": "32 x 83" - }, - { - "ground": "19 x 79", - "offset": "662 x 423", - "size": "35 x 83" - }, - { - "ground": "21 x 79", - "offset": "697 x 423", - "size": "37 x 82" - }, - { - "ground": "21 x 79", - "offset": "734 x 423", - "size": "38 x 83" - }, - { - "ground": "21 x 79", - "offset": "772 x 423", - "size": "38 x 82" - }, - { - "ground": "21 x 79", - "offset": "810 x 423", - "size": "38 x 82" - }, - { - "ground": "21 x 80", - "offset": "848 x 423", - "size": "38 x 82" - }, - { - "ground": "20 x 80", - "offset": "886 x 423", - "size": "37 x 82" - }, - { - "ground": "19 x 80", - "offset": "923 x 423", - "size": "36 x 82" - }, - { - "ground": "18 x 80", - "offset": "959 x 423", - "size": "35 x 83" - }, - { - "ground": "17 x 80", - "offset": "994 x 423", - "size": "33 x 83" - }, - { - "ground": "16 x 80", - "offset": "1027 x 423", - "size": "31 x 83" - }, - { - "ground": "14 x 80", - "offset": "1058 x 423", - "size": "29 x 83" - }, - { - "ground": "14 x 80", - "offset": "1087 x 423", - "size": "28 x 83" - }, - { - "ground": "14 x 80", - "offset": "1115 x 423", - "size": "27 x 83" - }, - { - "ground": "14 x 80", - "offset": "1142 x 423", - "size": "26 x 83" - }, - { - "ground": "14 x 80", - "offset": "1168 x 423", - "size": "25 x 83" - }, - { - "ground": "14 x 80", - "offset": "1193 x 423", - "size": "24 x 83" - }, - { - "ground": "14 x 80", - "offset": "1217 x 423", - "size": "22 x 83" - }, - { - "ground": "14 x 80", - "offset": "1239 x 423", - "size": "21 x 83" - }, - { - "ground": "14 x 80", - "offset": "1260 x 423", - "size": "23 x 83" - }, - { - "ground": "14 x 80", - "offset": "1283 x 423", - "size": "24 x 82" - }, - { - "ground": "14 x 80", - "offset": "1307 x 423", - "size": "26 x 82" - }, - { - "ground": "15 x 79", - "offset": "1333 x 423", - "size": "29 x 82" - }, - { - "ground": "18 x 79", - "offset": "1362 x 423", - "size": "32 x 82" - }, - { - "ground": "19 x 79", - "offset": "1394 x 423", - "size": "35 x 82" - }, - { - "ground": "21 x 79", - "offset": "1429 x 423", - "size": "37 x 82" - } - ], - "ground": "479 x 494", - "name": "sw" - }, - { - "frames": [ - { - "ground": "18 x 82", - "offset": "0 x 506", - "size": "31 x 85" - }, - { - "ground": "18 x 82", - "offset": "31 x 506", - "size": "31 x 84" - }, - { - "ground": "18 x 82", - "offset": "62 x 506", - "size": "31 x 84" - }, - { - "ground": "18 x 82", - "offset": "93 x 506", - "size": "31 x 84" - }, - { - "ground": "17 x 82", - "offset": "124 x 506", - "size": "31 x 84" - }, - { - "ground": "17 x 82", - "offset": "155 x 506", - "size": "30 x 84" - }, - { - "ground": "16 x 82", - "offset": "185 x 506", - "size": "29 x 84" - }, - { - "ground": "15 x 82", - "offset": "214 x 506", - "size": "28 x 83" - }, - { - "ground": "14 x 82", - "offset": "242 x 506", - "size": "27 x 83" - }, - { - "ground": "13 x 82", - "offset": "269 x 506", - "size": "26 x 83" - }, - { - "ground": "12 x 82", - "offset": "295 x 506", - "size": "24 x 83" - }, - { - "ground": "11 x 82", - "offset": "319 x 506", - "size": "23 x 83" - }, - { - "ground": "11 x 82", - "offset": "342 x 506", - "size": "23 x 84" - }, - { - "ground": "11 x 82", - "offset": "365 x 506", - "size": "22 x 84" - }, - { - "ground": "11 x 82", - "offset": "387 x 506", - "size": "21 x 85" - }, - { - "ground": "12 x 82", - "offset": "408 x 506", - "size": "21 x 85" - }, - { - "ground": "12 x 82", - "offset": "429 x 506", - "size": "22 x 85" - }, - { - "ground": "13 x 82", - "offset": "451 x 506", - "size": "23 x 86" - }, - { - "ground": "14 x 82", - "offset": "474 x 506", - "size": "24 x 86" - }, - { - "ground": "14 x 82", - "offset": "498 x 506", - "size": "25 x 86" - }, - { - "ground": "15 x 82", - "offset": "523 x 506", - "size": "26 x 87" - }, - { - "ground": "15 x 82", - "offset": "549 x 506", - "size": "27 x 87" - }, - { - "ground": "16 x 82", - "offset": "576 x 506", - "size": "28 x 87" - }, - { - "ground": "16 x 82", - "offset": "604 x 506", - "size": "29 x 88" - }, - { - "ground": "16 x 82", - "offset": "633 x 506", - "size": "30 x 88" - }, - { - "ground": "16 x 82", - "offset": "663 x 506", - "size": "30 x 88" - }, - { - "ground": "17 x 82", - "offset": "693 x 506", - "size": "30 x 88" - }, - { - "ground": "17 x 82", - "offset": "723 x 506", - "size": "30 x 88" - }, - { - "ground": "17 x 82", - "offset": "753 x 506", - "size": "30 x 87" - }, - { - "ground": "17 x 82", - "offset": "783 x 506", - "size": "30 x 87" - }, - { - "ground": "18 x 83", - "offset": "813 x 506", - "size": "30 x 87" - }, - { - "ground": "18 x 83", - "offset": "843 x 506", - "size": "30 x 87" - }, - { - "ground": "18 x 83", - "offset": "873 x 506", - "size": "29 x 87" - }, - { - "ground": "18 x 83", - "offset": "902 x 506", - "size": "29 x 87" - }, - { - "ground": "18 x 83", - "offset": "931 x 506", - "size": "28 x 87" - }, - { - "ground": "17 x 83", - "offset": "959 x 506", - "size": "28 x 86" - }, - { - "ground": "17 x 83", - "offset": "987 x 506", - "size": "27 x 86" - }, - { - "ground": "16 x 83", - "offset": "1014 x 506", - "size": "26 x 86" - }, - { - "ground": "16 x 83", - "offset": "1040 x 506", - "size": "25 x 85" - }, - { - "ground": "15 x 83", - "offset": "1065 x 506", - "size": "24 x 85" - }, - { - "ground": "14 x 83", - "offset": "1089 x 506", - "size": "23 x 85" - }, - { - "ground": "14 x 83", - "offset": "1112 x 506", - "size": "22 x 85" - }, - { - "ground": "14 x 82", - "offset": "1134 x 506", - "size": "24 x 85" - }, - { - "ground": "15 x 82", - "offset": "1158 x 506", - "size": "25 x 85" - }, - { - "ground": "15 x 82", - "offset": "1183 x 506", - "size": "26 x 85" - }, - { - "ground": "15 x 82", - "offset": "1209 x 506", - "size": "27 x 85" - }, - { - "ground": "16 x 82", - "offset": "1236 x 506", - "size": "29 x 85" - }, - { - "ground": "17 x 82", - "offset": "1265 x 506", - "size": "31 x 85" - } - ], - "ground": "479 x 494", - "name": "w" - }, - { - "frames": [ - { - "ground": "13 x 83", - "offset": "0 x 594", - "size": "25 x 89" - }, - { - "ground": "13 x 83", - "offset": "25 x 594", - "size": "25 x 88" - }, - { - "ground": "13 x 83", - "offset": "50 x 594", - "size": "25 x 88" - }, - { - "ground": "13 x 83", - "offset": "75 x 594", - "size": "25 x 88" - }, - { - "ground": "13 x 83", - "offset": "100 x 594", - "size": "25 x 88" - }, - { - "ground": "13 x 83", - "offset": "125 x 594", - "size": "25 x 88" - }, - { - "ground": "13 x 84", - "offset": "150 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 84", - "offset": "175 x 594", - "size": "25 x 87" - }, - { - "ground": "12 x 84", - "offset": "200 x 594", - "size": "25 x 87" - }, - { - "ground": "12 x 84", - "offset": "225 x 594", - "size": "25 x 87" - }, - { - "ground": "12 x 84", - "offset": "250 x 594", - "size": "25 x 86" - }, - { - "ground": "12 x 84", - "offset": "275 x 594", - "size": "25 x 86" - }, - { - "ground": "12 x 84", - "offset": "300 x 594", - "size": "25 x 85" - }, - { - "ground": "12 x 84", - "offset": "325 x 594", - "size": "25 x 85" - }, - { - "ground": "12 x 84", - "offset": "350 x 594", - "size": "26 x 86" - }, - { - "ground": "12 x 84", - "offset": "376 x 594", - "size": "26 x 86" - }, - { - "ground": "12 x 84", - "offset": "402 x 594", - "size": "26 x 87" - }, - { - "ground": "12 x 84", - "offset": "428 x 594", - "size": "26 x 87" - }, - { - "ground": "12 x 84", - "offset": "454 x 594", - "size": "26 x 88" - }, - { - "ground": "12 x 84", - "offset": "480 x 594", - "size": "26 x 88" - }, - { - "ground": "12 x 83", - "offset": "506 x 594", - "size": "26 x 89" - }, - { - "ground": "12 x 83", - "offset": "532 x 594", - "size": "25 x 89" - }, - { - "ground": "12 x 83", - "offset": "557 x 594", - "size": "25 x 89" - }, - { - "ground": "12 x 83", - "offset": "582 x 594", - "size": "25 x 89" - }, - { - "ground": "12 x 83", - "offset": "607 x 594", - "size": "25 x 89" - }, - { - "ground": "12 x 83", - "offset": "632 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 83", - "offset": "657 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 83", - "offset": "682 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 83", - "offset": "707 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 83", - "offset": "732 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 84", - "offset": "757 x 594", - "size": "25 x 88" - }, - { - "ground": "12 x 84", - "offset": "782 x 594", - "size": "25 x 87" - }, - { - "ground": "12 x 84", - "offset": "807 x 594", - "size": "25 x 87" - }, - { - "ground": "12 x 84", - "offset": "832 x 594", - "size": "25 x 87" - }, - { - "ground": "13 x 84", - "offset": "857 x 594", - "size": "25 x 86" - }, - { - "ground": "13 x 84", - "offset": "882 x 594", - "size": "26 x 86" - }, - { - "ground": "13 x 84", - "offset": "908 x 594", - "size": "26 x 85" - }, - { - "ground": "13 x 84", - "offset": "934 x 594", - "size": "26 x 85" - }, - { - "ground": "14 x 84", - "offset": "960 x 594", - "size": "26 x 86" - }, - { - "ground": "14 x 84", - "offset": "986 x 594", - "size": "26 x 86" - }, - { - "ground": "14 x 84", - "offset": "1012 x 594", - "size": "26 x 87" - }, - { - "ground": "14 x 84", - "offset": "1038 x 594", - "size": "26 x 87" - }, - { - "ground": "14 x 84", - "offset": "1064 x 594", - "size": "26 x 88" - }, - { - "ground": "14 x 84", - "offset": "1090 x 594", - "size": "26 x 88" - }, - { - "ground": "14 x 83", - "offset": "1116 x 594", - "size": "26 x 88" - }, - { - "ground": "14 x 83", - "offset": "1142 x 594", - "size": "26 x 89" - }, - { - "ground": "13 x 83", - "offset": "1168 x 594", - "size": "25 x 89" - }, - { - "ground": "13 x 83", - "offset": "1193 x 594", - "size": "25 x 89" - } - ], - "ground": "479 x 494", - "name": "nw" - } - ], - "height": 0, - "nframes": 48, - "object_name": "npc", - "pixel_size": "1466 x 683", - "width": 30 -} +{
+ "actionframe": 0,
+ "anim_name": "walk",
+ "fps": 24,
+ "groups": [
+ {
+ "frames": [
+ {
+ "ground": "12 x 82",
+ "offset": "0 x 0",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "30 x 0",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "60 x 0",
+ "size": "31 x 87"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "91 x 0",
+ "size": "31 x 87"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "122 x 0",
+ "size": "31 x 87"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "153 x 0",
+ "size": "31 x 87"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "184 x 0",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "214 x 0",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "11 x 83",
+ "offset": "244 x 0",
+ "size": "29 x 87"
+ },
+ {
+ "ground": "11 x 83",
+ "offset": "273 x 0",
+ "size": "29 x 87"
+ },
+ {
+ "ground": "10 x 83",
+ "offset": "302 x 0",
+ "size": "28 x 87"
+ },
+ {
+ "ground": "10 x 83",
+ "offset": "330 x 0",
+ "size": "28 x 86"
+ },
+ {
+ "ground": "9 x 83",
+ "offset": "358 x 0",
+ "size": "27 x 86"
+ },
+ {
+ "ground": "9 x 83",
+ "offset": "385 x 0",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "9 x 83",
+ "offset": "411 x 0",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "8 x 83",
+ "offset": "436 x 0",
+ "size": "24 x 85"
+ },
+ {
+ "ground": "8 x 83",
+ "offset": "460 x 0",
+ "size": "23 x 84"
+ },
+ {
+ "ground": "8 x 83",
+ "offset": "483 x 0",
+ "size": "23 x 85"
+ },
+ {
+ "ground": "9 x 82",
+ "offset": "506 x 0",
+ "size": "24 x 85"
+ },
+ {
+ "ground": "10 x 82",
+ "offset": "530 x 0",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "555 x 0",
+ "size": "26 x 85"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "581 x 0",
+ "size": "27 x 85"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "608 x 0",
+ "size": "29 x 85"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "637 x 0",
+ "size": "31 x 85"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "668 x 0",
+ "size": "31 x 85"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "699 x 0",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "730 x 0",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "761 x 0",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "792 x 0",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "823 x 0",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "853 x 0",
+ "size": "29 x 84"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "882 x 0",
+ "size": "28 x 83"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "910 x 0",
+ "size": "27 x 83"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "937 x 0",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "963 x 0",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "987 x 0",
+ "size": "23 x 83"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "1010 x 0",
+ "size": "23 x 84"
+ },
+ {
+ "ground": "10 x 82",
+ "offset": "1033 x 0",
+ "size": "22 x 84"
+ },
+ {
+ "ground": "9 x 82",
+ "offset": "1055 x 0",
+ "size": "22 x 85"
+ },
+ {
+ "ground": "10 x 82",
+ "offset": "1077 x 0",
+ "size": "23 x 85"
+ },
+ {
+ "ground": "10 x 82",
+ "offset": "1100 x 0",
+ "size": "24 x 85"
+ },
+ {
+ "ground": "10 x 82",
+ "offset": "1124 x 0",
+ "size": "25 x 86"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "1149 x 0",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "1175 x 0",
+ "size": "27 x 86"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "1202 x 0",
+ "size": "27 x 87"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "1229 x 0",
+ "size": "28 x 87"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "1257 x 0",
+ "size": "29 x 88"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "1286 x 0",
+ "size": "29 x 88"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "n",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "16 x 79",
+ "offset": "0 x 88",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "38 x 88",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "76 x 88",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "114 x 88",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "16 x 80",
+ "offset": "152 x 88",
+ "size": "37 x 82"
+ },
+ {
+ "ground": "16 x 80",
+ "offset": "189 x 88",
+ "size": "36 x 82"
+ },
+ {
+ "ground": "16 x 80",
+ "offset": "225 x 88",
+ "size": "35 x 82"
+ },
+ {
+ "ground": "16 x 80",
+ "offset": "260 x 88",
+ "size": "33 x 82"
+ },
+ {
+ "ground": "15 x 80",
+ "offset": "293 x 88",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "15 x 80",
+ "offset": "324 x 88",
+ "size": "30 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "354 x 88",
+ "size": "28 x 83"
+ },
+ {
+ "ground": "13 x 80",
+ "offset": "382 x 88",
+ "size": "27 x 83"
+ },
+ {
+ "ground": "12 x 80",
+ "offset": "409 x 88",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "11 x 80",
+ "offset": "435 x 88",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "10 x 80",
+ "offset": "460 x 88",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "8 x 80",
+ "offset": "484 x 88",
+ "size": "22 x 83"
+ },
+ {
+ "ground": "7 x 80",
+ "offset": "506 x 88",
+ "size": "21 x 83"
+ },
+ {
+ "ground": "9 x 80",
+ "offset": "527 x 88",
+ "size": "22 x 83"
+ },
+ {
+ "ground": "10 x 80",
+ "offset": "549 x 88",
+ "size": "24 x 82"
+ },
+ {
+ "ground": "12 x 80",
+ "offset": "573 x 88",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "13 x 79",
+ "offset": "599 x 88",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "628 x 88",
+ "size": "32 x 82"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "660 x 88",
+ "size": "35 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "695 x 88",
+ "size": "37 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "732 x 88",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "770 x 88",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "17 x 79",
+ "offset": "808 x 88",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "846 x 88",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "884 x 88",
+ "size": "37 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "921 x 88",
+ "size": "36 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "957 x 88",
+ "size": "35 x 81"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "992 x 88",
+ "size": "33 x 81"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "1025 x 88",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "1056 x 88",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "1085 x 88",
+ "size": "28 x 82"
+ },
+ {
+ "ground": "13 x 79",
+ "offset": "1113 x 88",
+ "size": "27 x 82"
+ },
+ {
+ "ground": "12 x 79",
+ "offset": "1140 x 88",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "11 x 79",
+ "offset": "1166 x 88",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "10 x 79",
+ "offset": "1191 x 88",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "8 x 79",
+ "offset": "1215 x 88",
+ "size": "22 x 83"
+ },
+ {
+ "ground": "7 x 79",
+ "offset": "1237 x 88",
+ "size": "21 x 83"
+ },
+ {
+ "ground": "9 x 79",
+ "offset": "1258 x 88",
+ "size": "23 x 83"
+ },
+ {
+ "ground": "10 x 79",
+ "offset": "1281 x 88",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "12 x 79",
+ "offset": "1305 x 88",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "13 x 79",
+ "offset": "1331 x 88",
+ "size": "29 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "1360 x 88",
+ "size": "32 x 83"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "1392 x 88",
+ "size": "35 x 83"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "1427 x 88",
+ "size": "37 x 83"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "ne",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "13 x 77",
+ "offset": "0 x 171",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "31 x 171",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "62 x 171",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "93 x 171",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "124 x 171",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "155 x 171",
+ "size": "30 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "185 x 171",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "214 x 171",
+ "size": "28 x 81"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "242 x 171",
+ "size": "27 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "269 x 171",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "295 x 171",
+ "size": "24 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "319 x 171",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "11 x 77",
+ "offset": "342 x 171",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "10 x 77",
+ "offset": "365 x 171",
+ "size": "22 x 80"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "387 x 171",
+ "size": "21 x 79"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "408 x 171",
+ "size": "21 x 80"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "429 x 171",
+ "size": "22 x 80"
+ },
+ {
+ "ground": "10 x 77",
+ "offset": "451 x 171",
+ "size": "23 x 81"
+ },
+ {
+ "ground": "10 x 77",
+ "offset": "474 x 171",
+ "size": "24 x 82"
+ },
+ {
+ "ground": "11 x 77",
+ "offset": "498 x 171",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "11 x 77",
+ "offset": "523 x 171",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "549 x 171",
+ "size": "27 x 84"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "576 x 171",
+ "size": "28 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "604 x 171",
+ "size": "29 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "633 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "663 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "693 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "723 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "753 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "783 x 171",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "813 x 171",
+ "size": "30 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "843 x 171",
+ "size": "30 x 83"
+ },
+ {
+ "ground": "11 x 76",
+ "offset": "873 x 171",
+ "size": "29 x 83"
+ },
+ {
+ "ground": "11 x 76",
+ "offset": "902 x 171",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "10 x 76",
+ "offset": "931 x 171",
+ "size": "28 x 82"
+ },
+ {
+ "ground": "10 x 77",
+ "offset": "959 x 171",
+ "size": "28 x 82"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "987 x 171",
+ "size": "27 x 82"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "1014 x 171",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "1040 x 171",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "8 x 77",
+ "offset": "1065 x 171",
+ "size": "24 x 81"
+ },
+ {
+ "ground": "8 x 77",
+ "offset": "1089 x 171",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "8 x 77",
+ "offset": "1112 x 171",
+ "size": "22 x 80"
+ },
+ {
+ "ground": "9 x 77",
+ "offset": "1134 x 171",
+ "size": "24 x 79"
+ },
+ {
+ "ground": "10 x 77",
+ "offset": "1158 x 171",
+ "size": "25 x 80"
+ },
+ {
+ "ground": "11 x 77",
+ "offset": "1183 x 171",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "1209 x 171",
+ "size": "27 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "1236 x 171",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "1265 x 171",
+ "size": "31 x 82"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "e",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "12 x 75",
+ "offset": "0 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "25 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "50 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "75 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "100 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "125 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "150 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "175 x 255",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "200 x 255",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "225 x 255",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "250 x 255",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "275 x 255",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "300 x 255",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "325 x 255",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "350 x 255",
+ "size": "25 x 80"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "375 x 255",
+ "size": "26 x 80"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "401 x 255",
+ "size": "26 x 79"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "427 x 255",
+ "size": "26 x 79"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "453 x 255",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "479 x 255",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "505 x 255",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "14 x 76",
+ "offset": "531 x 255",
+ "size": "26 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "557 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "582 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 76",
+ "offset": "607 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "632 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "657 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "682 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "707 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "732 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "13 x 75",
+ "offset": "757 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 75",
+ "offset": "782 x 255",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "807 x 255",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "832 x 255",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "857 x 255",
+ "size": "25 x 82"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "882 x 255",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "908 x 255",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "934 x 255",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "960 x 255",
+ "size": "26 x 80"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "986 x 255",
+ "size": "26 x 80"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1012 x 255",
+ "size": "26 x 79"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1038 x 255",
+ "size": "26 x 79"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1064 x 255",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1090 x 255",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1116 x 255",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1142 x 255",
+ "size": "26 x 84"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1168 x 255",
+ "size": "25 x 84"
+ },
+ {
+ "ground": "12 x 76",
+ "offset": "1193 x 255",
+ "size": "25 x 84"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "se",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "17 x 76",
+ "offset": "0 x 339",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "17 x 76",
+ "offset": "30 x 339",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "17 x 76",
+ "offset": "60 x 339",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "91 x 339",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "122 x 339",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "153 x 339",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "184 x 339",
+ "size": "30 x 83"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "214 x 339",
+ "size": "30 x 83"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "244 x 339",
+ "size": "29 x 83"
+ },
+ {
+ "ground": "18 x 76",
+ "offset": "273 x 339",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "18 x 77",
+ "offset": "302 x 339",
+ "size": "28 x 82"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "330 x 339",
+ "size": "28 x 82"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "358 x 339",
+ "size": "27 x 82"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "385 x 339",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "411 x 339",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "436 x 339",
+ "size": "24 x 81"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "460 x 339",
+ "size": "23 x 81"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "483 x 339",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "506 x 339",
+ "size": "24 x 79"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "530 x 339",
+ "size": "25 x 80"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "555 x 339",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "581 x 339",
+ "size": "27 x 81"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "608 x 339",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "637 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "18 x 77",
+ "offset": "668 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "18 x 77",
+ "offset": "699 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "18 x 77",
+ "offset": "730 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "18 x 77",
+ "offset": "761 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "792 x 339",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "823 x 339",
+ "size": "30 x 82"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "853 x 339",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "882 x 339",
+ "size": "28 x 81"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "910 x 339",
+ "size": "27 x 81"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "937 x 339",
+ "size": "26 x 81"
+ },
+ {
+ "ground": "12 x 77",
+ "offset": "963 x 339",
+ "size": "24 x 81"
+ },
+ {
+ "ground": "11 x 77",
+ "offset": "987 x 339",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "11 x 78",
+ "offset": "1010 x 339",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "11 x 78",
+ "offset": "1033 x 339",
+ "size": "22 x 80"
+ },
+ {
+ "ground": "12 x 78",
+ "offset": "1055 x 339",
+ "size": "22 x 80"
+ },
+ {
+ "ground": "13 x 77",
+ "offset": "1077 x 339",
+ "size": "23 x 80"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "1100 x 339",
+ "size": "24 x 80"
+ },
+ {
+ "ground": "14 x 77",
+ "offset": "1124 x 339",
+ "size": "25 x 81"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "1149 x 339",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "15 x 77",
+ "offset": "1175 x 339",
+ "size": "27 x 82"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "1202 x 339",
+ "size": "27 x 83"
+ },
+ {
+ "ground": "16 x 77",
+ "offset": "1229 x 339",
+ "size": "28 x 84"
+ },
+ {
+ "ground": "17 x 77",
+ "offset": "1257 x 339",
+ "size": "29 x 84"
+ },
+ {
+ "ground": "17 x 76",
+ "offset": "1286 x 339",
+ "size": "29 x 84"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "s",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "21 x 79",
+ "offset": "0 x 423",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "38 x 423",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "76 x 423",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "114 x 423",
+ "size": "38 x 81"
+ },
+ {
+ "ground": "20 x 79",
+ "offset": "152 x 423",
+ "size": "37 x 81"
+ },
+ {
+ "ground": "19 x 79",
+ "offset": "189 x 423",
+ "size": "36 x 81"
+ },
+ {
+ "ground": "18 x 79",
+ "offset": "225 x 423",
+ "size": "35 x 82"
+ },
+ {
+ "ground": "17 x 79",
+ "offset": "260 x 423",
+ "size": "33 x 82"
+ },
+ {
+ "ground": "16 x 79",
+ "offset": "293 x 423",
+ "size": "31 x 82"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "324 x 423",
+ "size": "30 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "354 x 423",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "383 x 423",
+ "size": "27 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "410 x 423",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "436 x 423",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "461 x 423",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "485 x 423",
+ "size": "22 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "507 x 423",
+ "size": "21 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "528 x 423",
+ "size": "23 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "551 x 423",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "14 x 79",
+ "offset": "575 x 423",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "601 x 423",
+ "size": "29 x 83"
+ },
+ {
+ "ground": "18 x 79",
+ "offset": "630 x 423",
+ "size": "32 x 83"
+ },
+ {
+ "ground": "19 x 79",
+ "offset": "662 x 423",
+ "size": "35 x 83"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "697 x 423",
+ "size": "37 x 82"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "734 x 423",
+ "size": "38 x 83"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "772 x 423",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "810 x 423",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "21 x 80",
+ "offset": "848 x 423",
+ "size": "38 x 82"
+ },
+ {
+ "ground": "20 x 80",
+ "offset": "886 x 423",
+ "size": "37 x 82"
+ },
+ {
+ "ground": "19 x 80",
+ "offset": "923 x 423",
+ "size": "36 x 82"
+ },
+ {
+ "ground": "18 x 80",
+ "offset": "959 x 423",
+ "size": "35 x 83"
+ },
+ {
+ "ground": "17 x 80",
+ "offset": "994 x 423",
+ "size": "33 x 83"
+ },
+ {
+ "ground": "16 x 80",
+ "offset": "1027 x 423",
+ "size": "31 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1058 x 423",
+ "size": "29 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1087 x 423",
+ "size": "28 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1115 x 423",
+ "size": "27 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1142 x 423",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1168 x 423",
+ "size": "25 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1193 x 423",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1217 x 423",
+ "size": "22 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1239 x 423",
+ "size": "21 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1260 x 423",
+ "size": "23 x 83"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1283 x 423",
+ "size": "24 x 82"
+ },
+ {
+ "ground": "14 x 80",
+ "offset": "1307 x 423",
+ "size": "26 x 82"
+ },
+ {
+ "ground": "15 x 79",
+ "offset": "1333 x 423",
+ "size": "29 x 82"
+ },
+ {
+ "ground": "18 x 79",
+ "offset": "1362 x 423",
+ "size": "32 x 82"
+ },
+ {
+ "ground": "19 x 79",
+ "offset": "1394 x 423",
+ "size": "35 x 82"
+ },
+ {
+ "ground": "21 x 79",
+ "offset": "1429 x 423",
+ "size": "37 x 82"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "sw",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "18 x 82",
+ "offset": "0 x 506",
+ "size": "31 x 85"
+ },
+ {
+ "ground": "18 x 82",
+ "offset": "31 x 506",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 82",
+ "offset": "62 x 506",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "18 x 82",
+ "offset": "93 x 506",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "124 x 506",
+ "size": "31 x 84"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "155 x 506",
+ "size": "30 x 84"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "185 x 506",
+ "size": "29 x 84"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "214 x 506",
+ "size": "28 x 83"
+ },
+ {
+ "ground": "14 x 82",
+ "offset": "242 x 506",
+ "size": "27 x 83"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "269 x 506",
+ "size": "26 x 83"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "295 x 506",
+ "size": "24 x 83"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "319 x 506",
+ "size": "23 x 83"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "342 x 506",
+ "size": "23 x 84"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "365 x 506",
+ "size": "22 x 84"
+ },
+ {
+ "ground": "11 x 82",
+ "offset": "387 x 506",
+ "size": "21 x 85"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "408 x 506",
+ "size": "21 x 85"
+ },
+ {
+ "ground": "12 x 82",
+ "offset": "429 x 506",
+ "size": "22 x 85"
+ },
+ {
+ "ground": "13 x 82",
+ "offset": "451 x 506",
+ "size": "23 x 86"
+ },
+ {
+ "ground": "14 x 82",
+ "offset": "474 x 506",
+ "size": "24 x 86"
+ },
+ {
+ "ground": "14 x 82",
+ "offset": "498 x 506",
+ "size": "25 x 86"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "523 x 506",
+ "size": "26 x 87"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "549 x 506",
+ "size": "27 x 87"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "576 x 506",
+ "size": "28 x 87"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "604 x 506",
+ "size": "29 x 88"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "633 x 506",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "663 x 506",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "693 x 506",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "723 x 506",
+ "size": "30 x 88"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "753 x 506",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "783 x 506",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "18 x 83",
+ "offset": "813 x 506",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "18 x 83",
+ "offset": "843 x 506",
+ "size": "30 x 87"
+ },
+ {
+ "ground": "18 x 83",
+ "offset": "873 x 506",
+ "size": "29 x 87"
+ },
+ {
+ "ground": "18 x 83",
+ "offset": "902 x 506",
+ "size": "29 x 87"
+ },
+ {
+ "ground": "18 x 83",
+ "offset": "931 x 506",
+ "size": "28 x 87"
+ },
+ {
+ "ground": "17 x 83",
+ "offset": "959 x 506",
+ "size": "28 x 86"
+ },
+ {
+ "ground": "17 x 83",
+ "offset": "987 x 506",
+ "size": "27 x 86"
+ },
+ {
+ "ground": "16 x 83",
+ "offset": "1014 x 506",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "16 x 83",
+ "offset": "1040 x 506",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "15 x 83",
+ "offset": "1065 x 506",
+ "size": "24 x 85"
+ },
+ {
+ "ground": "14 x 83",
+ "offset": "1089 x 506",
+ "size": "23 x 85"
+ },
+ {
+ "ground": "14 x 83",
+ "offset": "1112 x 506",
+ "size": "22 x 85"
+ },
+ {
+ "ground": "14 x 82",
+ "offset": "1134 x 506",
+ "size": "24 x 85"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "1158 x 506",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "1183 x 506",
+ "size": "26 x 85"
+ },
+ {
+ "ground": "15 x 82",
+ "offset": "1209 x 506",
+ "size": "27 x 85"
+ },
+ {
+ "ground": "16 x 82",
+ "offset": "1236 x 506",
+ "size": "29 x 85"
+ },
+ {
+ "ground": "17 x 82",
+ "offset": "1265 x 506",
+ "size": "31 x 85"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "w",
+ "offset": "0 x 0"
+ },
+ {
+ "frames": [
+ {
+ "ground": "13 x 83",
+ "offset": "0 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "25 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "50 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "75 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "100 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "125 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "13 x 84",
+ "offset": "150 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "175 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "200 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "225 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "250 x 594",
+ "size": "25 x 86"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "275 x 594",
+ "size": "25 x 86"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "300 x 594",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "325 x 594",
+ "size": "25 x 85"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "350 x 594",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "376 x 594",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "402 x 594",
+ "size": "26 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "428 x 594",
+ "size": "26 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "454 x 594",
+ "size": "26 x 88"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "480 x 594",
+ "size": "26 x 88"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "506 x 594",
+ "size": "26 x 89"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "532 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "557 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "582 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "607 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "632 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "657 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "682 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "707 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 83",
+ "offset": "732 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "757 x 594",
+ "size": "25 x 88"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "782 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "807 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "12 x 84",
+ "offset": "832 x 594",
+ "size": "25 x 87"
+ },
+ {
+ "ground": "13 x 84",
+ "offset": "857 x 594",
+ "size": "25 x 86"
+ },
+ {
+ "ground": "13 x 84",
+ "offset": "882 x 594",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "13 x 84",
+ "offset": "908 x 594",
+ "size": "26 x 85"
+ },
+ {
+ "ground": "13 x 84",
+ "offset": "934 x 594",
+ "size": "26 x 85"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "960 x 594",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "986 x 594",
+ "size": "26 x 86"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "1012 x 594",
+ "size": "26 x 87"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "1038 x 594",
+ "size": "26 x 87"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "1064 x 594",
+ "size": "26 x 88"
+ },
+ {
+ "ground": "14 x 84",
+ "offset": "1090 x 594",
+ "size": "26 x 88"
+ },
+ {
+ "ground": "14 x 83",
+ "offset": "1116 x 594",
+ "size": "26 x 88"
+ },
+ {
+ "ground": "14 x 83",
+ "offset": "1142 x 594",
+ "size": "26 x 89"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "1168 x 594",
+ "size": "25 x 89"
+ },
+ {
+ "ground": "13 x 83",
+ "offset": "1193 x 594",
+ "size": "25 x 89"
+ }
+ ],
+ "ground": "479 x 494",
+ "name": "nw",
+ "offset": "0 x 0"
+ }
+ ],
+ "height": 0,
+ "nframes": 48,
+ "object_name": "npc",
+ "pixel_size": "1466 x 683",
+ "width": 30
+}
diff --git a/doc/atlas.json.example b/doc/atlas.json.example index b3c4672f..ee13dc67 100644 --- a/doc/atlas.json.example +++ b/doc/atlas.json.example @@ -7,14 +7,14 @@ "pixel_size": "0 x 0", "groups": [ - { "frames": [], "ground": "0 x 0", "name": "n" }, - { "frames": [], "ground": "0 x 0", "name": "ne" }, - { "frames": [], "ground": "0 x 0", "name": "e" }, - { "frames": [], "ground": "0 x 0", "name": "se" }, - { "frames": [], "ground": "0 x 0", "name": "s" }, - { "frames": [], "ground": "0 x 0", "name": "sw" }, - { "frames": [], "ground": "0 x 0", "name": "w" }, - { "frames": [], "ground": "0 x 0", "name": "nw" } + { "frames": [], "ground": "0 x 0", "name": "n", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "ne", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "e", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "se", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "s", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "sw", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "w", "offset": "0 x 0" }, + { "frames": [], "ground": "0 x 0", "name": "nw", "offset": "0 x 0" } ] } // vim: ft=javascript diff --git a/loader/impl.hpp b/loader/impl.hpp index 2c26c863..08467038 100644 --- a/loader/impl.hpp +++ b/loader/impl.hpp @@ -1,12 +1,12 @@ #pragma once +namespace floormat { struct anim_def; } namespace Corrade::Containers { template<typename T> class BasicStringView; using StringView = BasicStringView<const char>; } -namespace floormat::Serialize { struct anim; } namespace floormat::loader_detail { bool chdir(StringView pathname); -Serialize::anim deserialize_anim(StringView filename); +anim_def deserialize_anim(StringView filename); void system_init(); } // namespace floormat::loader_detail diff --git a/loader/json.cpp b/loader/json.cpp index e66a58f2..be621b61 100644 --- a/loader/json.cpp +++ b/loader/json.cpp @@ -4,9 +4,9 @@ namespace floormat::loader_detail { -Serialize::anim deserialize_anim(StringView filename) +anim_def deserialize_anim(StringView filename) { - return json_helper::from_json<Serialize::anim>(filename); + return json_helper::from_json<anim_def>(filename); } } // namespace floormat::loader_detail diff --git a/serialize/anim.cpp b/serialize/anim.cpp index b6882f1d..d59c7194 100644 --- a/serialize/anim.cpp +++ b/serialize/anim.cpp @@ -2,15 +2,15 @@ #include "serialize/corrade-string.hpp" #include "serialize/anim.hpp" -namespace floormat::Serialize { +namespace floormat { NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(anim_frame, ground, offset, size) -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(anim_group, name, frames, ground) -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(anim, object_name, anim_name, pixel_size, nframes, actionframe, fps, groups, width, height) +NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(anim_group, name, frames, ground, offset) +NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(anim_def, object_name, anim_name, pixel_size, nframes, actionframe, fps, groups, width, height) } // namespace floormat::Serialize -using namespace floormat::Serialize; +using namespace floormat; namespace nlohmann { @@ -20,7 +20,7 @@ void adl_serializer<anim_frame>::from_json(const json& j, anim_frame& val) { usi void adl_serializer<anim_group>::to_json(json& j, const anim_group& val) { using nlohmann::to_json; to_json(j, val); } void adl_serializer<anim_group>::from_json(const json& j, anim_group& val) { using nlohmann::from_json; from_json(j, val); } -void adl_serializer<anim>::to_json(json& j, const anim& val) { using nlohmann::to_json; to_json(j, val); } -void adl_serializer<anim>::from_json(const json& j, anim& val) { using nlohmann::from_json; from_json(j, val); } +void adl_serializer<anim_def>::to_json(json& j, const anim_def& val) { using nlohmann::to_json; to_json(j, val); } +void adl_serializer<anim_def>::from_json(const json& j, anim_def& val) { using nlohmann::from_json; from_json(j, val); } } // namespace nlohmann diff --git a/serialize/anim.hpp b/serialize/anim.hpp index 9d6db66c..48d97451 100644 --- a/serialize/anim.hpp +++ b/serialize/anim.hpp @@ -1,62 +1,26 @@ #pragma once -#include <vector> -#include <Corrade/Containers/String.h> -#include <Magnum/Magnum.h> -#include <Magnum/Math/Vector2.h> +#include "src/anim.hpp" #include <nlohmann/json_fwd.hpp> -namespace floormat::Serialize { - -struct anim_frame final -{ - Vector2i ground; - Vector2ui offset, size; -}; - -enum class anim_direction : unsigned char -{ - N, NE, E, SE, S, SW, W, NW, - COUNT, -}; - -struct anim_group final -{ - String name; - std::vector<anim_frame> frames; - Vector2ui ground; -}; - -struct anim final -{ - static constexpr int default_fps = 24; - - String object_name, anim_name; - std::vector<anim_group> groups; - Vector2ui pixel_size; - std::size_t nframes = 0, width = 0, height = 0, fps = default_fps, actionframe = 0; -}; - -} // namespace floormat::Serialize - namespace nlohmann { template<> -struct adl_serializer<floormat::Serialize::anim_frame> { - static void to_json(json& j, const floormat::Serialize::anim_frame& val); - static void from_json(const json& j, floormat::Serialize::anim_frame& val); +struct adl_serializer<floormat::anim_frame> { + static void to_json(json& j, const floormat::anim_frame& val); + static void from_json(const json& j, floormat::anim_frame& val); }; template<> -struct adl_serializer<floormat::Serialize::anim_group> { - static void to_json(json& j, const floormat::Serialize::anim_group& val); - static void from_json(const json& j, floormat::Serialize::anim_group& val); +struct adl_serializer<floormat::anim_group> { + static void to_json(json& j, const floormat::anim_group& val); + static void from_json(const json& j, floormat::anim_group& val); }; template<> -struct adl_serializer<floormat::Serialize::anim> { - static void to_json(json& j, const floormat::Serialize::anim& val); - static void from_json(const json& j, floormat::Serialize::anim& val); +struct adl_serializer<floormat::anim_def> { + static void to_json(json& j, const floormat::anim_def& val); + static void from_json(const json& j, floormat::anim_def& val); }; } // namespace nlohmann diff --git a/src/anim-atlas.cpp b/src/anim-atlas.cpp index 47490246..c874150e 100644 --- a/src/anim-atlas.cpp +++ b/src/anim-atlas.cpp @@ -9,7 +9,7 @@ namespace floormat { static constexpr const char* name_array[] = { "n", "ne", "e", "se", "s", "sw", "w", "nw", }; -std::uint8_t anim_atlas::rotation_to_index(const anim_info& info, rotation r) noexcept +std::uint8_t anim_atlas::rotation_to_index(const anim_def& info, rotation r) noexcept { StringView str = name_array[std::size_t(r)]; for (std::size_t sz = info.groups.size(), i = 0; i < sz; i++) @@ -21,7 +21,7 @@ std::uint8_t anim_atlas::rotation_to_index(const anim_info& info, rotation r) no return 0xff; } -decltype(anim_atlas::_group_indices) anim_atlas::make_group_indices(const anim_info& a) noexcept +decltype(anim_atlas::_group_indices) anim_atlas::make_group_indices(const anim_def& a) noexcept { std::array<std::uint8_t, (std::size_t)rotation::COUNT> array; for (std::size_t i = 0; i < array.size(); i++) @@ -30,7 +30,7 @@ decltype(anim_atlas::_group_indices) anim_atlas::make_group_indices(const anim_i } anim_atlas::anim_atlas() noexcept = default; -anim_atlas::anim_atlas(StringView name, const ImageView2D& image, anim_info info) noexcept : +anim_atlas::anim_atlas(StringView name, const ImageView2D& image, anim_def info) noexcept : _name{name}, _info{std::move(info)}, _group_indices{make_group_indices(_info)} { @@ -49,7 +49,7 @@ anim_atlas& anim_atlas::operator=(anim_atlas&&) noexcept = default; StringView anim_atlas::name() const noexcept { return _name; } GL::Texture2D& anim_atlas::texture() noexcept { return _tex; } -const Serialize::anim& anim_atlas::info() const noexcept { return _info; } +const anim_def& anim_atlas::info() const noexcept { return _info; } auto anim_atlas::group(rotation r) const noexcept -> const anim_group& { @@ -81,20 +81,22 @@ auto anim_atlas::texcoords_for_frame(rotation r, std::size_t i) const noexcept - auto anim_atlas::frame_quad(const Vector3& center, rotation r, std::size_t i) const noexcept -> quad { + enum : std::size_t { x, y, z }; + const auto g = group(r); const auto f = frame(r, i); const auto size = Vector2d(f.size); - const auto gx = (float)f.ground[0]*.5f, gy = (float)f.ground[1]*.5f; - const auto sx = (float)size[0]*.5f, sy = (float)size[1]*.5f; + const auto gx = (float)f.ground[x]*.5f, gy = (float)f.ground[y]*.5f; + const auto sx = (float)size[x]*.5f, sy = (float)size[y]*.5f; const auto bottom_right = tile_shader::unproject({ sx - gx, sy - gy }), top_right = tile_shader::unproject({ sx - gx, - gy }), bottom_left = tile_shader::unproject({ - gx, sy - gy }), top_left = tile_shader::unproject({ - gx, - gy }); - const auto cx = center[0], cy = center[1], cz = center[2]; + const auto cx = center[x] + g.offset[x], cy = center[y] + g.offset[y], cz = center[z]; return {{ - { cx + bottom_right[0], cy + bottom_right[1], cz }, - { cx + top_right[0], cy + top_right[1], cz }, - { cx + bottom_left[0], cy + bottom_left[1], cz }, - { cx + top_left[0], cy + top_left[1], cz }, + { cx + bottom_right[x], cy + bottom_right[y], cz }, + { cx + top_right[x], cy + top_right[y], cz }, + { cx + bottom_left[x], cy + bottom_left[y], cz }, + { cx + top_left[x], cy + top_left[y], cz }, }}; } diff --git a/src/anim-atlas.hpp b/src/anim-atlas.hpp index d05bbe77..36939f68 100644 --- a/src/anim-atlas.hpp +++ b/src/anim-atlas.hpp @@ -1,7 +1,7 @@ #pragma once #include "compat/defs.hpp" #include "scenery.hpp" -#include "serialize/anim.hpp" +#include "anim.hpp" #include <array> #include <Corrade/Containers/String.h> #include <Magnum/Math/Vector2.h> @@ -12,14 +12,11 @@ namespace floormat { struct anim_atlas final { - using anim_info = Serialize::anim; - using anim_group = Serialize::anim_group; - using anim_frame = Serialize::anim_frame; using texcoords = std::array<Vector2, 4>; using quad = std::array<Vector3, 4>; anim_atlas() noexcept; - anim_atlas(StringView name, const ImageView2D& tex, anim_info info) noexcept; + anim_atlas(StringView name, const ImageView2D& tex, anim_def info) noexcept; ~anim_atlas() noexcept; anim_atlas(anim_atlas&&) noexcept; @@ -27,7 +24,7 @@ struct anim_atlas final StringView name() const noexcept; GL::Texture2D& texture() noexcept; - const anim_info& info() const noexcept; + const anim_def& info() const noexcept; const anim_group& group(rotation r) const noexcept; const anim_frame& frame(rotation r, std::size_t frame) const noexcept; @@ -39,13 +36,13 @@ struct anim_atlas final private: GL::Texture2D _tex; String _name; - anim_info _info; + anim_def _info; std::array<std::uint8_t, (std::size_t)rotation::COUNT> _group_indices = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }; - static decltype(_group_indices) make_group_indices(const Serialize::anim& anim) noexcept; - static std::uint8_t rotation_to_index(const anim_info& a, rotation r) noexcept; + static decltype(_group_indices) make_group_indices(const anim_def& anim) noexcept; + static std::uint8_t rotation_to_index(const anim_def& a, rotation r) noexcept; }; } // namespace floormat diff --git a/src/anim.cpp b/src/anim.cpp new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/anim.cpp diff --git a/src/anim.hpp b/src/anim.hpp new file mode 100644 index 00000000..771df5d7 --- /dev/null +++ b/src/anim.hpp @@ -0,0 +1,41 @@ +#pragma once + +#include "compat/integer-types.hpp" +#include <vector> +#include <Corrade/Containers/String.h> +#include <Magnum/Magnum.h> +#include <Magnum/Math/Vector2.h> + +namespace floormat { + +struct anim_frame final +{ + Vector2i ground; + Vector2ui offset, size; +}; + +enum class anim_direction : unsigned char +{ + N, NE, E, SE, S, SW, W, NW, + COUNT, +}; + +struct anim_group final +{ + String name; + std::vector<anim_frame> frames; + Vector2ui ground; + Vector2b offset; +}; + +struct anim_def final +{ + static constexpr int default_fps = 24; + + String object_name, anim_name; + std::vector<anim_group> groups; + Vector2ui pixel_size; + std::size_t nframes = 0, width = 0, height = 0, fps = default_fps, actionframe = 0; +}; + +} // namespace floormat |