summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-11-12 08:40:08 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-11-12 09:57:16 +0100
commita6af5d7b0cdb037bf8d0fd99aedfedc9789fd74c (patch)
tree6664758f61d0bee67ba64f231a6ec2e6b4dd72ac
parent7434d29f3ce0033194b53b44ed881f749e67da75 (diff)
add offset to anim_group rotations
-rw-r--r--anim-crop-tool/atlas.cpp19
-rw-r--r--anim-crop-tool/atlas.hpp4
-rw-r--r--anim-crop-tool/main.cpp13
-rw-r--r--anim/door_close.json12
-rw-r--r--anim/npc_walk.json3968
-rw-r--r--doc/atlas.json.example16
-rw-r--r--loader/impl.hpp4
-rw-r--r--loader/json.cpp4
-rw-r--r--serialize/anim.cpp12
-rw-r--r--serialize/anim.hpp56
-rw-r--r--src/anim-atlas.cpp24
-rw-r--r--src/anim-atlas.hpp15
-rw-r--r--src/anim.cpp0
-rw-r--r--src/anim.hpp41
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