diff --git a/examples/the-hat-chooses-the-wizard/.cargo/config.toml b/examples/the-hat-chooses-the-wizard/.cargo/config.toml new file mode 100644 index 00000000..76de9890 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/.cargo/config.toml @@ -0,0 +1,10 @@ +[unstable] +build-std = ["core", "alloc"] +build-std-features = ["compiler-builtins-mem"] + +[build] +target = "thumbv4t-none-eabi" + +[target.thumbv4t-none-eabi] +rustflags = ["-Clink-arg=-Tgba.ld"] +runner = "mgba-qt" diff --git a/examples/the-hat-chooses-the-wizard/.gitignore b/examples/the-hat-chooses-the-wizard/.gitignore new file mode 100644 index 00000000..97b0d649 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/.gitignore @@ -0,0 +1,2 @@ +/target +/joinedtogether.* diff --git a/examples/the-hat-chooses-the-wizard/.vscode/settings.json b/examples/the-hat-chooses-the-wizard/.vscode/settings.json new file mode 100644 index 00000000..a3c76e3a --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "*.tsx": "xml", + "*.tmx": "xml" + } +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/Cargo.lock b/examples/the-hat-chooses-the-wizard/Cargo.lock new file mode 100644 index 00000000..8a36eebb --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/Cargo.lock @@ -0,0 +1,361 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "agb" +version = "0.8.0" +dependencies = [ + "agb_image_converter", + "agb_macros", + "agb_sound_converter", + "bitflags", +] + +[[package]] +name = "agb_image_converter" +version = "0.6.0" +dependencies = [ + "image", + "proc-macro2", + "quote", + "serde", + "syn", + "toml", +] + +[[package]] +name = "agb_macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "rand", + "syn", +] + +[[package]] +name = "agb_sound_converter" +version = "0.1.0" +dependencies = [ + "hound", + "proc-macro2", + "quote", + "siphasher", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "bytemuck" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72957246c41db82b8ef88a5486143830adeb8227ef9837740bdec67724cf2c5b" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hound" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a164bb2ceaeff4f42542bdb847c41517c78a60f5649671b2a07312b6e117549" + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-iter", + "num-rational", + "num-traits", + "png", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "joinedtogether" +version = "0.1.0" +dependencies = [ + "agb", + "serde", + "serde_json", +] + +[[package]] +name = "libc" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2f96d100e1cf1929e7719b7edb3b90ab5298072638fccd77be9ce942ecdfce" + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ca011bd0129ff4ae15cd04c4eef202cadf6c51c21e47aba319b4e0501db741" + +[[package]] +name = "proc-macro2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +dependencies = [ + "rand_core", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "serde" +version = "1.0.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f03b9878abf6d14e6779d3f24f07b2cfa90352cfec4acc5aab8f1ac7f146fae8" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a024926d3432516606328597e0f224a51355a493b49fdd67e9209187cbe55ecc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "336b10da19a12ad094b59d870ebde26a45402e5b470add4b5fd03c5048a32127" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "siphasher" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533494a8f9b724d33625ab53c6c4800f7cc445895924a8ef649222dcb76e938b" + +[[package]] +name = "syn" +version = "1.0.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" diff --git a/examples/the-hat-chooses-the-wizard/Cargo.toml b/examples/the-hat-chooses-the-wizard/Cargo.toml new file mode 100644 index 00000000..557c4386 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "joinedtogether" +version = "0.1.0" +authors = ["Corwin Kuiper ", "Gwilym Kuiper"] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +agb = { version = "0.8.0", path = "../../agb", default-features = false } + +[build-dependencies] +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" + +[profile.dev] +opt-level = 2 diff --git a/examples/the-hat-chooses-the-wizard/LICENSE b/examples/the-hat-chooses-the-wizard/LICENSE new file mode 100644 index 00000000..a612ad98 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/examples/the-hat-chooses-the-wizard/README.md b/examples/the-hat-chooses-the-wizard/README.md new file mode 100644 index 00000000..171c47b6 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/README.md @@ -0,0 +1,18 @@ +# The Hat Chooses The Wizard + +[![the hat chooses the wizard screenshot](screenshot.png)](https://lostimmortal.itch.io/the-hat-chooses-the-wizard) + +A Game Boy Advance game made for the [GMTK Game jam 2021](https://itch.io/jam/gmtk-2021) written in Rust using the [agb library](https://github.com/corwinkuiper/agb). +Play it at [lostimmortal.itch.io/the-hat-chooses-the-wizard](https://lostimmortal.itch.io/the-hat-chooses-the-wizard). + + +## Compiling + +The [repository for agb](https://github.com/corwinkuiper/agb) gives instructions for what tools are required for using agb. +If you have these, then clone this repository and build away. +If mgba-qt is installed, then a `cargo run` will build and run the game. + +## Changes + +This code may have changed since the gamejam submission, the tag `gmtk-submission` contains *exactly* the code at the point of submission. +This may be difficult to compile due to requiring some special directory setup, so the tag `gmtk-submission-agb-versioned` contains a single change that means it is easier to compile. \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/build.rs b/examples/the-hat-chooses-the-wizard/build.rs new file mode 100644 index 00000000..7df6d9dd --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/build.rs @@ -0,0 +1,234 @@ +const LEVELS: &[&str] = &[ + "1-1.json", "1-2.json", "1-3.json", "1-4.json", "1-5.json", "1-6.json", "1-7.json", "1-8.json", + "2-4.json", "2-2.json", "2-1.json", "2-3.json", +]; + +fn main() { + let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR environment variable must be specified"); + + tiled_export::export_tilemap(&out_dir).expect("Failed to export tilemap"); + for &level in LEVELS { + tiled_export::export_level(&out_dir, level).expect("Failed to export level"); + } +} + +mod tiled_export { + use serde::Deserialize; + use std::collections::HashMap; + use std::fs::File; + use std::io::{BufReader, BufWriter, Write}; + + const COLLISION_TILE: i32 = 1; + const KILL_TILE: i32 = 2; + const WIN_TILE: i32 = 4; + + pub fn export_tilemap(out_dir: &str) -> std::io::Result<()> { + let filename = "map/tilemap.json"; + println!("cargo:rerun-if-changed={}", filename); + let file = File::open(filename)?; + let reader = BufReader::new(file); + + let tilemap: TiledTilemap = serde_json::from_reader(reader)?; + + let output_file = File::create(format!("{}/tilemap.rs", out_dir))?; + let mut writer = BufWriter::new(output_file); + + let tile_data: HashMap<_, _> = tilemap + .tiles + .iter() + .map(|tile| { + ( + tile.id, + match tile.tile_type.as_str() { + "Collision" => COLLISION_TILE, + "Kill" => KILL_TILE, + "Win" => WIN_TILE, + _ => 0, + }, + ) + }) + .collect(); + + let tile_info = (0..tilemap.tilecount) + .map(|id| *tile_data.get(&id).unwrap_or(&0)) + .map(|tile_type| tile_type.to_string()) + .collect::>() + .join(", "); + + writeln!( + &mut writer, + "pub const COLLISION_TILE: i32 = {};", + COLLISION_TILE + )?; + + writeln!(&mut writer, "pub const KILL_TILE: i32 = {};", KILL_TILE)?; + writeln!(&mut writer, "pub const WIN_TILE: i32 = {};", WIN_TILE)?; + + writeln!( + &mut writer, + "pub const TILE_DATA: &[u32] = &[{}];", + tile_info + )?; + + Ok(()) + } + + pub fn export_level(out_dir: &str, level_file: &str) -> std::io::Result<()> { + let filename = format!("map/{}", level_file); + println!("cargo:rerun-if-changed={}", filename); + let file = File::open(filename)?; + let reader = BufReader::new(file); + + let level: TiledLevel = serde_json::from_reader(reader)?; + + let output_file = File::create(format!("{}/{}.rs", out_dir, level_file))?; + let mut writer = BufWriter::new(output_file); + + let layer_1 = level.layers[0] + .data + .as_ref() + .expect("Expected first layer to be a tile layer") + .iter() + .map(|id| get_map_id(*id).to_string()) + .collect::>() + .join(", "); + let layer_2 = level.layers[1] + .data + .as_ref() + .expect("Expected second layer to be a tile layer") + .iter() + .map(|id| get_map_id(*id).to_string()) + .collect::>() + .join(", "); + + writeln!(&mut writer, "const WIDTH: u32 = {};", level.width)?; + writeln!(&mut writer, "const HEIGHT: u32 = {};", level.height)?; + writeln!(&mut writer, "const TILEMAP: &[u16] = &[{}];", layer_1)?; + writeln!(&mut writer, "const BACKGROUND: &[u16] = &[{}];", layer_2)?; + + let objects = level.layers[2] + .objects + .as_ref() + .expect("Expected third layer to be an object layer") + .iter() + .map(|object| (&object.object_type, (object.x, object.y))); + let mut snails = vec![]; + let mut slimes = vec![]; + let mut enemy_stops = vec![]; + let mut player_start = None; + + for (object_type, (x, y)) in objects { + match object_type.as_str() { + "Snail Spawn" => snails.push((x, y)), + "Slime Spawn" => slimes.push((x, y)), + "Player Start" => player_start = Some((x, y)), + "Enemy Stop" => enemy_stops.push((x, y)), + _ => panic!("Unknown object type {}", object_type), + } + } + + let player_start = player_start.expect("Need a start place for the player"); + + let slimes_str = slimes + .iter() + .map(|slime| format!("({}, {})", slime.0, slime.1)) + .collect::>() + .join(", "); + let snails_str = snails + .iter() + .map(|slime| format!("({}, {})", slime.0, slime.1)) + .collect::>() + .join(", "); + let enemy_stop_str = enemy_stops + .iter() + .map(|enemy_stop| format!("({}, {})", enemy_stop.0, enemy_stop.1)) + .collect::>() + .join(", "); + + writeln!( + &mut writer, + "const SNAILS: &[(i32, i32)] = &[{}];", + snails_str + )?; + writeln!( + &mut writer, + "const SLIMES: &[(i32, i32)] = &[{}];", + slimes_str + )?; + writeln!( + &mut writer, + "const ENEMY_STOPS: &[(i32, i32)] = &[{}];", + enemy_stop_str + )?; + writeln!( + &mut writer, + "const START_POS: (i32, i32) = ({}, {});", + player_start.0, player_start.1 + )?; + + writeln!( + &mut writer, + r#" + use crate::Level; + use agb::number::Vector2D; + + pub const fn get_level() -> Level {{ + Level {{ + background: &TILEMAP, + foreground: &BACKGROUND, + dimensions: Vector2D {{x: WIDTH, y: HEIGHT}}, + collision: &crate::map_tiles::tilemap::TILE_DATA, + + enemy_stops: &ENEMY_STOPS, + slimes: &SLIMES, + snails: &SNAILS, + start_pos: START_POS, + }} + }} + "# + )?; + + Ok(()) + } + + fn get_map_id(id: i32) -> i32 { + match id { + 0 => 10, + i => i - 1, + } + } + + #[derive(Deserialize)] + struct TiledLevel { + layers: Vec, + width: i32, + height: i32, + } + + #[derive(Deserialize)] + struct TiledLayer { + data: Option>, + objects: Option>, + } + + #[derive(Deserialize)] + struct TiledObject { + #[serde(rename = "type")] + object_type: String, + x: i32, + y: i32, + } + + #[derive(Deserialize)] + struct TiledTilemap { + tiles: Vec, + tilecount: i32, + } + + #[derive(Deserialize)] + struct TiledTile { + id: i32, + #[serde(rename = "type")] + tile_type: String, + } +} diff --git a/examples/the-hat-chooses-the-wizard/gba.ld b/examples/the-hat-chooses-the-wizard/gba.ld new file mode 100644 index 00000000..3569c174 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/gba.ld @@ -0,0 +1,106 @@ +OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +OUTPUT_ARCH(arm) + +ENTRY(__start) + +MEMORY { + ewram (w!x) : ORIGIN = 0x02000000, LENGTH = 256K + iwram (w!x) : ORIGIN = 0x03000000, LENGTH = 32K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 32M +} + +__text_start = ORIGIN(rom); + +SECTIONS { + . = __text_start; + + .crt0 : { + KEEP (crt0.o(.text)); + . = ALIGN(4); + } > rom + + .text : { + *(.text .text*); + . = ALIGN(4); + } > rom + __text_end = .; + + .rodata : { + *(.rodata .rodata.*); + . = ALIGN(4); + } > rom + + __iwram_rom_start = .; + .iwram : { + __iwram_data_start = ABSOLUTE(.); + + *(.iwram .iwram.*); + . = ALIGN(4); + + *(.text_iwram .text_iwram.*); + . = ALIGN(4); + + __iwram_data_end = ABSOLUTE(.); + } > iwram AT>rom + + . = __iwram_rom_start + (__iwram_data_end - __iwram_data_start); + + __ewram_rom_start = .; + .ewram : { + __ewram_data_start = ABSOLUTE(.); + + *(.ewram .ewram.*); + . = ALIGN(4); + + *(.data .data.*); + . = ALIGN(4); + + __ewram_data_end = ABSOLUTE(.); + } > ewram AT>rom + + .bss : { + *(.bss .bss.*); + . = ALIGN(4); + } > iwram + + __iwram_rom_length_bytes = __iwram_data_end - __iwram_data_start; + __iwram_rom_length_halfwords = (__iwram_rom_length_bytes + 1) / 2; + + __ewram_rom_length_bytes = __ewram_data_end - __ewram_data_start; + __ewram_rom_length_halfwords = (__ewram_rom_length_bytes + 1) / 2; + + /* debugging sections */ + /* Stabs */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + /* discard anything not already mentioned */ + /DISCARD/ : { *(*) } +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/gfx/object_sheet.png b/examples/the-hat-chooses-the-wizard/gfx/object_sheet.png new file mode 100644 index 00000000..5ba18647 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/gfx/object_sheet.png differ diff --git a/examples/the-hat-chooses-the-wizard/gfx/object_sheet.toml b/examples/the-hat-chooses-the-wizard/gfx/object_sheet.toml new file mode 100644 index 00000000..279107be --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/gfx/object_sheet.toml @@ -0,0 +1,6 @@ +version = "1.0" + +[image.object_sheet] +filename = "object_sheet.png" +tile_size = "8x8" +transparent_colour = "2ce8f4" diff --git a/examples/the-hat-chooses-the-wizard/gfx/splash.png b/examples/the-hat-chooses-the-wizard/gfx/splash.png new file mode 100644 index 00000000..6c6d86f3 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/gfx/splash.png differ diff --git a/examples/the-hat-chooses-the-wizard/gfx/splash_screens.toml b/examples/the-hat-chooses-the-wizard/gfx/splash_screens.toml new file mode 100644 index 00000000..30156f38 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/gfx/splash_screens.toml @@ -0,0 +1,11 @@ +version = "1.0" + +[image.thanks_for_playing] +filename = "thanks_for_playing.png" +tile_size = "8x8" +transparent_colour = "2ce8f4" + +[image.splash] +filename = "splash.png" +tile_size = "8x8" +transparent_colour = "2ce8f4" diff --git a/examples/the-hat-chooses-the-wizard/gfx/thanks_for_playing.png b/examples/the-hat-chooses-the-wizard/gfx/thanks_for_playing.png new file mode 100644 index 00000000..c26b4738 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/gfx/thanks_for_playing.png differ diff --git a/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.png b/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.png new file mode 100644 index 00000000..2204ba9b Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.png differ diff --git a/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.toml b/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.toml new file mode 100644 index 00000000..373508d5 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/gfx/tile_sheet.toml @@ -0,0 +1,7 @@ +version = "1.0" + +[image.background] +filename = "tile_sheet.png" +tile_size = "8x8" +transparent_colour = "2ce8f4" + diff --git a/examples/the-hat-chooses-the-wizard/map/1-1.json b/examples/the-hat-chooses-the-wizard/map/1-1.json new file mode 100644 index 00000000..637a081c --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-1.json @@ -0,0 +1,75 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"1-1.json" + } + }, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 85, 86, 0, 0, 87, 363, 362, 0, 0, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 146, 0, 0, 0, 87, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Background + Embelishments", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 173, 174, 175, 172, 173, 174, 175, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 200, 201, 202, 203, 200, 201, 202, 203, 289, 0, 0, 0, 0, 0, 260, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 172, 173, 174, 175, 229, 230, 231, 231, 231, 231, 231, 231, 231, 318, 0, 0, 0, 0, 0, 288, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 200, 201, 202, 203, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 318, 284, 285, 285, 285, 286, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229], + "height":20, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Point Locations", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":16, + "y":80 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":3, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-1.tmx b/examples/the-hat-chooses-the-wizard/map/1-1.tmx new file mode 100644 index 00000000..77f7661b --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-1.tmx @@ -0,0 +1,60 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,335,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +113,0,85,86,0,0,87,363,362,0,0,0,0,0,0,306,0,0,0,0,0,0,118,0,0,0,0,224,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,0,146,0,0,0,87,252,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +172,172,173,174,175,172,173,174,175,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +200,200,201,202,203,200,201,202,203,289,0,0,0,0,0,260,172,173,174,175,172,173,174,175,172,173,172,173,174,175, +229,230,231,231,231,231,231,231,231,318,0,0,0,0,0,288,200,201,202,203,200,201,202,203,200,201,200,201,202,203, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,318,284,285,285,285,286,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229 + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-2.json b/examples/the-hat-chooses-the-wizard/map/1-2.json new file mode 100644 index 00000000..fb7cd7dd --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-2.json @@ -0,0 +1,75 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"1-2.json" + } + }, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 333, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 87, 87, 0, 361, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Background", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 288, 289, 0, 0, 0, 0, 173, 174, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 288, 356, 317, 0, 0, 0, 0, 288, 202, 289, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 288, 356, 230, 317, 0, 0, 0, 0, 316, 230, 310, 289, 261, 0, 0, 0, 0, 0, 0, 173, 174, 175, 173, 174, 175, 172, 173, 174, 175, 288, 356, 230, 230, 317, 0, 0, 0, 0, 316, 230, 230, 310, 289, 261, 0, 0, 0, 0, 0, 201, 202, 203, 201, 202, 203, 200, 201, 202, 203, 356, 230, 230, 230, 317, 0, 0, 0, 0, 316, 230, 230, 230, 310, 289, 172, 173, 174, 175, 172, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 317, 0, 0, 0, 0, 316, 230, 230, 230, 230, 310, 200, 201, 202, 203, 200, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 317, 0, 0, 0, 0, 316, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 317, 0, 0, 0, 0, 316, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 317, 284, 285, 285, 286, 316, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230], + "height":20, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Point locations", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":16, + "y":112 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":3, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-2.tmx b/examples/the-hat-chooses-the-wizard/map/1-2.tmx new file mode 100644 index 00000000..452f311e --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-2.tmx @@ -0,0 +1,60 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,335,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,363,362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,118,0,0,0,0,0,0,333,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,146,0,0,0,87,87,0,361,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,0,0,0,224,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,91,252,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,172,288,289,0,0,0,0,173,174,261,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,172,288,356,317,0,0,0,0,288,202,289,261,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,172,288,356,230,317,0,0,0,0,316,230,310,289,261,0,0,0,0,0,0, +173,174,175,173,174,175,172,173,174,175,288,356,230,230,317,0,0,0,0,316,230,230,310,289,261,0,0,0,0,0, +201,202,203,201,202,203,200,201,202,203,356,230,230,230,317,0,0,0,0,316,230,230,230,310,289,172,173,174,175,172, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,317,0,0,0,0,316,230,230,230,230,310,200,201,202,203,200, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,317,0,0,0,0,316,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,317,0,0,0,0,316,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,317,284,285,285,286,316,230,230,230,230,230,230,230,230,230,230 + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-3.json b/examples/the-hat-chooses-the-wizard/map/1-3.json new file mode 100644 index 00000000..1d354d1c --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-3.json @@ -0,0 +1,111 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"1-3.json" + } + }, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 87, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 90, 146, 114, 90, 91, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 146, 0, 92, 0, 114, 0, 87, 0, 0, 0, 0, 146, 0, 114, 0, 0, 0, 0, 92, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Background", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 172, 173, 176, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 227, 231, 231, 231, 310, 200, 201, 204, 0, 0, 0, 0, 0, 0, 227, 231, 231, 231, 231, 231, 231, 231, 231, 231, 229, 229, 229, 229, 0, 0, 0, 0, 0, 227, 231, 231, 231, 318, 172, 173, 174, 172, 173, 174, 175, 231, 231, 231, 231, 231, 232, 0, 227, 231, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 227, 231, 231, 310, 200, 201, 202, 200, 201, 202, 203, 356, 231, 231, 232, 0, 0, 0, 0, 231, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 227, 231, 229, 229, 229, 229, 229, 229, 229, 229, 231, 232, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 229, 229, 229, 229, 174, 172, 173, 174, 172, 173, 174, 175, 172, 173, 174, 172, 172, 173, 172, 173, 172, 173, 174, 175, 172, 173, 174, 175, 252, 173, 229, 229, 229, 310, 202, 200, 201, 202, 200, 201, 202, 203, 200, 201, 202, 200, 200, 201, 200, 201, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229], + "height":20, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Point locations", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":40, + "y":104 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":120, + "y":104 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":112, + "y":104 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":128, + "y":104 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":5, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-3.tmx b/examples/the-hat-chooses-the-wizard/map/1-3.tmx new file mode 100644 index 00000000..b31cd480 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-3.tmx @@ -0,0 +1,69 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,91,87,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,92,90,146,114,90,91,114,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,92,0,146,0,92,0,114,0,87,0,0,0,0,146,0,114,0,0,0,0,92,0,0,87,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,232,0,0,0,0,0,0,227,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,172,173,176,0,0,0,0,0,227,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,0,0,227,231,231,231,310,200,201,204,0,0,0,0,0,0,227,231,231,231,231,231,231,231,231,231,229,229, +229,229,0,0,0,0,0,227,231,231,231,318,172,173,174,172,173,174,175,231,231,231,231,231,232,0,227,231,229,229, +229,229,0,0,0,0,0,0,227,231,231,310,200,201,202,200,201,202,203,356,231,231,232,0,0,0,0,231,229,229, +229,229,0,0,0,0,0,0,0,227,231,229,229,229,229,229,229,229,229,231,232,0,0,0,0,0,0,227,229,229, +229,229,0,0,0,0,0,0,0,0,319,229,229,229,229,229,229,229,229,318,0,0,0,0,0,0,0,0,229,229, +229,229,0,0,0,0,0,0,0,0,227,229,229,229,229,229,229,229,229,232,0,0,0,0,0,0,0,0,229,229, +229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229, +229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,229,229, +229,229,174,172,173,174,172,173,174,175,172,173,174,172,172,173,172,173,172,173,174,175,172,173,174,175,252,173,229,229, +229,310,202,200,201,202,200,201,202,203,200,201,202,200,200,201,200,201,200,201,202,203,200,201,202,203,200,201,356,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-4.json b/examples/the-hat-chooses-the-wizard/map/1-4.json new file mode 100644 index 00000000..8052b92a --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-4.json @@ -0,0 +1,88 @@ +{ "backgroundcolor":"#2ce8f4", + "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"1-4.json" + } + }, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 92, 90, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, 0, 0, 335, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 118, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 92, 92, 85, 86, 361, 362, 0, 0, 0, 0, 91, 91, 144, 145, 91, 90, 0, 87, 0, 146, 90, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Background + Embelishments", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 232, 0, 227, 309, 309, 309, 309, 309, 309, 232, 0, 227, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 174, 176, 0, 0, 227, 309, 309, 309, 309, 0, 0, 0, 227, 309, 309, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 227, 309, 281, 202, 204, 176, 0, 0, 309, 309, 309, 309, 0, 0, 0, 171, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 309, 281, 204, 176, 0, 227, 309, 309, 309, 172, 173, 174, 199, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 281, 204, 174, 174, 309, 309, 310, 200, 201, 202, 356, 309, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 281, 202, 202, 356, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 309, 309, 309, 309, 309, 309, 309, 0, 0, 0, 0, 0, 0, 260, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 288, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 309, 309, 309, 309, 309, 0, 0, 0, 0, 0, 0, 0, 316, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 10, 0, 0, 0, 0, 0, 0, 0, 316, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 38, 0, 0, 0, 0, 0, 0, 0, 316, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 0, 309, 309, 309, 309, 66, 173, 174, 175, 172, 173, 172, 173, 319, 318, 172, 173, 172, 173, 172, 173, 174, 175, 172, 173, 172, 173, 260, 260, 261, 175, 309, 309, 309, 309, 200, 201, 202, 203, 200, 201, 200, 201, 356, 310, 200, 201, 200, 201, 200, 201, 202, 203, 200, 201, 200, 201, 200, 200, 201, 203, 329, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309], + "height":20, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Point locations", + "objects":[ + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":176, + "y":120 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":48, + "y":120 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":4, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-4.tmx b/examples/the-hat-chooses-the-wizard/map/1-4.tmx new file mode 100644 index 00000000..e6c02d63 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-4.tmx @@ -0,0 +1,63 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,92,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0, +0,0,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0, +0,0,92,90,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,306,0,0,335,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,363,362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,29,30,31,32,33,34,35,36,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,57,58,59,60,61,62,63,64,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,89,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,333,334,0,0,0,0,0,0,116,117,0,0,0,0,0,118,0,0,224,0,0,0, +0,0,0,0,92,92,85,86,361,362,0,0,0,0,91,91,144,145,91,90,0,87,0,146,90,0,252,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,232,0,227,309,309,309,309, +309,309,232,0,227,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,174,176,0,0,227,309,309, +309,309,0,0,0,227,309,309,309,309,309,309,309,232,0,0,0,0,0,0,227,309,281,202,204,176,0,0,309,309, +309,309,0,0,0,171,309,309,309,309,309,232,0,0,0,0,0,0,0,0,0,0,227,309,281,204,176,0,227,309, +309,309,172,173,174,199,309,309,309,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,281,204,174,174,309, +309,310,200,201,202,356,309,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,281,202,202,356, +309,309,309,309,309,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309,309,309, +309,309,309,309,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,309,309,309, +309,309,309,309,0,0,0,0,0,0,260,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309,309, +309,309,309,232,0,0,0,0,0,0,288,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,309,309, +309,309,309,0,0,0,0,0,0,0,316,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309, +309,309,232,0,0,0,0,0,0,0,319,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309, +309,309,10,0,0,0,0,0,0,0,316,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309, +309,309,38,0,0,0,0,0,0,0,316,318,0,0,0,0,0,0,0,0,0,0,0,0,0,148,148,0,309,309, +309,309,66,173,174,175,172,173,172,173,319,318,172,173,172,173,172,173,174,175,172,173,172,173,260,260,261,175,309,309, +309,309,200,201,202,203,200,201,200,201,356,310,200,201,200,201,200,201,202,203,200,201,200,201,200,200,201,203,329,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309 + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-5.json b/examples/the-hat-chooses-the-wizard/map/1-5.json new file mode 100644 index 00000000..c2cc9e50 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-5.json @@ -0,0 +1,103 @@ +{ "compressionlevel":-1, + "height":80, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 118, 0, 0, 118, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 92, 92, 146, 92, 92, 146, 92, 92, 92, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 144, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 92, 363, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 230, 229, 229, 229, 229, 230, 0, 115, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 230, 230, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 229, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 0, 0, 0, 92, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 349, 350, 351, 352, 353, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 165, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":80, + "id":2, + "name":"Background", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 252, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 172, 173, 172, 173, 174, 175, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 200, 201, 200, 201, 202, 203, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 230, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 229, 230, 230, 230, 318, 171, 172, 173, 174, 171, 172, 173, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 310, 203, 200, 201, 202, 203, 201, 202, 203, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 230, 229, 229, 229, 229, 229, 229, 229, 229, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 176, 0, 171, 175, 172, 173, 174, 175, 175, 173, 174, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 204, 0, 199, 203, 200, 201, 202, 203, 203, 201, 202, 201, 202, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 228, 228, 232, 0, 227, 228, 228, 228, 229, 230, 231, 230, 230, 230, 230, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 231, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 232, 0, 0, 0, 0, 0, 171, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 172, 173, 174, 175, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 200, 201, 202, 203, 356, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 176, 0, 0, 0, 0, 171, 173, 174, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 204, 0, 0, 0, 0, 199, 201, 202, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 232, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 228, 232, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 319, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 356, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285], + "height":80, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Points", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":64, + "y":576 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":120, + "y":248 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":176, + "y":248 + }, + { + "height":0, + "id":5, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":176, + "y":248 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":6, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-5.tmx b/examples/the-hat-chooses-the-wizard/map/1-5.tmx new file mode 100644 index 00000000..3b6cb993 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-5.tmx @@ -0,0 +1,189 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,114,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,85,86,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,114,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,85,86,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,91,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,0, +0,0,0,118,0,0,118,0,0,118,0,0,0,0,0,29,30,31,32,33,34,35,36,0,0,0,0,0,0,0, +0,0,0,146,92,92,146,92,92,146,92,92,92,0,0,57,58,59,60,61,62,63,64,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,89,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,144,145,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,335,336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,114,0,92,363,364,0,0,0,0,0,0,0,0,0,113,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,229,230,229,229,229,229,230, +0,115,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,229,230,230,229,230, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,229,230,230, +0,0,0,0,0,0,0,0,0,0,13,14,15,16,17,18,19,20,21,0,0,0,0,0,0,227,229,229,229,230, +0,0,0,0,0,0,0,0,39,40,41,42,43,44,45,46,47,48,49,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,67,68,69,70,71,72,73,74,75,76,77,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,93,94,95,96,97,98,99,100,101,102,103,104,105,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,121,122,123,124,125,126,127,128,129,130,131,132,133,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,149,150,151,152,153,154,155,156,157,158,159,160,161,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,177,178,179,180,181,182,183,184,185,186,187,188,189,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,206,207,208,209,210,211,212,213,214,215,216,217,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,234,235,236,237,238,239,240,241,242,243,244,245,0,0,0,0,118,0,0,0,0,0,0, +0,0,0,0,0,0,0,262,263,264,265,266,267,268,269,270,271,0,0,0,92,0,0,146,0,0,0,0,0,0, +0,0,0,0,0,0,0,290,291,292,293,294,295,296,297,298,299,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,321,322,323,324,325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,92,0,349,350,351,352,353,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,91,0,0,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,90,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,137,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,113,0,165,362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,252,175,176,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0, +0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0, +0,0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,171,172,172,173,172,173,174,175,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,199,200,200,201,200,201,202,203,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,319,229,230,230,230,230,230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,227,228,229,230,231,229,230,230,230,318,171,172,173,174,171,172,173,171,172,173,174,175,176,0,0,0,0, +0,0,0,0,0,0,0,0,227,230,230,230,310,203,200,201,202,203,201,202,203,200,201,202,203,204,0,0,0,0, +0,0,0,0,0,0,0,0,0,227,229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,232,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,227,229,230,230,230,230,230,230,230,230,230,230,229,230,232,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,227,229,230,229,229,229,229,229,229,229,229,230,232,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,171,172,173,174,175,172,173,176,0,171,175,172,173,174,175,175,173,174,173,174,175, +0,0,0,0,0,0,0,0,0,199,200,201,202,203,200,201,204,0,199,203,200,201,202,203,203,201,202,201,202,203, +0,0,0,0,0,0,0,0,0,227,228,229,230,231,228,228,232,0,227,228,228,228,229,230,231,230,230,230,230,231, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +173,172,173,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +201,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +230,231,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,171,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,199,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,227,232,0,0,0,0,0,171,176,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,204,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,232,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,174,175,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,201,202,204,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,230,230,230,318,0,0,0,0,0, +0,0,0,0,0,171,172,173,174,175,172,173,174,175,172,173,172,173,174,175,319,230,230,230,318,0,0,0,0,0, +0,0,0,0,0,199,200,201,202,203,200,201,202,203,200,201,200,201,202,203,356,230,230,230,318,0,0,0,0,0, +0,0,0,0,0,227,228,229,230,231,231,231,231,231,231,231,231,231,231,231,230,230,230,230,232,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,171,172,173,176,0,0,0,0,171,173,174,261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,199,200,201,204,0,0,0,0,199,201,202,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,227,229,229,232,0,0,0,0,319,229,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,319,229,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,319,229,229,318,0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,227,228,228,232,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,229,318,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,319,229,229,229,229,318,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,356,229,229,229,229,318,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,230,230,232,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-6.json b/examples/the-hat-chooses-the-wizard/map/1-6.json new file mode 100644 index 00000000..921ca076 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-6.json @@ -0,0 +1,103 @@ +{ "compressionlevel":-1, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 0, 0, 0, 118, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 92, 146, 114, 92, 146, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 113, 175, 0, 0, 90, 0, 85, 86, 90, 0, 252, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Embellishments", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 228, 229, 230, 230, 230, 232, 0, 227, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 228, 229, 230, 230, 230, 230, 230, 230, 230, 228, 229, 230, 232, 0, 0, 0, 0, 227, 309, 309, 309, 309, 309, 309, 309, 309, 309, 232, 0, 0, 0, 227, 229, 228, 229, 230, 229, 228, 228, 229, 229, 318, 0, 0, 0, 0, 0, 0, 227, 309, 309, 309, 309, 309, 309, 309, 232, 0, 0, 0, 0, 0, 227, 228, 229, 230, 230, 230, 230, 231, 319, 318, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 309, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 309, 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 319, 318, 172, 173, 174, 175, 173, 174, 175, 309, 309, 309, 309, 309, 309, 309, 0, 0, 0, 0, 0, 0, 0, 0, 199, 204, 0, 0, 0, 0, 319, 310, 200, 201, 202, 203, 201, 202, 203, 356, 309, 309, 309, 309, 309, 229, 173, 174, 283, 172, 176, 0, 0, 0, 319, 318, 0, 0, 0, 0, 227, 229, 228, 229, 230, 231, 229, 230, 231, 309, 309, 309, 309, 309, 309, 281, 201, 202, 203, 200, 204, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 309, 309, 309, 309, 309, 229, 229, 229, 229, 318, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 309, 229, 229, 229, 229, 318, 0, 0, 0, 227, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 309, 309, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 309, 309, 309, 229, 229, 229, 229, 229, 229, 229, 318, 172, 173, 174, 175, 176, 0, 0, 173, 174, 175, 176, 171, 172, 173, 174, 175, 176, 261, 309, 309, 309, 309, 229, 229, 229, 229, 229, 229, 229, 310, 200, 202, 203, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 201, 329, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309], + "height":20, + "id":1, + "name":"Background", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Positions", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":96, + "y":112 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":88, + "y":112 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":104, + "y":112 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":48, + "y":72 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":6, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-6.tmx b/examples/the-hat-chooses-the-wizard/map/1-6.tmx new file mode 100644 index 00000000..ff812e81 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-6.tmx @@ -0,0 +1,69 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,0,0,0,118,0,0,118,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,92,146,114,92,146,87,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,92,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,172,0,113,175,0,0,90,0,85,86,90,0,252,92,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,228,229,230,230,230,232,0,227,309,309,309,309,309, +309,309,309,309,309,309,309,309,228,229,230,230,230,230,230,230,230,228,229,230,232,0,0,0,0,227,309,309,309,309, +309,309,309,309,309,232,0,0,0,227,229,228,229,230,229,228,228,229,229,318,0,0,0,0,0,0,227,309,309,309, +309,309,309,309,232,0,0,0,0,0,227,228,229,230,230,230,230,231,319,318,0,0,0,0,0,0,0,309,309,309, +309,309,309,309,0,0,0,0,0,0,0,0,256,257,0,0,0,0,319,318,0,0,0,0,0,0,0,309,309,309, +309,309,309,309,0,0,0,0,0,0,0,0,284,285,0,0,0,0,319,318,172,173,174,175,173,174,175,309,309,309, +309,309,309,309,0,0,0,0,0,0,0,0,199,204,0,0,0,0,319,310,200,201,202,203,201,202,203,356,309,309, +309,309,309,229,173,174,283,172,176,0,0,0,319,318,0,0,0,0,227,229,228,229,230,231,229,230,231,309,309,309, +309,309,309,281,201,202,203,200,204,0,0,0,319,318,0,0,0,0,0,0,0,0,0,227,229,229,229,229,229,309, +309,309,309,309,229,229,229,229,318,0,0,0,319,318,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309,309, +309,309,309,309,229,229,229,229,318,0,0,0,227,232,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309,309, +309,309,309,229,229,229,229,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,309,309, +309,229,229,229,229,229,229,229,318,172,173,174,175,176,0,0,173,174,175,176,171,172,173,174,175,176,261,309,309,309, +309,229,229,229,229,229,229,229,310,200,202,203,202,203,200,201,202,203,200,201,202,203,200,201,202,203,201,329,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309, +309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-7.json b/examples/the-hat-chooses-the-wizard/map/1-7.json new file mode 100644 index 00000000..e7a76b59 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-7.json @@ -0,0 +1,103 @@ +{ "compressionlevel":-1, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 90, 146, 113, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 307, 140, 0, 0, 0, 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 91, 0, 0, 0, 113, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":1, + "name":"Embelishments", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 229, 229, 229, 229, 230, 253, 0, 0, 0, 0, 227, 230, 229, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 232, 0, 229, 229, 229, 229, 253, 0, 0, 0, 0, 0, 319, 229, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 141, 0, 0, 0, 229, 229, 230, 225, 0, 0, 0, 0, 0, 319, 229, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 0, 0, 0, 0, 229, 229, 253, 172, 173, 174, 175, 175, 301, 229, 230, 230, 0, 0, 0, 0, 0, 0, 171, 173, 174, 175, 0, 0, 199, 204, 0, 0, 0, 0, 0, 230, 310, 200, 201, 202, 203, 203, 356, 229, 230, 230, 0, 0, 0, 0, 0, 172, 199, 202, 203, 204, 0, 0, 319, 318, 0, 0, 0, 0, 0, 229, 229, 230, 230, 230, 230, 230, 230, 229, 229, 0, 0, 0, 0, 0, 0, 199, 356, 230, 231, 318, 0, 0, 319, 318, 0, 0, 0, 0, 0, 229, 229, 229, 230, 230, 230, 230, 230, 229, 229, 0, 0, 0, 0, 0, 0, 227, 229, 230, 231, 232, 0, 0, 319, 318, 0, 0, 0, 0, 0, 229, 229, 229, 230, 230, 230, 230, 230, 229, 229, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 227, 229, 229, 230, 230, 230, 230, 230, 229, 229, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 319, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 230, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 199, 200, 356, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 230, 230, 310, 311, 283, 0, 0, 0, 0, 0, 0, 227, 228, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 230, 230, 230, 230, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 230, 230, 230, 230, 230, 229, 229, 230, 230, 230, 230, 310, 311, 283, 172, 173, 174, 175, 175, 172, 173, 174, 175, 172, 173, 172, 172, 173, 252, 175, 230, 230, 230, 230, 230, 229, 229, 230, 230, 230, 230, 230, 310, 201, 200, 201, 202, 203, 203, 200, 201, 202, 203, 203, 200, 201, 202, 200, 201, 202, 329, 230, 230, 230, 230, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229], + "height":20, + "id":2, + "name":"Background", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Object Layer 1", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":104, + "y":120 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":96, + "y":120 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":120, + "y":120 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":80, + "y":40 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":5, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-7.tmx b/examples/the-hat-chooses-the-wizard/map/1-7.tmx new file mode 100644 index 00000000..dbb8fc84 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-7.tmx @@ -0,0 +1,69 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,118,0,0,0,0, +0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,146,90,146,113,92,0,0, +0,0,0,0,0,0,0,0,0,146,0,0,307,140,0,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,92,0,0,0,0,0,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,85,86,0,0,0,0,0,91,0,0,0,113,0,0,0,91,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,230,230,230,230,0,0,0,0,0,0,0,0,230,230,230,230,229,229,229,229,230,253,0,0,0,0,227,230,229, +230,230,230,0,0,0,0,0,0,0,0,0,0,227,230,230,232,0,229,229,229,229,253,0,0,0,0,0,319,229, +230,230,0,0,0,0,0,0,0,0,0,0,0,0,141,141,0,0,0,229,229,230,225,0,0,0,0,0,319,229, +230,230,0,0,0,0,0,0,0,0,0,0,0,0,142,142,0,0,0,0,229,229,253,172,173,174,175,175,301,229, +230,230,0,0,0,0,0,0,171,173,174,175,0,0,199,204,0,0,0,0,0,230,310,200,201,202,203,203,356,229, +230,230,0,0,0,0,0,172,199,202,203,204,0,0,319,318,0,0,0,0,0,229,229,230,230,230,230,230,230,229, +229,0,0,0,0,0,0,199,356,230,231,318,0,0,319,318,0,0,0,0,0,229,229,229,230,230,230,230,230,229, +229,0,0,0,0,0,0,227,229,230,231,232,0,0,319,318,0,0,0,0,0,229,229,229,230,230,230,230,230,229, +229,172,0,0,0,0,0,0,0,0,0,0,0,0,319,318,0,0,0,0,0,227,229,229,230,230,230,230,230,229, +229,282,283,0,0,0,0,0,0,0,0,0,0,0,319,318,0,0,0,0,0,0,0,0,230,230,230,230,230,229, +229,310,311,283,0,0,0,0,0,0,0,0,171,172,319,318,0,0,0,0,0,0,0,0,230,230,230,230,230,229, +229,230,310,311,283,0,0,0,0,0,0,0,199,200,356,318,0,0,0,0,0,0,0,0,230,230,230,230,230,229, +229,230,230,310,311,283,0,0,0,0,0,0,227,228,230,232,0,0,0,0,0,0,0,0,230,230,230,230,230,229, +229,230,230,230,230,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,230,230,230,230,230,229, +229,230,230,230,230,310,311,283,172,173,174,175,175,172,173,174,175,172,173,172,172,173,252,175,230,230,230,230,230,229, +229,230,230,230,230,230,310,201,200,201,202,203,203,200,201,202,203,203,200,201,202,200,201,202,329,230,230,230,230,229, +229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,229, +229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/1-8.json b/examples/the-hat-chooses-the-wizard/map/1-8.json new file mode 100644 index 00000000..640a2b4d --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-8.json @@ -0,0 +1,111 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"1-8.json" + } + }, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 114, 0, 90, 92, 92, 92, 115, 0, 90, 91, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"back", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 261, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 289, 261, 118, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 289, 146, 0, 260, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 289, 172, 288, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 310, 200, 356, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 319, 229, 318, 172, 173, 174, 175, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 356, 229, 310, 200, 201, 202, 203, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 173, 174, 175, 172, 173, 174, 175, 174, 319, 230, 229, 229, 230, 230, 229, 229, 230, 318, 172, 173, 174, 173, 174, 175, 172, 173, 174, 174, 175, 199, 201, 202, 203, 200, 201, 202, 203, 202, 356, 230, 229, 230, 230, 230, 230, 230, 230, 310, 200, 201, 202, 201, 202, 203, 200, 201, 202, 202, 203, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 171, 230, 229, 229, 228, 229, 230, 231, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 232, 173, 174, 175, 173, 174, 175, 172, 172, 173, 174, 175, 199, 229, 230, 231, 228, 229, 230, 231, 228, 228, 228, 228, 228, 228, 228, 228, 228, 310, 200, 201, 202, 203, 201, 202, 203, 200, 200, 201, 202, 203, 329, 229, 230, 231, 228, 229, 230, 231, 228, 229, 230, 231, 231, 231, 231, 231, 231, 228, 228, 229, 230, 231, 231, 231, 231, 231, 231, 231, 229, 230, 231, 231, 231, 231], + "height":20, + "id":1, + "name":"world", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"objs", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":116, + "y":112 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":108, + "y":112 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":124, + "y":112 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":32, + "y":96 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":5, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/1-8.tmx b/examples/the-hat-chooses-the-wizard/map/1-8.tmx new file mode 100644 index 00000000..fd87c075 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/1-8.tmx @@ -0,0 +1,69 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,0,0,0,227,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,280,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,114,0,90,92,92,92,115,0,90,91,115,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,261,0,0,0,0,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,289,261,118,0,0,229, +229,229,229,229,229,229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,227,229,229,229,229,289,146,0,260,229, +229,229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,289,172,288,229, +229,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,310,200,356,229, +229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,229, +229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,229,229,229, +229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229, +229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319, +229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,319, +229,318,172,173,174,175,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,356, +229,310,200,201,202,203,203,204,0,0,0,0,0,0,0,0,0,0,0,171,173,174,175,172,173,174,175,174,319,230, +229,229,230,230,229,229,230,318,172,173,174,173,174,175,172,173,174,174,175,199,201,202,203,200,201,202,203,202,356,230, +229,230,230,230,230,230,230,310,200,201,202,201,202,203,200,201,202,202,203,356,229,229,229,229,229,229,229,229,229,229, +229,229,230,229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,232,0,0,0,171,230,229,229, +228,229,230,231,228,228,228,228,228,228,228,228,228,228,232,173,174,175,173,174,175,172,172,173,174,175,199,229,230,231, +228,229,230,231,228,228,228,228,228,228,228,228,228,310,200,201,202,203,201,202,203,200,200,201,202,203,329,229,230,231, +228,229,230,231,228,229,230,231,231,231,231,231,231,228,228,229,230,231,231,231,231,231,231,231,229,230,231,231,231,231 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/2-1.json b/examples/the-hat-chooses-the-wizard/map/2-1.json new file mode 100644 index 00000000..534974a3 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-1.json @@ -0,0 +1,199 @@ +{ "compressionlevel":-1, + "height":60, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 90, 0, 92, 87, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 0, 90, 0, 146, 0, 90, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 146, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, 92, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 224, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 144, 145, 0, 0, 0, 0, 252, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":60, + "id":1, + "name":"Extras", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 171, 172, 173, 174, 175, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 281, 201, 202, 200, 201, 202, 203, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 0, 0, 227, 229, 229, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 227, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 118, 0, 0, 0, 227, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 229, 229, 229, 229, 229, 229, 229, 146, 90, 90, 90, 113, 229, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 172, 173, 174, 175, 176, 328, 329, 229, 229, 229, 229, 229, 310, 200, 200, 201, 202, 203, 329, 0, 0, 0, 0, 0, 199, 201, 202, 203, 201, 202, 203, 200, 201, 202, 203, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 174, 175, 0, 0, 0, 0, 0, 172, 172, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 171, 172, 173, 174, 175, 176, 176, 288, 289, 0, 0, 0, 0, 0, 288, 201, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 281, 200, 201, 202, 203, 201, 202, 203, 329, 317, 0, 0, 0, 0, 172, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 172, 355, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 355, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 355, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 171, 172, 173, 0, 0, 0, 0, 0, 0, 355, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 199, 201, 197, 171, 172, 173, 174, 175, 176, 319, 229, 229, 229, 229, 229, 256, 257, 257, 258, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 227, 229, 281, 201, 201, 202, 203, 202, 203, 329, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 256, 257, 257, 257, 258, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 172, 0, 0, 0, 0, 0, 0, 0, 87, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 172, 172, 0, 0, 0, 229, 229, 229, 229, 204, 172, 0, 0, 0, 0, 0, 0, 199, 229, 229, 229, 229, 171, 0, 286, 0, 173, 174, 175, 176, 199, 204, 0, 0, 0, 0, 229, 229, 229, 281, 204, 172, 172, 0, 0, 0, 0, 316, 229, 229, 229, 281, 200, 201, 202, 203, 200, 201, 202, 203, 329, 318, 0, 0, 0, 0, 229, 229, 229, 229, 281, 200, 204, 173, 91, 92, 87, 316, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 281, 200, 201, 202, 203, 329, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 172, 171, 172, 173, 174, 175, 176, 173, 174, 175, 176, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 200, 201, 202, 203, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 281, 204, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 311, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 355, 329, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 253, 171, 172, 171, 172, 173, 174, 0, 0, 0, 0, 172, 173, 174, 355, 329, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 281, 200, 201, 202, 203, 203, 204, 171, 172, 173, 174, 199, 202, 203, 356, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 310, 200, 201, 202, 203, 329, 229, 229, 229, 229, 229, 229, 229, 229, 229], + "height":60, + "id":2, + "name":"Map", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Positions", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":88, + "y":56 + }, + { + "height":0, + "id":43, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":136, + "y":120 + }, + { + "height":0, + "id":44, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":72, + "y":168 + }, + { + "height":0, + "id":45, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":96, + "y":224 + }, + { + "height":0, + "id":46, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":40, + "y":288 + }, + { + "height":0, + "id":47, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":96, + "y":336 + }, + { + "height":0, + "id":48, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":56, + "y":336 + }, + { + "height":0, + "id":49, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":96, + "y":456 + }, + { + "height":0, + "id":50, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":128, + "y":456 + }, + { + "height":0, + "id":51, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":168, + "y":288 + }, + { + "height":0, + "id":52, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":176, + "y":288 + }, + { + "height":0, + "id":54, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":24, + "y":288 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":56, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":30 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/2-1.tmx b/examples/the-hat-chooses-the-wizard/map/2-1.tmx new file mode 100644 index 00000000..6d531dcf --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-1.tmx @@ -0,0 +1,173 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,85,86,0,90,0,92,87,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,113,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,91,0,90,0,146,0,90,92,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,118,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,114,0,0,146,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,87,90,90,90,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,284,285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,92,92,92,92,92,92,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,146,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,29,30,31,32,33,34,35,36,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,57,58,59,60,61,62,63,64,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,89,0,0,0,0,0,0,0,0,113,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,117,0,0,0,0,224,0,118,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,92,92,92,92,144,145,0,0,0,0,252,0,146,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,0,0,0,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,171,172,173,174,175,171,172,173,174,175,176,0,0,0,0,0,0,229,229,229,229,229,229,229, +229,229,229,229,229,281,201,202,200,201,202,203,200,201,202,203,204,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,230,230,229,229,229,229,229,232,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,229,229,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,229,229,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,0,0,227,229,229,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,0,0,0,227,229,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,118,0,0,0,227,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,229,229,229,229,229,229, +229,146,90,90,90,113,229,0,0,0,0,0,171,172,173,174,175,176,172,173,174,175,176,328,329,229,229,229,229,229, +310,200,200,201,202,203,329,0,0,0,0,0,199,201,202,203,201,202,203,200,201,202,203,356,229,229,229,229,229,229, +229,229,229,229,229,229,229,0,0,0,0,0,227,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,288,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,0,0,0,0,0,0,174,175,0,0,0,0,0,172,172,319,229,229,229,229,229,229,229,229, +229,229,229,229,229,171,172,173,174,175,176,176,288,289,0,0,0,0,0,288,201,356,229,229,229,229,229,229,229,229, +229,229,229,229,281,200,201,202,203,201,202,203,329,317,0,0,0,0,172,319,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,232,0,0,0,172,355,356,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,172,355,356,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,355,356,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,172,319,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,0,0,0,0,171,172,173,0,0,0,0,0,0,355,356,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,0,0,0,0,199,201,197,171,172,173,174,175,176,319,229,229,229,229,229,256,257,257,258,229,229,229,229,229, +229,229,0,0,0,0,227,229,281,201,201,202,203,202,203,329,229,229,229,0,0,0,0,0,0,0,229,229,229,229, +229,0,0,0,0,0,0,0,256,257,257,257,258,230,229,229,229,229,0,0,0,0,0,0,0,0,0,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,0,0,0,0,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,0,0,0,0,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,0,0,0,0,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,172,0,0,0,0,0,0,0,87,229,229,229, +229,0,0,0,0,0,0,0,0,172,172,0,0,0,229,229,229,229,204,172,0,0,0,0,0,0,199,229,229,229, +229,171,0,286,0,173,174,175,176,199,204,0,0,0,0,229,229,229,281,204,172,172,0,0,0,0,316,229,229,229, +281,200,201,202,203,200,201,202,203,329,318,0,0,0,0,229,229,229,229,281,200,204,173,91,92,87,316,229,229,229, +229,229,229,229,229,229,229,229,229,229,232,0,0,0,0,0,229,229,229,229,229,281,200,201,202,203,329,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229,229,229,229, +229,0,0,0,0,0,0,172,171,172,173,174,175,176,173,174,175,176,229,229,229,229,229,229,229,229,229,229,229,229, +229,0,0,0,0,0,0,199,200,201,202,203,200,201,200,201,202,203,229,229,229,229,229,229,229,229,229,229,229,229, +229,0,0,0,0,0,0,227,228,229,230,231,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229,229,229, +281,204,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229, +229,310,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229,229, +229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229, +229,229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229,229, +229,229,229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229,229, +229,229,229,229,229,229,229,310,311,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229, +229,229,229,229,229,229,229,229,310,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,225,0,0,0,0,0,0,0,0,0,0,0,0,0,174,355,329,229,229,229,229, +229,229,229,229,229,229,229,229,229,253,171,172,171,172,173,174,0,0,0,0,172,173,174,355,329,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,281,200,201,202,203,203,204,171,172,173,174,199,202,203,356,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,310,200,201,202,203,329,229,229,229,229,229,229,229,229,229 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/2-2.json b/examples/the-hat-chooses-the-wizard/map/2-2.json new file mode 100644 index 00000000..c06e2b28 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-2.json @@ -0,0 +1,111 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"2-2.json" + } + }, + "height":30, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 146, 87, 146, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 91, 114, 146, 91, 91, 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 114, 0, 0, 0, 252, 90, 90, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 87, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 146, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 146, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 87, 87, 90, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 202, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 113, 0, 0, 0, 113, 113, 113, 113, 113, 113, 0, 0, 0, 0, 0, 92, 90, 90, 92, 146, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 90, 146, 92, 92, 87, 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":30, + "id":2, + "name":"Backdrop", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":96, + "x":0, + "y":0 + }, + { + "data":[229, 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 230, 230, 230, 230, 230, 230, 230, 230, 230, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 227, 228, 228, 228, 230, 230, 230, 232, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 227, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 51, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 310, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 171, 172, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 174, 175, 229, 229, 229, 229, 0, 0, 0, 0, 0, 199, 200, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 0, 0, 0, 0, 0, 0, 171, 172, 173, 172, 176, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 202, 203, 356, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 204, 0, 0, 0, 0, 0, 0, 199, 200, 201, 200, 204, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 79, 0, 171, 172, 173, 174, 175, 172, 173, 174, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 174, 175, 172, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 318, 172, 173, 174, 172, 173, 174, 172, 173, 174, 172, 173, 172, 173, 176, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 79, 0, 199, 200, 201, 202, 203, 200, 201, 202, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 202, 203, 200, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 310, 200, 201, 202, 200, 201, 202, 200, 201, 202, 200, 201, 200, 201, 204, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 229, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 318, 172, 173, 176, 0, 171, 174, 175, 319, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 173, 174, 175, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 310, 200, 201, 204, 0, 199, 202, 203, 356, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 232, 0, 0, 227, 229, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 232, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 310, 201, 202, 203, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 318, 0, 319, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 232, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 230, 230, 230, 229, 230, 232, 0, 0, 0, 0, 0, 0, 0, 229, 229, 229, 229, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 230, 230, 232, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 318, 0, 227, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 232, 0, 0, 0, 171, 173, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 229, 232, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 230, 232, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 227, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 201, 356, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 230, 0, 91, 91, 91, 91, 91, 91, 0, 227, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 227, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 229, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 230, 0, 0, 174, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 175, 176, 0, 0, 0, 0, 0, 0, 0, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 229, 0, 0, 0, 0, 0, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 229, 229, 229, 229, 0, 0, 0, 0, 171, 172, 173, 174, 173, 174, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 229, 230, 174, 175, 176, 0, 0, 0, 171, 172, 172, 173, 174, 175, 199, 200, 203, 204, 172, 173, 174, 172, 173, 174, 175, 230, 318, 0, 0, 0, 0, 0, 0, 0, 319, 229, 0, 0, 0, 0, 0, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 229, 229, 229, 229, 172, 173, 174, 175, 199, 200, 201, 202, 201, 202, 201, 202, 203, 204, 174, 175, 172, 173, 174, 175, 172, 173, 319, 229, 229, 229, 310, 202, 203, 204, 173, 174, 175, 199, 200, 200, 201, 202, 203, 356, 230, 230, 310, 200, 201, 202, 200, 201, 202, 203, 356, 318, 0, 0, 0, 0, 0, 0, 0, 319, 229, 0, 0, 0, 0, 0, 229, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 229, 230, 231, 310, 200, 201, 202, 203, 356, 229, 229, 229, 229, 229, 229, 229, 230, 310, 202, 203, 200, 201, 202, 203, 200, 201, 356, 229, 229, 229, 230, 230, 230, 310, 201, 202, 203, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 318, 284, 285, 285, 285, 285, 285, 285, 319, 229, 0, 0, 0, 0, 0, 229, 318, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 230, 230, 230, 230], + "height":30, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":96, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Objs", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":48, + "y":64 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":408, + "y":96 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":400, + "y":96 + }, + { + "height":0, + "id":5, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":416, + "y":96 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":7, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":96 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/2-2.tmx b/examples/the-hat-chooses-the-wizard/map/2-2.tmx new file mode 100644 index 00000000..1725ca97 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-2.tmx @@ -0,0 +1,89 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,115,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,146,87,146,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,91,91,114,146,91,91,91,91,0,0,0,0,0,0,0,0,0,0,0,114,114,0,0,0,252,90,90,252,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,92,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,146,87,90,90,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,146,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,146,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,87,87,90,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,199,202,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,38,0,0,0,92,92,92,92,92,92,92,92,92,92,0,0,118,0,0,0,0,0,0,0,0,0,0,113,113,113,0,0,0,113,113,113,113,113,113,0,0,0,0,0,92,90,90,92,146,115,0,0,0,0,0,0,0,0,0,0,0,0,319,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,66,90,90,0,0,0,0,0,0,0,0,0,0,0,92,90,146,92,92,87,87,87,0,0,0,0,0,0,0,0,113,113,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +229,229,229,229,229,229,229,229,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,230,230,230,230,230,230,230,230,230,228,228,228,228,228,228,228,228,228,228,228,228,228,228,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,232,0,0,0,0,0,227,228,228,228,230,230,230,232,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,232,0,0,227,230,230,230,230,230,230,232,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,232,0,0,0,0,0,0,0,0,227,229,230,230,230,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,232,0,0,0,0,230,230,230,230,230,232,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,51,284,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,227,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,173,174,175,176,0,0,0,0,0,0,0,0,0,229,229,229,229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,229,229,229,229,229,229,229,229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,310,201,202,203,204,0,0,0,0,0,0,0,0,0,229,229,229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,230,230,230,318,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,230,230,230,232,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,171,172,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,171,172,174,175,229,229,229,229,0,0,0,0,0,199,200,203,204,0,0,0,0,0,0,0,0,0,0,171,172,173,174,175,0,0,0,0,0,0,171,172,173,172,176,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,199,200,202,203,356,229,229,229,0,0,0,0,0,319,229,229,318,0,0,0,0,0,0,0,0,0,0,199,200,201,202,204,0,0,0,0,0,0,199,200,201,200,204,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,319,230,230,230,229,229,229,229,0,0,0,0,0,319,229,229,318,0,0,0,0,0,0,0,0,0,0,227,229,229,229,232,0,0,0,0,0,0,319,230,230,230,318,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,227,230,230,230,229,229,229,229,0,0,0,0,0,319,229,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,230,230,230,318,0,0,0,0,0,79,0,171,172,173,174,175,172,173,174,176,0,0,0,0,0,0,0,0,0,171,172,173,174,175,172,173,174,175,172,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,318,172,173,174,172,173,174,172,173,174,172,173,172,173,176,0,0,0,0,0,0,0,319,230,230,230,318,0,0,0,0,0,79,0,199,200,201,202,203,200,201,202,204,0,0,0,0,0,0,0,0,0,199,200,201,202,203,200,201,202,203,200,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,310,200,201,202,200,201,202,200,201,202,200,201,200,201,204,0,0,0,0,0,0,0,319,230,230,230,318,0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,318,0,0,0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,229,231,231,231,231,231,231,231,231,231,231,231,231,231,318,172,173,176,0,171,174,175,319,230,230,230,318,0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,318,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +229,229,229,229,173,174,175,174,175,176,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,229,230,230,230,230,230,230,230,230,230,230,230,230,230,310,200,201,204,0,199,202,203,356,230,230,230,318,0,0,0,0,0,0,0,319,230,232,0,0,227,229,230,318,0,0,0,0,0,0,0,0,0,0,230,230,230,232,0,0,227,230,230,230,230,230,230,230, +229,229,229,310,201,202,203,202,203,204,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,229,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,318,0,319,230,230,230,230,230,230,318,0,0,0,0,0,0,0,319,230,0,0,0,0,0,230,318,0,0,0,0,0,0,0,0,0,0,230,230,232,0,0,0,0,230,230,230,230,230,230,230, +229,229,229,229,230,230,230,229,230,232,0,0,0,0,0,0,0,229,229,229,229,0,0,0,0,0,319,229,229,229,230,230,230,232,0,0,0,0,227,230,230,230,230,230,230,230,318,0,227,230,230,230,230,230,230,318,0,0,0,0,0,0,0,319,230,0,0,0,0,0,230,318,0,0,0,0,0,0,0,0,0,0,227,232,0,0,0,171,173,230,230,230,230,230,230,230, +229,229,229,229,230,230,230,232,0,0,0,0,0,0,0,0,0,227,229,229,232,0,0,0,0,0,319,229,229,229,230,230,232,0,0,0,0,0,0,227,230,230,230,230,230,230,318,0,0,0,0,227,230,230,230,318,0,0,0,0,0,0,0,319,230,0,0,0,0,0,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,201,356,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,230,230,0,91,91,91,91,91,91,0,227,230,230,230,230,230,232,0,0,0,0,0,227,230,230,318,0,0,0,0,0,0,0,319,230,0,0,0,0,0,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,229,230,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,230,232,0,0,0,0,0,0,0,0,0,227,230,232,0,0,0,0,0,0,0,0,0,230,230,318,0,0,0,0,0,0,0,319,230,0,0,0,0,0,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,318,0,0,0,0,0,0,0,319,230,0,0,174,0,0,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230, +229,229,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,229,229,230,0,0,0,0,0,0,0,0,0,0,0,0,171,172,175,176,0,0,0,0,0,0,0,230,318,0,0,0,0,0,0,0,319,229,0,0,0,0,0,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230, +229,229,229,229,0,0,0,0,171,172,173,174,173,174,173,174,175,176,0,0,0,0,0,0,0,0,319,229,229,229,230,174,175,176,0,0,0,171,172,172,173,174,175,199,200,203,204,172,173,174,172,173,174,175,230,318,0,0,0,0,0,0,0,319,229,0,0,0,0,0,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230, +229,229,229,229,172,173,174,175,199,200,201,202,201,202,201,202,203,204,174,175,172,173,174,175,172,173,319,229,229,229,310,202,203,204,173,174,175,199,200,200,201,202,203,356,230,230,310,200,201,202,200,201,202,203,356,318,0,0,0,0,0,0,0,319,229,0,0,0,0,0,229,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230, +229,230,231,310,200,201,202,203,356,229,229,229,229,229,229,229,230,310,202,203,200,201,202,203,200,201,356,229,229,229,230,230,230,310,201,202,203,356,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,318,284,285,285,285,285,285,285,319,229,0,0,0,0,0,229,318,284,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,285,286,230,230,230,230 + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/2-3.json b/examples/the-hat-chooses-the-wizard/map/2-3.json new file mode 100644 index 00000000..f5b05187 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-3.json @@ -0,0 +1,187 @@ +{ "compressionlevel":-1, + "height":40, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 351, 352, 353, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":40, + "id":1, + "name":"Extras", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":60, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 87, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 113, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 171, 91, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 257, 258, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 171, 172, 173, 87, 171, 144, 145, 174, 91, 172, 91, 174, 171, 87, 91, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 200, 201, 202, 203, 201, 200, 201, 202, 200, 201, 202, 203, 201, 202, 203, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 87, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 228, 229, 230, 231, 229, 228, 229, 230, 228, 229, 230, 231, 229, 230, 231, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 87, 91, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 91, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, 232, 0, 0, 204, 172, 173, 174, 90, 176, 87, 87, 173, 171, 172, 173, 113, 175, 176, 173, 174, 175, 113, 172, 173, 174, 87, 176, 90, 172, 173, 174, 90, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 229, 230, 231, 228, 229, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 87, 0, 0, 201, 202, 200, 201, 202, 200, 201, 202, 200, 201, 202, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 200, 201, 202, 200, 200, 201, 202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 281, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 355, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 281, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 355, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 281, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 355, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 281, 282, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 355, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 281, 282, 172, 173, 174, 175, 175, 172, 87, 174, 175, 87, 173, 92, 92, 92, 92, 92, 92, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 174, 175, 327, 355, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 309, 310, 200, 201, 202, 203, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 202, 202, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230], + "height":40, + "id":2, + "name":"Map", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":60, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Positions", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":248, + "y":184 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":344, + "y":184 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":216, + "y":272 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":216, + "y":56 + }, + { + "height":0, + "id":6, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":80, + "y":24 + }, + { + "height":0, + "id":7, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":48, + "y":224 + }, + { + "height":0, + "id":8, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":56, + "y":24 + }, + { + "height":0, + "id":9, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":104, + "y":24 + }, + { + "height":0, + "id":10, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":360, + "y":184 + }, + { + "height":0, + "id":11, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":96, + "y":224 + }, + { + "height":0, + "id":12, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":320, + "y":184 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":14, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":60 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/2-3.tmx b/examples/the-hat-chooses-the-wizard/map/2-3.tmx new file mode 100644 index 00000000..ef4e0de7 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-3.tmx @@ -0,0 +1,130 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,12,13,14,15,16,17,18,19,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,40,41,42,43,44,45,46,47,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,68,69,70,71,72,73,74,75,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,95,96,97,98,99,100,101,102,103,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,122,123,124,125,126,127,128,129,130,131,132,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,149,150,151,152,153,154,155,156,157,158,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,178,179,180,181,182,183,184,185,186,187,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,207,208,209,210,211,212,213,214,215,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,235,236,237,238,239,240,241,242,243,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262,263,264,265,266,267,268,269,270,271,272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,291,292,293,294,295,296,297,298,299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,321,322,323,324,325,326,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,352,353,354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,86,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,171,172,173,87,175,176,0,0,0,0,0,0,0,0,0,29,30,31,32,33,34,35,36,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,174,113,176,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,57,58,59,60,61,62,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,88,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,0,0,0,171,91,173,174,175,176, +0,0,0,0,0,0,0,0,256,257,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,257,257,258,0,0,0,0,0,0,199,200,201,202,203,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,174,171,172,173,87,171,144,145,174,91,172,91,174,171,87,91,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,229,230,231,232, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,200,200,201,202,203,201,200,201,202,200,201,202,203,201,202,203,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +171,172,173,87,175,176,0,0,0,0,0,0,0,0,0,0,227,228,228,229,230,231,229,228,229,230,228,229,230,231,229,230,231,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,256,257,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,171,87,91,174,175,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,199,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,227,228,229,230,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,171,172,173,174,91,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,199,200,201,202,203,204,0,0,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,227,228,229,230,231,232,0,0,204,172,173,174,90,176,87,87,173,171,172,173,113,175,176,173,174,175,113,172,173,174,87,176,90,172,173,174,90,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,281,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,228,228,228,228,228,228,228,228,228,228,228,228,228,229,230,231,228,229,230,231,231,231,231,231,231,231,231,231,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,0,0,0,0,87,0,0, +201,202,200,201,202,200,201,202,200,201,202,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,328,200,201,202,200,200,201,202, +230,230,230,230,230,230,230,230,230,230,309,281,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,355,356,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,309,281,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,355,356,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,309,281,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,355,356,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,309,281,282,283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,355,356,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,309,281,282,172,173,174,175,175,172,87,174,175,87,173,92,92,92,92,92,92,172,173,174,175,172,173,174,175,172,173,174,175,327,355,356,230,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,309,310,200,201,202,203,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,203,200,201,202,202,202,356,230,230,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/2-4.json b/examples/the-hat-chooses-the-wizard/map/2-4.json new file mode 100644 index 00000000..f8e97a06 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-4.json @@ -0,0 +1,159 @@ +{ "compressionlevel":-1, + "editorsettings": + { + "export": + { + "format":"json", + "target":"2-4.json" + } + }, + "height":40, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 115, 115, 90, 90, 87, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 113, 0, 92, 0, 0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 90, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 146, 92, 252, 0, 114, 114, 0, 0, 0, 0, 91, 91, 91, 91, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, 0, 91, 91, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 85, 86, 0, 0, 0, 0, 0, 0, 0, 92, 92, 114, 114, 0, 0, 0, 0, 0, 0, 0, 0, 92, 90, 90, 90, 145, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 115, 115, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 92, 0, 90, 90, 0, 92, 87, 87, 0, 0, 90, 90, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":40, + "id":2, + "name":"Backdrop", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":60, + "x":0, + "y":0 + }, + { + "data":[230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 232, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 199, 200, 201, 202, 203, 200, 201, 204, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 356, 230, 230, 230, 230, 230, 230, 310, 204, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 199, 200, 201, 202, 203, 200, 201, 204, 172, 173, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 230, 310, 204, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 199, 200, 356, 230, 230, 230, 230, 230, 230, 310, 200, 201, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 230, 230, 310, 204, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 199, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 310, 204, 172, 173, 174, 175, 176, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 199, 200, 201, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 310, 200, 201, 202, 203, 204, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 229, 176, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 230, 230, 318, 0, 0, 0, 0, 319, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 229, 229, 229, 229, 204, 176, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 229, 232, 0, 0, 0, 0, 319, 229, 229, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 229, 310, 204, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 318, 176, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 310, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 173, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 318, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 201, 204, 176, 0, 0, 0, 0, 0, 0, 0, 171, 230, 230, 310, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 171, 173, 176, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 310, 204, 0, 0, 0, 0, 0, 0, 171, 199, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 172, 173, 174, 175, 172, 173, 174, 319, 229, 229, 172, 173, 174, 175, 172, 199, 201, 204, 172, 173, 176, 0, 0, 0, 0, 0, 319, 230, 230, 318, 176, 0, 0, 0, 0, 171, 199, 356, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 310, 200, 201, 202, 203, 200, 201, 202, 356, 229, 310, 200, 201, 202, 203, 200, 356, 230, 310, 200, 201, 204, 0, 0, 0, 0, 0, 227, 230, 230, 310, 204, 0, 0, 0, 0, 199, 356, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 232, 0, 0, 0, 0, 0, 0, 230, 230, 230, 318, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 232, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 199, 200, 201, 356, 230, 230, 232, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 172, 173, 174, 175, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 232, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 171, 172, 199, 200, 356, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 200, 201, 202, 203, 200, 201, 202, 203, 204, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 171, 199, 200, 356, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 171, 319, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 199, 356, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 171, 199, 356, 229, 232, 0, 0, 227, 230, 230, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 171, 176, 0, 0, 0, 0, 227, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 199, 356, 229, 229, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 172, 173, 199, 204, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 319, 230, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 232, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 200, 201, 356, 318, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 229, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 232, 0, 0, 0, 0, 0, 230, 230, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 232, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 232, 0, 0, 0, 0, 171, 176, 0, 0, 230, 230, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 199, 204, 172, 173, 230, 310, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 319, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 319, 310, 200, 201, 356, 230, 318, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 174, 319, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 227, 230, 230, 230, 230, 230, 310, 204, 172, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 199, 202, 356, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 356, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 310, 200, 204, 172, 173, 176, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 199, 200, 201, 356, 230, 230, 230, 172, 173, 174, 175, 176, 0, 0, 0, 0, 171, 230, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 310, 200, 201, 204, 172, 173, 174, 175, 172, 173, 174, 199, 200, 201, 202, 203, 356, 230, 230, 230, 230, 230, 310, 200, 201, 202, 203, 204, 0, 0, 171, 174, 199, 356, 230, 230, 318, 0, 0, 0, 0, 0, 0, 0, 171, 172, 173, 174, 175, 176, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 310, 200, 201, 202, 203, 200, 201, 202, 356, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 174, 174, 199, 202, 356, 230, 230, 230, 318, 172, 173, 174, 175, 172, 173, 174, 199, 200, 201, 202, 203, 204, 173, 174, 175, 172, 173, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 310, 202, 202, 230, 230, 230, 230, 230, 230, 310, 200, 201, 202, 203, 200, 201, 202, 356, 228, 229, 230, 231, 310, 201, 202, 203, 200, 201, 356], + "height":40, + "id":1, + "name":"World", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":60, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":3, + "name":"Objs", + "objects":[ + { + "height":0, + "id":1, + "name":"", + "point":true, + "rotation":0, + "type":"Player Start", + "visible":true, + "width":0, + "x":272, + "y":152 + }, + { + "height":0, + "id":2, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":88, + "y":296 + }, + { + "height":0, + "id":3, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":272, + "y":296 + }, + { + "height":0, + "id":4, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":184, + "y":80 + }, + { + "height":0, + "id":5, + "name":"", + "point":true, + "rotation":0, + "type":"Snail Spawn", + "visible":true, + "width":0, + "x":312, + "y":80 + }, + { + "height":0, + "id":6, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":200, + "y":80 + }, + { + "height":0, + "id":7, + "name":"", + "point":true, + "rotation":0, + "type":"Enemy Stop", + "visible":true, + "width":0, + "x":232, + "y":80 + }, + { + "height":0, + "id":8, + "name":"", + "point":true, + "rotation":0, + "type":"Slime Spawn", + "visible":true, + "width":0, + "x":448, + "y":304 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":4, + "nextobjectid":10, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.7.0", + "tileheight":8, + "tilesets":[ + { + "firstgid":1, + "source":"tilemap.tsx" + }], + "tilewidth":8, + "type":"map", + "version":"1.6", + "width":60 +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/2-4.tmx b/examples/the-hat-chooses-the-wizard/map/2-4.tmx new file mode 100644 index 00000000..d8c972a7 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/2-4.tmx @@ -0,0 +1,121 @@ + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,115,115,115,90,90,87,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,92,92,92,92,92,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0,0,0,0,0,0,113,113, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,113,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,113,0,92,0,0,0,0,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,90,114,0,0,0,0,0,0,0,0,0, +0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,0,0,0,0,0,0,0,92, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,0,224,0,0,0,0,0,0,0,0,0,0,0,90,90,0,0,118,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,146,92,252,0,114,114,0,0,0,0,91,91,91,91,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,146,0,0,0,0,87,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0,0,0,0,0,0,0,0,0,0,0,91,91,0,91,91,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0, +0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,30,31,32,33,34,35,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,58,59,60,61,62,63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,0,0,0,0,0,88,89,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,92,92,0,0,0,0,0,0,0,116,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,92,85,86,0,0,0,0,0,0,0,92,92,114,114,0,0,0,0,0,0,0,0,92,90,90,90,145,0,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,114,115,115,92,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,92,0,0,0,0,0,0,0,0,0,0,0,0,92,92,90,90,90,90,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,0,0,0,0,0,0,0,92,0,90,90,0,92,87,87,0,0,90,90,92,92,92,92,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +230,230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0, +230,230,230,230,230,232,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,0,0,0, +230,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,0,230,230,230,230,230,230,230,230,230,230,232,0,0,0,0,0,0,0,0,0, +230,230,230,230,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,232,0,0,227,230,230,230,230,230,230,230,230,232,0,0,0,0,0,0,0,0,0,0, +230,230,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,232,0,0,0,0,0,0,0,0,0,0,0,0, +230,232,0,0,0,0,0,0,171,172,173,174,175,172,173,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,171,199,200,201,202,203,200,201,204,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,174,175,172,173,176,0,0, +0,0,0,0,0,0,0,199,356,230,230,230,230,230,230,310,204,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,199,200,201,202,203,200,201,204,172,173, +0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,230,310,204,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,199,200,356,230,230,230,230,230,230,310,200,201, +0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,230,230,310,204,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,199,356,230,230,230,230,230,230,230,230,230,230,230, +0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,230,230,230,310,204,172,173,174,175,176,0,0,0,0,171,172,173,174,175,172,173,174,175,172,173,174,175,172,173,199,200,201,356,230,230,230,230,230,230,230,230,230,230,230,230, +0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,310,200,201,202,203,204,0,0,0,0,199,200,201,202,203,200,201,202,203,200,201,202,203,200,201,356,230,230,230,230,230,230,230,230,230,230,229,229,229,229,229, +176,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,229,229,230,230,318,0,0,0,0,319,229,229,229,229,229,229,229,229,229,229,229,229,229,230,230,230,230,230,230,230,230,230,230,230,230,229,229,229,229,229, +204,176,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,230,229,232,0,0,0,0,319,229,229,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,229, +310,204,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,319,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230, +230,318,176,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,230,230,230,230,230,0,0,0,0,0,0,319,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227, +230,310,204,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,230,230,232,0,0,0,0,0,0,319,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,173,176,0,0,0,0,0,0,0,0,0, +230,230,318,176,0,0,0,0,0,0,0,0,0,0,0,0,0,227,230,230,230,230,0,0,0,0,0,0,0,319,229,229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,201,204,176,0,0,0,0,0,0,0,171, +230,230,310,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,0,0,0,0,0,0,319,229,229,0,0,0,0,0,171,173,176,0,0,0,0,0,0,0,0,319,230,310,204,0,0,0,0,0,0,171,199, +230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,172,173,174,175,172,173,174,319,229,229,172,173,174,175,172,199,201,204,172,173,176,0,0,0,0,0,319,230,230,318,176,0,0,0,0,171,199,356, +230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,310,200,201,202,203,200,201,202,356,229,310,200,201,202,203,200,356,230,310,200,201,204,0,0,0,0,0,227,230,230,310,204,0,0,0,0,199,356,230, +230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,232,0,0,0,0,0,0,230,230,230,318,0,0,0,0,319,230,230, +230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,232,0,0,0,0,319,230,230, +230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,171,172,173,230,230,230,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230,230,230,0,0,0,0,0,319,230,230, +230,230,230,318,0,0,0,0,0,0,0,0,0,171,172,199,200,201,356,230,230,232,0,0,0,0,0,171,172,173,174,175,172,173,174,175,172,173,174,175,176,0,0,0,0,0,0,0,0,230,230,232,0,0,0,0,0,319,230,230, +230,230,230,232,0,0,0,0,0,0,0,171,172,199,200,356,230,230,230,230,232,0,0,0,0,0,0,199,200,201,202,203,200,201,202,203,200,201,202,203,204,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,227,230,230, +230,230,230,0,0,0,0,0,0,0,171,199,200,356,230,230,230,230,230,230,0,0,0,0,0,0,171,319,229,229,230,230,230,230,230,230,230,230,230,230,318,0,0,0,0,0,0,0,0,230,0,0,0,0,0,0,0,0,230,230, +230,230,230,0,0,0,0,0,0,0,199,356,230,230,230,230,230,230,230,232,0,0,0,0,0,171,199,356,229,232,0,0,227,230,230,230,230,230,230,230,318,0,0,0,0,0,0,0,0,230,0,0,171,176,0,0,0,0,227,230, +230,230,232,0,0,0,0,0,0,0,319,230,230,230,230,230,230,230,232,0,0,0,0,0,0,199,356,229,229,0,0,0,0,0,227,230,230,230,230,230,318,0,0,0,0,0,0,0,0,230,172,173,199,204,0,0,0,0,0,230, +230,230,0,0,0,0,0,0,0,0,319,230,230,230,230,230,232,0,0,0,0,0,0,0,0,319,229,229,232,0,0,0,0,0,0,230,230,230,230,230,318,0,0,0,0,0,0,0,0,230,200,201,356,318,0,0,0,0,0,230, +230,230,0,0,0,0,0,0,0,0,227,230,230,232,0,0,0,0,0,0,0,0,0,0,0,319,229,229,0,0,0,0,0,0,0,230,230,230,230,230,318,0,0,0,0,0,0,0,0,230,230,230,230,232,0,0,0,0,0,230, +230,232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,232,0,0,0,0,0,0,0,227,230,230,230,230,318,0,0,0,0,0,0,0,0,230,232,0,0,0,0,171,176,0,0,230, +230,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,0,0,0,0,0,0,0,0,0,0,227,230,230,318,0,0,0,0,0,0,0,0,230,0,0,0,0,0,199,204,172,173,230, +310,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319,229,0,0,0,0,0,0,0,0,0,0,0,230,230,318,0,0,0,0,0,0,0,0,230,0,0,0,0,0,319,310,200,201,356, +230,318,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,174,319,229,0,0,0,0,0,0,0,0,0,0,171,230,230,318,0,0,0,0,0,0,0,0,230,0,0,0,0,0,227,230,230,230,230, +230,310,204,172,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,172,173,199,202,356,230,0,0,0,0,0,0,0,0,0,0,199,356,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230, +230,230,310,200,204,172,173,176,0,0,0,0,0,0,0,171,172,173,174,175,199,200,201,356,230,230,230,172,173,174,175,176,0,0,0,0,171,230,230,230,318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,230, +230,230,230,230,310,200,201,204,172,173,174,175,172,173,174,199,200,201,202,203,356,230,230,230,230,230,310,200,201,202,203,204,0,0,171,174,199,356,230,230,318,0,0,0,0,0,0,0,171,172,173,174,175,176,0,0,0,0,0,230, +230,230,230,230,230,230,230,310,200,201,202,203,200,201,202,356,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,174,174,199,202,356,230,230,230,318,172,173,174,175,172,173,174,199,200,201,202,203,204,173,174,175,172,173,230, +230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,310,202,202,230,230,230,230,230,230,310,200,201,202,203,200,201,202,356,228,229,230,231,310,201,202,203,200,201,356 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/objecttypes.xml b/examples/the-hat-chooses-the-wizard/map/objecttypes.xml new file mode 100644 index 00000000..10785050 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/objecttypes.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/map/tilemap.json b/examples/the-hat-chooses-the-wizard/map/tilemap.json new file mode 100644 index 00000000..1c8e6e94 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/tilemap.json @@ -0,0 +1,404 @@ +{ "columns":28, + "editorsettings": + { + "export": + { + "format":"json", + "target":"tilemap.json" + } + }, + "image":"..\/gfx\/tile_sheet.png", + "imageheight":104, + "imagewidth":224, + "margin":0, + "name":"joined_together_in_a_tilemap-Sheet", + "spacing":0, + "tilecount":364, + "tiledversion":"1.7.0", + "tileheight":8, + "tiles":[ + { + "id":8, + "type":"Collision" + }, + { + "id":9, + "type":"Kill" + }, + { + "id":36, + "type":"Collision" + }, + { + "id":37, + "type":"Kill" + }, + { + "id":50, + "type":"Collision" + }, + { + "id":53, + "type":"Kill" + }, + { + "id":54, + "type":"Collision" + }, + { + "id":64, + "type":"Collision" + }, + { + "id":65, + "type":"Kill" + }, + { + "id":78, + "type":"Collision" + }, + { + "id":81, + "type":"Kill" + }, + { + "id":82, + "type":"Collision" + }, + { + "id":83, + "type":"Kill" + }, + { + "id":106, + "type":"Collision" + }, + { + "id":107, + "type":"Kill" + }, + { + "id":109, + "type":"Kill" + }, + { + "id":110, + "type":"Collision" + }, + { + "id":111, + "type":"Kill" + }, + { + "id":133, + "type":"Kill" + }, + { + "id":134, + "type":"Collision" + }, + { + "id":137, + "type":"Kill" + }, + { + "id":138, + "type":"Collision" + }, + { + "id":140, + "type":"Kill" + }, + { + "id":141, + "type":"Kill" + }, + { + "id":161, + "type":"Kill" + }, + { + "id":162, + "type":"Collision" + }, + { + "id":163, + "type":"Kill" + }, + { + "id":166, + "type":"Collision" + }, + { + "id":189, + "type":"Kill" + }, + { + "id":190, + "type":"Collision" + }, + { + "id":192, + "type":"Kill" + }, + { + "id":193, + "type":"Collision" + }, + { + "id":194, + "type":"Collision" + }, + { + "id":195, + "type":"Kill" + }, + { + "id":196, + "type":"Collision" + }, + { + "id":198, + "type":"Collision" + }, + { + "id":199, + "type":"Collision" + }, + { + "id":200, + "type":"Collision" + }, + { + "id":201, + "type":"Collision" + }, + { + "id":202, + "type":"Collision" + }, + { + "id":203, + "type":"Collision" + }, + { + "id":217, + "type":"Kill" + }, + { + "id":218, + "type":"Collision" + }, + { + "id":220, + "type":"Kill" + }, + { + "id":221, + "type":"Collision" + }, + { + "id":222, + "type":"Collision" + }, + { + "id":223, + "type":"Win" + }, + { + "id":224, + "type":"Collision" + }, + { + "id":226, + "type":"Collision" + }, + { + "id":227, + "type":"Collision" + }, + { + "id":228, + "type":"Collision" + }, + { + "id":229, + "type":"Collision" + }, + { + "id":230, + "type":"Collision" + }, + { + "id":231, + "type":"Collision" + }, + { + "id":246, + "type":"Collision" + }, + { + "id":247, + "type":"Kill" + }, + { + "id":248, + "type":"Kill" + }, + { + "id":249, + "type":"Collision" + }, + { + "id":250, + "type":"Collision" + }, + { + "id":251, + "type":"Win" + }, + { + "id":252, + "type":"Collision" + }, + { + "id":255, + "type":"Kill" + }, + { + "id":256, + "type":"Kill" + }, + { + "id":257, + "type":"Kill" + }, + { + "id":274, + "type":"Collision" + }, + { + "id":275, + "type":"Kill" + }, + { + "id":276, + "type":"Kill" + }, + { + "id":277, + "type":"Collision" + }, + { + "id":278, + "type":"Collision" + }, + { + "id":279, + "type":"Win" + }, + { + "id":280, + "type":"Collision" + }, + { + "id":281, + "type":"Collision" + }, + { + "id":283, + "type":"Kill" + }, + { + "id":284, + "type":"Kill" + }, + { + "id":285, + "type":"Kill" + }, + { + "id":287, + "type":"Collision" + }, + { + "id":288, + "type":"Collision" + }, + { + "id":300, + "type":"Collision" + }, + { + "id":301, + "type":"Kill" + }, + { + "id":302, + "type":"Collision" + }, + { + "id":303, + "type":"Kill" + }, + { + "id":308, + "type":"Collision" + }, + { + "id":309, + "type":"Collision" + }, + { + "id":310, + "type":"Collision" + }, + { + "id":315, + "type":"Collision" + }, + { + "id":316, + "type":"Collision" + }, + { + "id":317, + "type":"Collision" + }, + { + "id":318, + "type":"Collision" + }, + { + "id":327, + "type":"Collision" + }, + { + "id":328, + "type":"Collision" + }, + { + "id":329, + "type":"Kill" + }, + { + "id":330, + "type":"Collision" + }, + { + "id":331, + "type":"Kill" + }, + { + "id":354, + "type":"Collision" + }, + { + "id":355, + "type":"Collision" + }], + "tilewidth":8, + "transparentcolor":"#2ce8f4", + "type":"tileset", + "version":"1.6" +} \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/map/tilemap.tsx b/examples/the-hat-chooses-the-wizard/map/tilemap.tsx new file mode 100644 index 00000000..14fc74f4 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/map/tilemap.tsx @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/the-hat-chooses-the-wizard/rust-toolchain.toml b/examples/the-hat-chooses-the-wizard/rust-toolchain.toml new file mode 100644 index 00000000..06842486 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "nightly" +components = ["rust-src", "clippy"] \ No newline at end of file diff --git a/examples/the-hat-chooses-the-wizard/screenshot.png b/examples/the-hat-chooses-the-wizard/screenshot.png new file mode 100644 index 00000000..a8336fec Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/screenshot.png differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop intro).wav b/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop intro).wav new file mode 100644 index 00000000..3aef2a17 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop intro).wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop main).wav b/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop main).wav new file mode 100644 index 00000000..19175ae7 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/Otto Halmén - Sylvan Waltz (loop main).wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/catch.wav b/examples/the-hat-chooses-the-wizard/sfx/catch.wav new file mode 100644 index 00000000..180ed4fa Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/catch.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/jump.wav b/examples/the-hat-chooses-the-wizard/sfx/jump.wav new file mode 100644 index 00000000..e4f078cb Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/jump.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/land.wav b/examples/the-hat-chooses-the-wizard/sfx/land.wav new file mode 100644 index 00000000..1fdaa47c Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/land.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/slime-death.wav b/examples/the-hat-chooses-the-wizard/sfx/slime-death.wav new file mode 100644 index 00000000..eb9125de Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/slime-death.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/slime-jump.wav b/examples/the-hat-chooses-the-wizard/sfx/slime-jump.wav new file mode 100644 index 00000000..4d658157 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/slime-jump.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/snail-death.wav b/examples/the-hat-chooses-the-wizard/sfx/snail-death.wav new file mode 100644 index 00000000..70b3da88 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/snail-death.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/snail-emerge.wav b/examples/the-hat-chooses-the-wizard/sfx/snail-emerge.wav new file mode 100644 index 00000000..b875a588 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/snail-emerge.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/snail-hat-bounce.wav b/examples/the-hat-chooses-the-wizard/sfx/snail-hat-bounce.wav new file mode 100644 index 00000000..490b403c Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/snail-hat-bounce.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/snail-retreat.wav b/examples/the-hat-chooses-the-wizard/sfx/snail-retreat.wav new file mode 100644 index 00000000..9dfe4074 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/snail-retreat.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/woosh1.wav b/examples/the-hat-chooses-the-wizard/sfx/woosh1.wav new file mode 100644 index 00000000..80ba543e Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/woosh1.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/woosh2.wav b/examples/the-hat-chooses-the-wizard/sfx/woosh2.wav new file mode 100644 index 00000000..d0b1b275 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/woosh2.wav differ diff --git a/examples/the-hat-chooses-the-wizard/sfx/woosh3.wav b/examples/the-hat-chooses-the-wizard/sfx/woosh3.wav new file mode 100644 index 00000000..8ccb3131 Binary files /dev/null and b/examples/the-hat-chooses-the-wizard/sfx/woosh3.wav differ diff --git a/examples/the-hat-chooses-the-wizard/src/enemies.rs b/examples/the-hat-chooses-the-wizard/src/enemies.rs new file mode 100644 index 00000000..1e4a91ce --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/src/enemies.rs @@ -0,0 +1,417 @@ +use super::{object_tiles, sfx::SfxPlayer, Entity, FixedNumberType, HatState, Level}; +use agb::{ + display::object::{ObjectControl, Size}, + number::Vector2D, +}; + +enum UpdateState { + Nothing, + KillPlayer, + Remove, +} + +pub enum Enemy<'a> { + Slime(Slime<'a>), + Snail(Snail<'a>), + Empty, +} + +impl<'a> Default for Enemy<'a> { + fn default() -> Self { + Enemy::Empty + } +} + +pub enum EnemyUpdateState { + None, + KillPlayer, +} + +impl<'a> Enemy<'a> { + pub fn is_empty(&self) -> bool { + match self { + Enemy::Empty => true, + _ => false, + } + } + + pub fn new_slime(object: &'a ObjectControl, start_pos: Vector2D) -> Self { + Enemy::Slime(Slime::new(object, start_pos + (0, 1).into())) + } + + pub fn new_snail(object: &'a ObjectControl, start_pos: Vector2D) -> Self { + Enemy::Snail(Snail::new(object, start_pos)) + } + + pub fn collides_with_hat(&self, position: Vector2D) -> bool { + match self { + Enemy::Snail(snail) => snail.collides_with(position), + _ => false, + } + } + + pub fn update( + &mut self, + level: &Level, + player_pos: Vector2D, + hat_state: HatState, + timer: i32, + sfx_player: &mut SfxPlayer, + ) -> EnemyUpdateState { + let update_state = match self { + Enemy::Slime(slime) => slime.update(level, player_pos, hat_state, timer, sfx_player), + Enemy::Snail(snail) => snail.update(level, player_pos, hat_state, timer, sfx_player), + Enemy::Empty => UpdateState::Nothing, + }; + + match update_state { + UpdateState::Remove => { + *self = Enemy::Empty; + EnemyUpdateState::None + } + UpdateState::KillPlayer => EnemyUpdateState::KillPlayer, + UpdateState::Nothing => EnemyUpdateState::None, + } + } + + pub fn commit(&mut self, background_offset: Vector2D) { + match self { + Enemy::Slime(slime) => slime.commit(background_offset), + Enemy::Snail(snail) => snail.commit(background_offset), + Enemy::Empty => {} + } + } +} + +struct EnemyInfo<'a> { + entity: Entity<'a>, +} + +impl<'a> EnemyInfo<'a> { + fn new( + object: &'a ObjectControl, + start_pos: Vector2D, + collision: Vector2D, + ) -> Self { + let mut enemy_info = EnemyInfo { + entity: Entity::new(object, collision), + }; + enemy_info.entity.position = start_pos; + enemy_info + } + + fn update(&mut self, level: &Level) { + for &enemy_stop in level.enemy_stops { + if (self.entity.position + self.entity.velocity - enemy_stop.into()) + .manhattan_distance() + < 8.into() + { + self.entity.velocity = (0, 0).into(); + } + } + + self.entity.update_position(level); + } + + fn commit(&mut self, background_offset: Vector2D) { + self.entity.commit_position(background_offset); + } +} + +enum SlimeState { + Idle, + Jumping(i32), // the start frame of the jumping animation + Dying(i32), // the start frame of the dying animation +} + +pub struct Slime<'a> { + enemy_info: EnemyInfo<'a>, + state: SlimeState, +} + +impl<'a> Slime<'a> { + fn new(object: &'a ObjectControl, start_pos: Vector2D) -> Self { + let mut slime = Slime { + enemy_info: EnemyInfo::new(object, start_pos, (14u16, 14u16).into()), + state: SlimeState::Idle, + }; + + slime.enemy_info.entity.sprite.set_sprite_size(Size::S16x16); + + slime + } + + fn update( + &mut self, + level: &Level, + player_pos: Vector2D, + hat_state: HatState, + timer: i32, + sfx_player: &mut SfxPlayer, + ) -> UpdateState { + let player_has_collided = + (self.enemy_info.entity.position - player_pos).magnitude_squared() < (10 * 10).into(); + + match self.state { + SlimeState::Idle => { + let offset = (timer / 16 % 2) * 4; + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SLIME_IDLE_START + offset as u16); + + if (self.enemy_info.entity.position - player_pos).magnitude_squared() + < (64 * 64).into() + { + self.state = SlimeState::Jumping(timer); + + let x_vel: FixedNumberType = + if self.enemy_info.entity.position.x > player_pos.x { + -1 + } else { + 1 + } + .into(); + + self.enemy_info.entity.velocity = (x_vel / 4, 0.into()).into(); + } + + if player_has_collided { + if hat_state == HatState::WizardTowards { + self.state = SlimeState::Dying(timer); + } else { + return UpdateState::KillPlayer; + } + } + } + SlimeState::Jumping(jumping_start_frame) => { + let offset = (timer - jumping_start_frame) / 4; + + if timer == jumping_start_frame + 1 { + sfx_player.slime_jump(); + } + + if offset >= 7 { + self.enemy_info.entity.velocity = (0, 0).into(); + self.state = SlimeState::Idle; + } else { + let sprite_offset = if offset >= 4 { 7 - offset } else { offset }; + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SLIME_JUMP_START + (sprite_offset * 4) as u16); + } + + if player_has_collided { + if hat_state == HatState::WizardTowards { + self.state = SlimeState::Dying(timer); + } else { + return UpdateState::KillPlayer; + } + } + } + SlimeState::Dying(dying_start_frame) => { + if timer == dying_start_frame + 1 { + sfx_player.slime_death(); + } + + let offset = (timer - dying_start_frame) / 4; + self.enemy_info.entity.velocity = (0, 0).into(); + + if offset >= 4 { + return UpdateState::Remove; + } + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SLIME_SPLAT_START + (offset * 4) as u16); + } + } + + self.enemy_info.update(level); + + UpdateState::Nothing + } + + fn commit(&mut self, background_offset: Vector2D) { + self.enemy_info.commit(background_offset); + } +} + +enum SnailState { + Idle(i32), // start frame (or 0 if newly created) + Emerging(i32), // start frame + Retreating(i32), // start frame + Moving(i32), // start frame + Death(i32), // start frame +} + +pub struct Snail<'a> { + enemy_info: EnemyInfo<'a>, + state: SnailState, +} + +impl<'a> Snail<'a> { + fn new(object: &'a ObjectControl, start_pos: Vector2D) -> Self { + let mut snail = Snail { + enemy_info: EnemyInfo::new(object, start_pos, (16u16, 16u16).into()), + state: SnailState::Idle(0), + }; + + snail.enemy_info.entity.sprite.set_sprite_size(Size::S16x16); + + snail + } + + pub fn collides_with(&self, position: Vector2D) -> bool { + (self.enemy_info.entity.position - position).magnitude_squared() < (15 * 15).into() + } + + fn update( + &mut self, + level: &Level, + player_pos: Vector2D, + hat_state: HatState, + timer: i32, + sfx_player: &mut SfxPlayer, + ) -> UpdateState { + let player_has_collided = + (self.enemy_info.entity.position - player_pos).magnitude_squared() < (10 * 10).into(); + + match self.state { + SnailState::Idle(wait_time) => { + self.enemy_info.entity.velocity = (0, 0).into(); + + if wait_time == 0 || timer - wait_time > 120 { + // wait at least 2 seconds after switching to this state + if (self.enemy_info.entity.position - player_pos).magnitude_squared() + < (48 * 48).into() + { + // player is close + self.state = SnailState::Emerging(timer); + sfx_player.snail_emerge(); + } + } + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SNAIL_IDLE_START); + if player_has_collided { + if hat_state != HatState::WizardTowards { + return UpdateState::KillPlayer; + } else { + self.state = SnailState::Death(timer); + } + } + } + SnailState::Emerging(time) => { + let offset = (timer - time) / 4; + + if offset >= 5 { + self.state = SnailState::Moving(timer); + } + self.enemy_info.entity.velocity = (0, 0).into(); + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SNAIL_EMERGE_START + (offset * 4) as u16); + + if player_has_collided { + if hat_state != HatState::WizardTowards { + return UpdateState::KillPlayer; + } else if hat_state == HatState::WizardTowards { + self.state = SnailState::Death(timer); + } + } + } + SnailState::Moving(time) => { + if timer - time > 240 { + // only move for 4 seconds + self.state = SnailState::Retreating(timer); + sfx_player.snail_retreat(); + } + + let offset = (timer - time) / 8 % 2; + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SNAIL_MOVE + (offset * 4) as u16); + + if timer % 32 == 0 { + let x_vel: FixedNumberType = + if self.enemy_info.entity.position.x < player_pos.x { + self.enemy_info.entity.sprite.set_hflip(false); + 1 + } else { + self.enemy_info.entity.sprite.set_hflip(true); + -1 + } + .into(); + + self.enemy_info.entity.velocity = (x_vel / 8, 0.into()).into(); + } + + if player_has_collided { + if hat_state != HatState::WizardTowards { + return UpdateState::KillPlayer; + } else if hat_state == HatState::WizardTowards { + self.state = SnailState::Death(timer); + } + } + } + SnailState::Retreating(time) => { + let offset = 5 - (timer - time) / 4; + + if offset == 0 { + self.state = SnailState::Idle(timer); + } + + self.enemy_info + .entity + .sprite + .set_tile_id(object_tiles::SNAIL_EMERGE_START + (offset * 4) as u16); + self.enemy_info.entity.velocity = (0, 0).into(); + + if player_has_collided { + if hat_state != HatState::WizardTowards { + return UpdateState::KillPlayer; + } else if hat_state == HatState::WizardTowards { + self.state = SnailState::Death(timer); + } + } + } + SnailState::Death(time) => { + if timer == time + 1 { + sfx_player.snail_death(); + } + + let offset = (timer - time) / 4; + let tile_id = if offset < 5 { + object_tiles::SNAIL_EMERGE_START + ((5 - offset) * 4) as u16 + } else if offset == 5 { + object_tiles::SNAIL_IDLE_START + } else if offset < 5 + 7 { + object_tiles::SNAIL_DEATH_START + ((offset - 5) * 4) as u16 + } else { + return UpdateState::Remove; + }; + + self.enemy_info.entity.sprite.set_tile_id(tile_id); + self.enemy_info.entity.velocity = (0, 0).into(); + } + } + + self.enemy_info.update(level); + + UpdateState::Nothing + } + + fn commit(&mut self, background_offset: Vector2D) { + self.enemy_info.commit(background_offset); + } +} diff --git a/examples/the-hat-chooses-the-wizard/src/level_display.rs b/examples/the-hat-chooses-the-wizard/src/level_display.rs new file mode 100644 index 00000000..bdbb33d6 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/src/level_display.rs @@ -0,0 +1,49 @@ +use agb::display::{background::BackgroundRegister, HEIGHT, WIDTH}; + +fn num_digits_iter(mut n: u32) -> impl core::iter::Iterator { + let mut length = 0; + core::iter::from_fn(move || { + if n == 0 { + length += 1; + if length <= 1 { + Some(0) + } else { + None + } + } else { + length += 1; + let c = n % 10; + n /= 10; + Some(c as u8) + } + }) +} + +const LEVEL_START: u16 = 12 * 28; +const NUMBERS_START: u16 = 12 * 28 + 3; +const HYPHEN: u16 = 12 * 28 + 11; +pub const BLANK: u16 = 11 * 28; + +pub fn new_map_store() -> [u16; 20] { + [BLANK; 20] +} + +pub fn write_level(background: &mut BackgroundRegister, world: u32, level: u32) { + let map = background.get_block(); + let mut counter = 0; + + map[0][0] = LEVEL_START; + map[0][1] = LEVEL_START + 1; + map[0][2] = LEVEL_START + 2; + + counter += 4; + + map[0][counter] = world as u16 + NUMBERS_START - 1; + counter += 1; + map[0][counter] = HYPHEN; + counter += 1; + map[0][counter] = level as u16 + NUMBERS_START - 1; + counter += 1; + + background.set_position((-(WIDTH / 2 - counter as i32 * 8 / 2), -(HEIGHT / 2 - 4)).into()); +} diff --git a/examples/the-hat-chooses-the-wizard/src/main.rs b/examples/the-hat-chooses-the-wizard/src/main.rs new file mode 100644 index 00000000..afd7a800 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/src/main.rs @@ -0,0 +1,884 @@ +#![no_std] +#![no_main] + +mod enemies; +mod level_display; +mod sfx; +mod splash_screen; + +pub struct Level { + background: &'static [u16], + foreground: &'static [u16], + dimensions: Vector2D, + collision: &'static [u32], + + slimes: &'static [(i32, i32)], + snails: &'static [(i32, i32)], + enemy_stops: &'static [(i32, i32)], + start_pos: (i32, i32), +} + +mod object_tiles { + pub const WIZARD_TILE_START: u16 = 0 * 4; + pub const WIZARD_JUMP: u16 = 4 * 4; + pub const WIZARD_FALL_START: u16 = 5 * 4; + + pub const HAT_TILE_START: u16 = 9 * 4; + pub const HAT_TILE_START_SECOND: u16 = 28 * 4; + pub const HAT_TILE_START_THIRD: u16 = 38 * 4; + + pub const SLIME_IDLE_START: u16 = 19 * 4; + pub const SLIME_JUMP_START: u16 = 20 * 4; + pub const SLIME_SPLAT_START: u16 = 24 * 4; + + pub const SNAIL_IDLE_START: u16 = 48 * 4; + pub const SNAIL_EMERGE_START: u16 = 49 * 4; + pub const SNAIL_MOVE: u16 = 54 * 4; + pub const SNAIL_DEATH_START: u16 = 56 * 4; +} + +agb::include_gfx!("gfx/object_sheet.toml"); + +mod map_tiles { + + use super::Level; + pub const LEVELS: &[Level] = &[ + l1_1::get_level(), + l1_2::get_level(), + l1_3::get_level(), + l1_4::get_level(), + l1_5::get_level(), + l1_7::get_level(), // these are intentionally this way round + l1_6::get_level(), + l1_8::get_level(), + l2_3::get_level(), // goes 2-3, 2-1 then 2-2 + l2_1::get_level(), + l2_2::get_level(), + l2_4::get_level(), + ]; + + pub mod l1_1 { + include!(concat!(env!("OUT_DIR"), "/1-1.json.rs")); + } + pub mod l1_2 { + include!(concat!(env!("OUT_DIR"), "/1-2.json.rs")); + } + pub mod l1_3 { + include!(concat!(env!("OUT_DIR"), "/1-3.json.rs")); + } + pub mod l1_4 { + include!(concat!(env!("OUT_DIR"), "/1-4.json.rs")); + } + pub mod l1_5 { + include!(concat!(env!("OUT_DIR"), "/1-5.json.rs")); + } + pub mod l1_6 { + include!(concat!(env!("OUT_DIR"), "/1-6.json.rs")); + } + pub mod l1_7 { + include!(concat!(env!("OUT_DIR"), "/1-7.json.rs")); + } + pub mod l2_1 { + include!(concat!(env!("OUT_DIR"), "/2-1.json.rs")); + } + + pub mod l1_8 { + include!(concat!(env!("OUT_DIR"), "/1-8.json.rs")); + } + pub mod l2_2 { + include!(concat!(env!("OUT_DIR"), "/2-2.json.rs")); + } + pub mod l2_3 { + include!(concat!(env!("OUT_DIR"), "/2-3.json.rs")); + } + + pub mod l2_4 { + include!(concat!(env!("OUT_DIR"), "/2-4.json.rs")); + } + + pub mod tilemap { + include!(concat!(env!("OUT_DIR"), "/tilemap.rs")); + } +} + +agb::include_gfx!("gfx/tile_sheet.toml"); + +use agb::{ + display::{ + background::BackgroundRegular, + object::{ObjectControl, ObjectStandard, Size}, + Priority, HEIGHT, WIDTH, + }, + input::{self, Button, ButtonController}, + number::{FixedNum, Vector2D}, +}; + +type FixedNumberType = FixedNum<10>; + +pub struct Entity<'a> { + sprite: ObjectStandard<'a>, + position: Vector2D, + velocity: Vector2D, + collision_mask: Vector2D, +} + +impl<'a> Entity<'a> { + pub fn new(object: &'a ObjectControl, collision_mask: Vector2D) -> Self { + let mut sprite = object.get_object_standard(); + sprite.set_priority(Priority::P1); + Entity { + sprite, + collision_mask, + position: (0, 0).into(), + velocity: (0, 0).into(), + } + } + + fn something_at_point bool>( + &self, + position: Vector2D, + something_fn: T, + ) -> bool { + let left = (position.x - self.collision_mask.x as i32 / 2).floor() / 8; + let right = (position.x + self.collision_mask.x as i32 / 2 - 1).floor() / 8; + let top = (position.y - self.collision_mask.y as i32 / 2).floor() / 8; + let bottom = (position.y + self.collision_mask.y as i32 / 2 - 1).floor() / 8; + + for x in left..=right { + for y in top..=bottom { + if something_fn(x, y) { + return true; + } + } + } + false + } + + fn collision_at_point(&self, level: &Level, position: Vector2D) -> bool { + self.something_at_point(position, |x, y| level.collides(x, y)) + } + + fn killision_at_point(&self, level: &Level, position: Vector2D) -> bool { + self.something_at_point(position, |x, y| level.kills(x, y)) + } + + fn completion_at_point(&self, level: &Level, position: Vector2D) -> bool { + self.something_at_point(position, |x, y| level.wins(x, y)) + } + + fn enemy_collision_at_point( + &self, + enemies: &[enemies::Enemy], + position: Vector2D, + ) -> bool { + for enemy in enemies { + if enemy.collides_with_hat(position) { + return true; + } + } + false + } + + // returns the distance actually moved + fn update_position(&mut self, level: &Level) -> Vector2D { + let old_position = self.position; + let x_velocity = (self.velocity.x, 0.into()).into(); + if !self.collision_at_point(level, self.position + x_velocity) { + self.position += x_velocity; + } else { + self.position += self.binary_search_collision(level, (1, 0).into(), self.velocity.x); + } + + let y_velocity = (0.into(), self.velocity.y).into(); + if !self.collision_at_point(level, self.position + y_velocity) { + self.position += y_velocity; + } else { + self.position += self.binary_search_collision(level, (0, 1).into(), self.velocity.y); + } + + self.position - old_position + } + + fn update_position_with_enemy( + &mut self, + level: &Level, + enemies: &[enemies::Enemy], + ) -> (Vector2D, bool) { + let mut was_enemy_collision = false; + let old_position = self.position; + let x_velocity = (self.velocity.x, 0.into()).into(); + + if !(self.collision_at_point(level, self.position + x_velocity) + || self.enemy_collision_at_point(enemies, self.position + x_velocity)) + { + self.position += x_velocity; + } else if self.enemy_collision_at_point(enemies, self.position + x_velocity) { + self.position -= x_velocity; + was_enemy_collision = true; + } + + let y_velocity = (0.into(), self.velocity.y).into(); + if !(self.collision_at_point(level, self.position + y_velocity) + || self.enemy_collision_at_point(enemies, self.position + y_velocity)) + { + self.position += y_velocity; + } else if self.enemy_collision_at_point(enemies, self.position + y_velocity) { + self.position -= y_velocity; + was_enemy_collision = true; + } + + (self.position - old_position, was_enemy_collision) + } + + fn binary_search_collision( + &self, + level: &Level, + unit_vector: Vector2D, + initial: FixedNumberType, + ) -> Vector2D { + let mut low: FixedNumberType = 0.into(); + let mut high = initial; + + let one: FixedNumberType = 1.into(); + while (high - low).abs() > one / 8 { + let mid = (low + high) / 2; + let new_vel: Vector2D = unit_vector * mid; + + if self.collision_at_point(level, self.position + new_vel) { + high = mid; + } else { + low = mid; + } + } + + unit_vector * low + } + + fn commit_position(&mut self, offset: Vector2D) { + let position = (self.position - offset).floor(); + self.sprite.set_position(position - (8, 8).into()); + if position.x < -8 || position.x > WIDTH + 8 || position.y < -8 || position.y > HEIGHT + 8 { + self.sprite.hide(); + } else { + self.sprite.show(); + } + self.sprite.commit(); + } +} + +struct Map<'a, 'b> { + background: &'a mut BackgroundRegular<'b>, + foreground: &'a mut BackgroundRegular<'b>, + position: Vector2D, + level: &'a Level, +} + +impl<'a, 'b, 'c> Map<'a, 'b> { + pub fn commit_position(&mut self) { + self.background.set_position(self.position.floor()); + self.foreground.set_position(self.position.floor()); + + self.background.commit(); + self.foreground.commit(); + } + + fn load_foreground(&'c mut self) -> impl Iterator + 'c { + self.background.set_position(self.position.floor()); + self.background.set_map(agb::display::background::Map::new( + self.level.foreground, + self.level.dimensions, + 0, + )); + self.background.commit_partial() + } + + fn load_background(&'c mut self) -> impl Iterator + 'c { + self.foreground.set_position(self.position.floor()); + self.foreground.set_map(agb::display::background::Map::new( + self.level.background, + self.level.dimensions, + 0, + )); + self.foreground.set_priority(Priority::P2); + self.foreground.commit_partial() + } +} + +impl Level { + fn collides(&self, x: i32, y: i32) -> bool { + self.at_point(x, y, map_tiles::tilemap::COLLISION_TILE as u32) + } + + fn kills(&self, x: i32, y: i32) -> bool { + self.at_point(x, y, map_tiles::tilemap::KILL_TILE as u32) + } + + fn at_point(&self, x: i32, y: i32, tile: u32) -> bool { + if (x < 0 || x >= self.dimensions.x as i32) || (y < 0 || y >= self.dimensions.y as i32) { + return true; + } + let pos = (self.dimensions.x as i32 * y + x) as usize; + let tile_foreground = self.foreground[pos]; + let tile_background = self.background[pos]; + let foreground_tile_property = self.collision[tile_foreground as usize]; + let background_tile_property = self.collision[tile_background as usize]; + foreground_tile_property == tile || background_tile_property == tile + } + + fn wins(&self, x: i32, y: i32) -> bool { + self.at_point(x, y, map_tiles::tilemap::WIN_TILE as u32) + } +} + +#[derive(PartialEq, Eq, Copy, Clone)] +pub enum HatState { + OnHead, + Thrown, + WizardTowards, +} + +struct Player<'a> { + wizard: Entity<'a>, + hat: Entity<'a>, + hat_state: HatState, + hat_left_range: bool, + hat_slow_counter: i32, + wizard_frame: u8, + num_recalls: i8, + is_on_ground: bool, + facing: input::Tri, +} + +fn ping_pong(i: i32, n: i32) -> i32 { + let cycle = 2 * (n - 1); + let i = i % cycle; + if i >= n { + cycle - i + } else { + i + } +} + +impl<'a> Player<'a> { + fn new(controller: &'a ObjectControl, start_position: Vector2D) -> Self { + let mut hat = Entity::new(controller, (6_u16, 6_u16).into()); + let mut wizard = Entity::new(controller, (6_u16, 14_u16).into()); + + wizard.sprite.set_tile_id(object_tiles::WIZARD_TILE_START); + hat.sprite.set_tile_id(object_tiles::HAT_TILE_START); + wizard.sprite.set_sprite_size(Size::S16x16); + hat.sprite.set_sprite_size(Size::S16x16); + wizard.sprite.show(); + hat.sprite.show(); + + wizard.sprite.commit(); + hat.sprite.commit(); + + wizard.position = start_position; + hat.position = start_position - (0, 10).into(); + + Player { + wizard, + hat, + hat_slow_counter: 0, + hat_state: HatState::OnHead, + hat_left_range: false, + wizard_frame: 0, + num_recalls: 0, + is_on_ground: true, + facing: input::Tri::Zero, + } + } + + fn update_frame( + &mut self, + input: &ButtonController, + timer: i32, + level: &Level, + enemies: &[enemies::Enemy], + sfx_player: &mut sfx::SfxPlayer, + ) { + // throw or recall + if input.is_just_pressed(Button::A) { + if self.hat_state == HatState::OnHead { + let direction: Vector2D = { + let up_down = input.y_tri() as i32; + let left_right = if up_down == 0 { + self.facing as i32 + } else { + input.x_tri() as i32 + }; + (left_right, up_down).into() + }; + + if direction != (0, 0).into() { + let mut velocity = direction.normalise() * 5; + if velocity.y > 0.into() { + velocity.y *= FixedNumberType::new(4) / 3; + } + self.hat.velocity = velocity; + self.hat_state = HatState::Thrown; + + sfx_player.throw(); + } + } else if self.hat_state == HatState::Thrown { + self.num_recalls += 1; + if self.num_recalls < 3 { + self.hat.velocity = (0, 0).into(); + self.wizard.velocity = (0, 0).into(); + self.hat_state = HatState::WizardTowards; + } + } else if self.hat_state == HatState::WizardTowards { + self.hat_state = HatState::Thrown; + self.wizard.velocity /= 8; + } + } + + let was_on_ground = self.is_on_ground; + let is_on_ground = self + .wizard + .collision_at_point(level, self.wizard.position + (0, 1).into()); + + if is_on_ground && !was_on_ground && self.wizard.velocity.y > 1.into() { + sfx_player.land(); + } + self.is_on_ground = is_on_ground; + + if self.hat_state != HatState::WizardTowards { + if is_on_ground { + self.num_recalls = 0; + } + + if is_on_ground { + self.wizard.velocity.x += FixedNumberType::new(input.x_tri() as i32) / 16; + self.wizard.velocity = self.wizard.velocity * 54 / 64; + if input.is_just_pressed(Button::B) { + self.wizard.velocity.y = -FixedNumberType::new(3) / 2; + sfx_player.jump(); + } + } else { + self.wizard.velocity.x += FixedNumberType::new(input.x_tri() as i32) / 64; + self.wizard.velocity = self.wizard.velocity * 63 / 64; + let gravity: Vector2D = (0, 1).into(); + let gravity = gravity / 16; + self.wizard.velocity += gravity; + } + + self.wizard.velocity = self.wizard.update_position(level); + + if self.wizard.velocity.x.abs() > 0.into() { + let offset = (ping_pong(timer / 16, 4)) as u16; + self.wizard_frame = offset as u8; + + self.wizard + .sprite + .set_tile_id(object_tiles::WIZARD_TILE_START + offset * 4); + } + + if self.wizard.velocity.y < -FixedNumberType::new(1) / 16 { + // going up + self.wizard_frame = 5; + + self.wizard.sprite.set_tile_id(object_tiles::WIZARD_JUMP); + } else if self.wizard.velocity.y > FixedNumberType::new(1) / 16 { + // going down + let offset = if self.wizard.velocity.y * 2 > 3.into() { + ((timer / 4) % 4) as u16 + } else { + // Don't flap beard unless going quickly + 0 + }; + + self.wizard_frame = 0; + + self.wizard + .sprite + .set_tile_id(object_tiles::WIZARD_FALL_START + offset * 4); + } + + if input.x_tri() != agb::input::Tri::Zero { + self.facing = input.x_tri(); + } + } + + let hat_base_tile = match self.num_recalls { + 0 => object_tiles::HAT_TILE_START, + 1 => object_tiles::HAT_TILE_START_SECOND, + 2 | _ => object_tiles::HAT_TILE_START_THIRD, + }; + + match self.facing { + agb::input::Tri::Negative => { + self.wizard.sprite.set_hflip(true); + self.hat.sprite.set_tile_id(hat_base_tile + 4 * 5); + } + agb::input::Tri::Positive => { + self.wizard.sprite.set_hflip(false); + self.hat.sprite.set_tile_id(hat_base_tile); + } + _ => {} + } + + let hat_resting_position = match self.wizard_frame { + 1 | 2 => (0, 9).into(), + 5 => (0, 10).into(), + _ => (0, 8).into(), + }; + + match self.hat_state { + HatState::Thrown => { + // hat is thrown, make hat move towards wizard + let distance_vector = + self.wizard.position - self.hat.position - hat_resting_position; + let distance = distance_vector.magnitude(); + let direction = if distance == 0.into() { + (0, 0).into() + } else { + distance_vector / distance + }; + + let hat_sprite_divider = match self.num_recalls { + 0 => 1, + 1 => 2, + 2 | _ => 4, + }; + + let hat_sprite_offset = timer / hat_sprite_divider % 10; + + self.hat + .sprite + .set_tile_id(hat_base_tile + (hat_sprite_offset * 4) as u16); + + if self.hat_slow_counter < 30 && self.hat.velocity.magnitude() < 2.into() { + self.hat.velocity = (0, 0).into(); + self.hat_slow_counter += 1; + } else { + self.hat.velocity += direction / 4; + } + let (new_velocity, enemy_collision) = + self.hat.update_position_with_enemy(level, enemies); + self.hat.velocity = new_velocity; + + if enemy_collision { + sfx_player.snail_hat_bounce(); + } + + if distance > 16.into() { + self.hat_left_range = true; + } + if self.hat_left_range && distance < 16.into() { + sfx_player.catch(); + self.hat_state = HatState::OnHead; + } + } + HatState::OnHead => { + // hat is on head, place hat on head + self.hat_slow_counter = 0; + self.hat_left_range = false; + self.hat.position = self.wizard.position - hat_resting_position; + } + HatState::WizardTowards => { + self.hat + .sprite + .set_tile_id(hat_base_tile + 4 * (timer / 2 % 10) as u16); + let distance_vector = + self.hat.position - self.wizard.position + hat_resting_position; + let distance = distance_vector.magnitude(); + if distance != 0.into() { + let v = self.wizard.velocity.magnitude() + 1; + self.wizard.velocity = distance_vector / distance * v; + } + self.wizard.velocity = self.wizard.update_position(level); + if distance < 16.into() { + self.wizard.velocity /= 8; + self.hat_state = HatState::OnHead; + sfx_player.catch(); + } + } + } + } +} + +struct PlayingLevel<'a, 'b> { + timer: i32, + background: Map<'a, 'b>, + input: ButtonController, + player: Player<'a>, + + enemies: [enemies::Enemy<'a>; 16], +} + +enum UpdateState { + Normal, + Dead, + Complete, +} + +impl<'a, 'b, 'c> PlayingLevel<'a, 'b> { + fn open_level( + level: &'a Level, + object_control: &'a ObjectControl, + background: &'a mut BackgroundRegular<'b>, + foreground: &'a mut BackgroundRegular<'b>, + input: ButtonController, + ) -> Self { + let mut e: [enemies::Enemy<'a>; 16] = Default::default(); + let mut enemy_count = 0; + for &slime in level.slimes { + e[enemy_count] = enemies::Enemy::new_slime(object_control, slime.into()); + enemy_count += 1; + } + + for &snail in level.snails { + e[enemy_count] = enemies::Enemy::new_snail(object_control, snail.into()); + enemy_count += 1; + } + + let start_pos: Vector2D = level.start_pos.into(); + + let background_position = ( + (start_pos.x - WIDTH / 2) + .clamp(0.into(), ((level.dimensions.x * 8) as i32 - WIDTH).into()), + (start_pos.y - HEIGHT / 2) + .clamp(0.into(), ((level.dimensions.y * 8) as i32 - HEIGHT).into()), + ) + .into(); + + PlayingLevel { + timer: 0, + background: Map { + background, + foreground, + level, + position: background_position, + }, + player: Player::new(object_control, start_pos), + input, + enemies: e, + } + } + + fn load_1(&'c mut self) -> impl Iterator + 'c { + self.background.load_background() + } + + fn load_2(&'c mut self) -> impl Iterator + 'c { + self.background.load_foreground() + } + + fn show_backgrounds(&mut self) { + self.background.background.show(); + self.background.foreground.show(); + } + + fn dead_start(&mut self) { + self.player.wizard.velocity = (0, -1).into(); + self.player.wizard.sprite.set_priority(Priority::P0); + } + + fn dead_update(&mut self) -> bool { + self.timer += 1; + + self.player.wizard.velocity += (0.into(), FixedNumberType::new(1) / 32).into(); + self.player.wizard.position += self.player.wizard.velocity; + self.player + .wizard + .sprite + .set_tile_id((self.timer / 8 % 2 * 4 + 63 * 4) as u16); + + self.player.wizard.commit_position(self.background.position); + + self.player.wizard.position.y - self.background.position.y < (HEIGHT + 8).into() + } + + fn update_frame(&mut self, sfx_player: &mut sfx::SfxPlayer) -> UpdateState { + self.timer += 1; + self.input.update(); + + let mut player_dead = false; + + self.player.update_frame( + &self.input, + self.timer, + &self.background.level, + &self.enemies, + sfx_player, + ); + + for enemy in self.enemies.iter_mut() { + match enemy.update( + &self.background.level, + self.player.wizard.position, + self.player.hat_state, + self.timer, + sfx_player, + ) { + enemies::EnemyUpdateState::KillPlayer => player_dead = true, + enemies::EnemyUpdateState::None => {} + } + } + + self.background.position = self.get_next_map_position(); + self.background.commit_position(); + + self.player.wizard.commit_position(self.background.position); + self.player.hat.commit_position(self.background.position); + + for enemy in self.enemies.iter_mut() { + enemy.commit(self.background.position); + } + + player_dead |= self + .player + .wizard + .killision_at_point(&self.background.level, self.player.wizard.position); + if player_dead { + UpdateState::Dead + } else if self + .player + .wizard + .completion_at_point(self.background.level, self.player.wizard.position) + { + UpdateState::Complete + } else { + UpdateState::Normal + } + } + + fn get_next_map_position(&self) -> Vector2D { + // want to ensure the player and the hat are visible if possible, so try to position the map + // so the centre is at the average position. But give the player some extra priority + let hat_pos = self.player.hat.position.floor(); + let player_pos = self.player.wizard.position.floor(); + + let new_target_position = (hat_pos + player_pos * 3) / 4; + + let screen: Vector2D = (WIDTH, HEIGHT).into(); + let half_screen = screen / 2; + let current_centre = self.background.position.floor() + half_screen; + + let mut target_position = ((current_centre * 3 + new_target_position) / 4) - half_screen; + + target_position.x = target_position.x.clamp( + 0.into(), + ((self.background.level.dimensions.x * 8 - (WIDTH as u32)) as i32).into(), + ); + target_position.y = target_position.y.clamp( + 0.into(), + ((self.background.level.dimensions.y * 8 - (HEIGHT as u32)) as i32).into(), + ); + + target_position.into() + } +} + +#[no_mangle] +pub fn main() -> ! { + let mut agb = agb::Gba::new(); + + splash_screen::show_splash_screen(&mut agb, splash_screen::SplashScreen::Start, None, None); + + loop { + let mut tiled = agb.display.video.tiled0(); + let mut object = agb.display.object.get(); + let mut timer_controller = agb.timers.timers(); + let mut mixer = agb.mixer.mixer(&mut timer_controller.timer0); + + tiled.set_background_palettes(tile_sheet::background.palettes); + tiled.set_background_tilemap(0, tile_sheet::background.tiles); + object.set_sprite_palettes(object_sheet::object_sheet.palettes); + object.set_sprite_tilemap(object_sheet::object_sheet.tiles); + + let mut world_display = tiled.get_raw_regular().unwrap(); + world_display.clear(level_display::BLANK); + world_display.show(); + + let mut background = tiled.get_regular().unwrap(); + let mut foreground = tiled.get_regular().unwrap(); + object.enable(); + + mixer.enable(); + let mut music_box = sfx::MusicBox::new(); + + let vblank = agb::interrupt::VBlank::get(); + let mut current_level = 0; + + loop { + if current_level == map_tiles::LEVELS.len() as u32 { + break; + } + + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + + level_display::write_level( + &mut world_display, + current_level / 8 + 1, + current_level % 8 + 1, + ); + + world_display.show(); + + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + + let mut level = PlayingLevel::open_level( + &map_tiles::LEVELS[current_level as usize], + &object, + &mut background, + &mut foreground, + agb::input::ButtonController::new(), + ); + let mut level_load = level.load_1().step_by(24); + for _ in 0..30 { + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + level_load.next(); + } + level_load.count(); + let mut level_load = level.load_2().step_by(24); + for _ in 0..30 { + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + level_load.next(); + } + level_load.count(); + level.show_backgrounds(); + + world_display.hide(); + + loop { + match level.update_frame(&mut sfx::SfxPlayer::new(&mut mixer, &music_box)) { + UpdateState::Normal => {} + UpdateState::Dead => { + level.dead_start(); + while level.dead_update() { + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + } + break; + } + UpdateState::Complete => { + current_level += 1; + break; + } + } + vblank.wait_for_vblank(); + music_box.after_blank(&mut mixer); + mixer.vblank(); + } + } + + splash_screen::show_splash_screen( + &mut agb, + splash_screen::SplashScreen::End, + Some(&mut mixer), + Some(&mut music_box), + ); + } +} diff --git a/examples/the-hat-chooses-the-wizard/src/sfx.rs b/examples/the-hat-chooses-the-wizard/src/sfx.rs new file mode 100644 index 00000000..1ba37a53 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/src/sfx.rs @@ -0,0 +1,126 @@ +use agb::sound::mixer::{Mixer, SoundChannel}; + +mod music_data { + // From the open game art page: + // + // USING THE LOOPED VERSION: + // 1. Play the intro. + // 2. When the intro reaches approximately 11.080 seconds, trigger the main loop and let the intro finish underneath it. + // 3. Re-trigger the main loop every time it reaches 1 minute 26.080 seconds, and let the old instance finish underneath the new one. + pub const INTRO_MUSIC: &[u8] = + agb::include_wav!("sfx/Otto Halmén - Sylvan Waltz (loop intro).wav"); + pub const LOOP: &[u8] = agb::include_wav!("sfx/Otto Halmén - Sylvan Waltz (loop main).wav"); + + // These are based on the instructions above and a frame rate of 59.73Hz + pub const TRIGGER_MUSIC_POINT: i32 = 662; + pub const LOOP_MUSIC: i32 = 5141; +} + +mod effects { + const WOOSH1: &[u8] = agb::include_wav!("sfx/woosh1.wav"); + const WOOSH2: &[u8] = agb::include_wav!("sfx/woosh2.wav"); + const WOOSH3: &[u8] = agb::include_wav!("sfx/woosh3.wav"); + + pub const WHOOSHES: &[&[u8]] = &[WOOSH1, WOOSH2, WOOSH3]; + + pub const CATCH: &[u8] = agb::include_wav!("sfx/catch.wav"); + + pub const JUMP: &[u8] = agb::include_wav!("sfx/jump.wav"); + pub const LAND: &[u8] = agb::include_wav!("sfx/land.wav"); + + pub const SLIME_JUMP: &[u8] = agb::include_wav!("sfx/slime-jump.wav"); + pub const SLIME_DEATH: &[u8] = agb::include_wav!("sfx/slime-death.wav"); + + pub const SNAIL_EMERGE: &[u8] = agb::include_wav!("sfx/snail-emerge.wav"); + pub const SNAIL_RETREAT: &[u8] = agb::include_wav!("sfx/snail-retreat.wav"); + pub const SNAIL_HAT_BOUNCE: &[u8] = agb::include_wav!("sfx/snail-hat-bounce.wav"); + pub const SNAIL_DEATH: &[u8] = agb::include_wav!("sfx/snail-death.wav"); +} + +pub struct MusicBox { + frame: i32, +} + +impl MusicBox { + pub fn new() -> Self { + MusicBox { frame: 0 } + } + + pub fn after_blank(&mut self, mixer: &mut Mixer) { + if self.frame == 0 { + // play the introduction + mixer.play_sound(SoundChannel::new_high_priority(music_data::INTRO_MUSIC)); + } else if self.frame == music_data::TRIGGER_MUSIC_POINT + || (self.frame - music_data::TRIGGER_MUSIC_POINT) % music_data::LOOP_MUSIC == 0 + { + mixer.play_sound(SoundChannel::new_high_priority(music_data::LOOP)); + } + + self.frame += 1; + } +} + +pub struct SfxPlayer<'a, 'b> { + mixer: &'a mut Mixer<'b>, + frame: i32, +} + +impl<'a, 'b> SfxPlayer<'a, 'b> { + pub fn new(mixer: &'a mut Mixer<'b>, music_box: &MusicBox) -> Self { + SfxPlayer { + mixer, + frame: music_box.frame, + } + } + + pub fn catch(&mut self) { + self.mixer.play_sound(SoundChannel::new(effects::CATCH)); + } + + pub fn throw(&mut self) { + self.play_random(effects::WHOOSHES); + } + + pub fn jump(&mut self) { + self.mixer.play_sound(SoundChannel::new(effects::JUMP)); + } + + pub fn slime_jump(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SLIME_JUMP)); + } + + pub fn slime_death(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SLIME_DEATH)); + } + pub fn snail_emerge(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SNAIL_EMERGE)); + } + + pub fn snail_retreat(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SNAIL_RETREAT)); + } + + pub fn snail_hat_bounce(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SNAIL_HAT_BOUNCE)); + } + + pub fn snail_death(&mut self) { + self.mixer + .play_sound(SoundChannel::new(effects::SNAIL_DEATH)); + } + + pub fn land(&mut self) { + self.mixer.play_sound(SoundChannel::new(effects::LAND)); + } + + fn play_random(&mut self, effect: &[&'static [u8]]) { + self.mixer.play_sound(SoundChannel::new( + effect[(self.frame as usize) % effect.len()], + )); + } +} diff --git a/examples/the-hat-chooses-the-wizard/src/splash_screen.rs b/examples/the-hat-chooses-the-wizard/src/splash_screen.rs new file mode 100644 index 00000000..ef0e9525 --- /dev/null +++ b/examples/the-hat-chooses-the-wizard/src/splash_screen.rs @@ -0,0 +1,64 @@ +use super::sfx::MusicBox; +use agb::sound::mixer::Mixer; + +agb::include_gfx!("gfx/splash_screens.toml"); + +pub enum SplashScreen { + Start, + End, +} + +pub fn show_splash_screen( + agb: &mut agb::Gba, + which: SplashScreen, + mut mixer: Option<&mut Mixer>, + mut music_box: Option<&mut MusicBox>, +) { + let mut tiled = agb.display.video.tiled0(); + + match which { + SplashScreen::Start => { + tiled.set_background_tilemap(0, splash_screens::splash.tiles); + tiled.set_background_palettes(splash_screens::splash.palettes); + } + SplashScreen::End => { + tiled.set_background_tilemap(0, splash_screens::thanks_for_playing.tiles); + tiled.set_background_palettes(splash_screens::thanks_for_playing.palettes); + } + } + let vblank = agb::interrupt::VBlank::get(); + let mut splash_screen_display = tiled.get_regular().unwrap(); + + let mut entries: [u16; 30 * 20] = [0; 30 * 20]; + for tile_id in 0..(30 * 20) { + entries[tile_id as usize] = tile_id; + } + let mut input = agb::input::ButtonController::new(); + splash_screen_display.set_map(agb::display::background::Map::new( + &entries, + (30_u32, 20_u32).into(), + 0, + )); + splash_screen_display.set_position((0, 0).into()); + splash_screen_display.commit(); + splash_screen_display.show(); + loop { + input.update(); + if input.is_just_pressed( + agb::input::Button::A + | agb::input::Button::B + | agb::input::Button::START + | agb::input::Button::SELECT, + ) { + break; + } + vblank.wait_for_vblank(); + if let Some(ref mut mixer) = mixer { + if let Some(ref mut music_box) = music_box { + music_box.after_blank(mixer); + } + mixer.vblank(); + } + } + splash_screen_display.hide(); +}