mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 08:11:33 +11:00
Add the hat chooses the wizard example
This commit is contained in:
parent
2e181ad0ea
commit
92d63999e8
10
examples/the-hat-chooses-the-wizard/.cargo/config.toml
Normal file
10
examples/the-hat-chooses-the-wizard/.cargo/config.toml
Normal file
|
@ -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"
|
2
examples/the-hat-chooses-the-wizard/.gitignore
vendored
Normal file
2
examples/the-hat-chooses-the-wizard/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/target
|
||||
/joinedtogether.*
|
6
examples/the-hat-chooses-the-wizard/.vscode/settings.json
vendored
Normal file
6
examples/the-hat-chooses-the-wizard/.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"files.associations": {
|
||||
"*.tsx": "xml",
|
||||
"*.tmx": "xml"
|
||||
}
|
||||
}
|
361
examples/the-hat-chooses-the-wizard/Cargo.lock
generated
Normal file
361
examples/the-hat-chooses-the-wizard/Cargo.lock
generated
Normal file
|
@ -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"
|
17
examples/the-hat-chooses-the-wizard/Cargo.toml
Normal file
17
examples/the-hat-chooses-the-wizard/Cargo.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[package]
|
||||
name = "joinedtogether"
|
||||
version = "0.1.0"
|
||||
authors = ["Corwin Kuiper <corwin@kuiper.dev>", "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
|
373
examples/the-hat-chooses-the-wizard/LICENSE
Normal file
373
examples/the-hat-chooses-the-wizard/LICENSE
Normal file
|
@ -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.
|
18
examples/the-hat-chooses-the-wizard/README.md
Normal file
18
examples/the-hat-chooses-the-wizard/README.md
Normal file
|
@ -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.
|
234
examples/the-hat-chooses-the-wizard/build.rs
Normal file
234
examples/the-hat-chooses-the-wizard/build.rs
Normal file
|
@ -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::<Vec<String>>()
|
||||
.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::<Vec<_>>()
|
||||
.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::<Vec<_>>()
|
||||
.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::<Vec<_>>()
|
||||
.join(", ");
|
||||
let snails_str = snails
|
||||
.iter()
|
||||
.map(|slime| format!("({}, {})", slime.0, slime.1))
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ");
|
||||
let enemy_stop_str = enemy_stops
|
||||
.iter()
|
||||
.map(|enemy_stop| format!("({}, {})", enemy_stop.0, enemy_stop.1))
|
||||
.collect::<Vec<_>>()
|
||||
.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<TiledLayer>,
|
||||
width: i32,
|
||||
height: i32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct TiledLayer {
|
||||
data: Option<Vec<i32>>,
|
||||
objects: Option<Vec<TiledObject>>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct TiledObject {
|
||||
#[serde(rename = "type")]
|
||||
object_type: String,
|
||||
x: i32,
|
||||
y: i32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct TiledTilemap {
|
||||
tiles: Vec<TiledTile>,
|
||||
tilecount: i32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct TiledTile {
|
||||
id: i32,
|
||||
#[serde(rename = "type")]
|
||||
tile_type: String,
|
||||
}
|
||||
}
|
106
examples/the-hat-chooses-the-wizard/gba.ld
Normal file
106
examples/the-hat-chooses-the-wizard/gba.ld
Normal file
|
@ -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/ : { *(*) }
|
||||
}
|
BIN
examples/the-hat-chooses-the-wizard/gfx/object_sheet.png
Normal file
BIN
examples/the-hat-chooses-the-wizard/gfx/object_sheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,6 @@
|
|||
version = "1.0"
|
||||
|
||||
[image.object_sheet]
|
||||
filename = "object_sheet.png"
|
||||
tile_size = "8x8"
|
||||
transparent_colour = "2ce8f4"
|
BIN
examples/the-hat-chooses-the-wizard/gfx/splash.png
Normal file
BIN
examples/the-hat-chooses-the-wizard/gfx/splash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
11
examples/the-hat-chooses-the-wizard/gfx/splash_screens.toml
Normal file
11
examples/the-hat-chooses-the-wizard/gfx/splash_screens.toml
Normal file
|
@ -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"
|
BIN
examples/the-hat-chooses-the-wizard/gfx/thanks_for_playing.png
Normal file
BIN
examples/the-hat-chooses-the-wizard/gfx/thanks_for_playing.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
BIN
examples/the-hat-chooses-the-wizard/gfx/tile_sheet.png
Normal file
BIN
examples/the-hat-chooses-the-wizard/gfx/tile_sheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
7
examples/the-hat-chooses-the-wizard/gfx/tile_sheet.toml
Normal file
7
examples/the-hat-chooses-the-wizard/gfx/tile_sheet.toml
Normal file
|
@ -0,0 +1,7 @@
|
|||
version = "1.0"
|
||||
|
||||
[image.background]
|
||||
filename = "tile_sheet.png"
|
||||
tile_size = "8x8"
|
||||
transparent_colour = "2ce8f4"
|
||||
|
75
examples/the-hat-chooses-the-wizard/map/1-1.json
Normal file
75
examples/the-hat-chooses-the-wizard/map/1-1.json
Normal file
|
@ -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
|
||||
}
|
60
examples/the-hat-chooses-the-wizard/map/1-1.tmx
Normal file
60
examples/the-hat-chooses-the-wizard/map/1-1.tmx
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="3">
|
||||
<editorsettings>
|
||||
<export target="1-1.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Background + Embelishments" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Point Locations">
|
||||
<object id="1" type="Player Start" x="16" y="80">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
75
examples/the-hat-chooses-the-wizard/map/1-2.json
Normal file
75
examples/the-hat-chooses-the-wizard/map/1-2.json
Normal file
|
@ -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
|
||||
}
|
60
examples/the-hat-chooses-the-wizard/map/1-2.tmx
Normal file
60
examples/the-hat-chooses-the-wizard/map/1-2.tmx
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="3">
|
||||
<editorsettings>
|
||||
<export target="1-2.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Background" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Point locations">
|
||||
<object id="1" type="Player Start" x="16" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
111
examples/the-hat-chooses-the-wizard/map/1-3.json
Normal file
111
examples/the-hat-chooses-the-wizard/map/1-3.json
Normal file
|
@ -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
|
||||
}
|
69
examples/the-hat-chooses-the-wizard/map/1-3.tmx
Normal file
69
examples/the-hat-chooses-the-wizard/map/1-3.tmx
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="5">
|
||||
<editorsettings>
|
||||
<export target="1-3.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Background" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Point locations">
|
||||
<object id="1" type="Player Start" x="40" y="104">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Slime Spawn" x="120" y="104">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Enemy Stop" x="112" y="104">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Enemy Stop" x="128" y="104">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
88
examples/the-hat-chooses-the-wizard/map/1-4.json
Normal file
88
examples/the-hat-chooses-the-wizard/map/1-4.json
Normal file
|
@ -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
|
||||
}
|
63
examples/the-hat-chooses-the-wizard/map/1-4.tmx
Normal file
63
examples/the-hat-chooses-the-wizard/map/1-4.tmx
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" backgroundcolor="#2ce8f4" nextlayerid="4" nextobjectid="4">
|
||||
<editorsettings>
|
||||
<export target="1-4.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Background + Embelishments" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Point locations">
|
||||
<object id="2" type="Slime Spawn" x="176" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Player Start" x="48" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
103
examples/the-hat-chooses-the-wizard/map/1-5.json
Normal file
103
examples/the-hat-chooses-the-wizard/map/1-5.json
Normal file
File diff suppressed because one or more lines are too long
189
examples/the-hat-chooses-the-wizard/map/1-5.tmx
Normal file
189
examples/the-hat-chooses-the-wizard/map/1-5.tmx
Normal file
|
@ -0,0 +1,189 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="80" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="6">
|
||||
<editorsettings>
|
||||
<export target="1-5.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Background" width="30" height="80">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="30" height="80">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Points">
|
||||
<object id="1" type="Player Start" x="64" y="576">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Slime Spawn" x="120" y="248">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Enemy Stop" x="176" y="248">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="5" type="Enemy Stop" x="176" y="248">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
103
examples/the-hat-chooses-the-wizard/map/1-6.json
Normal file
103
examples/the-hat-chooses-the-wizard/map/1-6.json
Normal file
|
@ -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
|
||||
}
|
69
examples/the-hat-chooses-the-wizard/map/1-6.tmx
Normal file
69
examples/the-hat-chooses-the-wizard/map/1-6.tmx
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="6">
|
||||
<editorsettings>
|
||||
<export target="1-6.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Embellishments" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="Background" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,
|
||||
309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Positions">
|
||||
<object id="1" type="Snail Spawn" x="96" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Enemy Stop" x="88" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Enemy Stop" x="104" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Player Start" x="48" y="72">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
103
examples/the-hat-chooses-the-wizard/map/1-7.json
Normal file
103
examples/the-hat-chooses-the-wizard/map/1-7.json
Normal file
|
@ -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
|
||||
}
|
69
examples/the-hat-chooses-the-wizard/map/1-7.tmx
Normal file
69
examples/the-hat-chooses-the-wizard/map/1-7.tmx
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="5">
|
||||
<editorsettings>
|
||||
<export target="1-7.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="1" name="Embelishments" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="Background" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
229,229,229,229,229,229,229,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Object Layer 1">
|
||||
<object id="1" type="Snail Spawn" x="104" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Enemy Stop" x="96" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Enemy Stop" x="120" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Player Start" x="80" y="40">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
111
examples/the-hat-chooses-the-wizard/map/1-8.json
Normal file
111
examples/the-hat-chooses-the-wizard/map/1-8.json
Normal file
|
@ -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
|
||||
}
|
69
examples/the-hat-chooses-the-wizard/map/1-8.tmx
Normal file
69
examples/the-hat-chooses-the-wizard/map/1-8.tmx
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="5">
|
||||
<editorsettings>
|
||||
<export target="1-8.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="back" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="world" width="30" height="20">
|
||||
<data encoding="csv">
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="objs">
|
||||
<object id="1" type="Snail Spawn" x="116" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Enemy Stop" x="108" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Enemy Stop" x="124" y="112">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Player Start" x="32" y="96">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
199
examples/the-hat-chooses-the-wizard/map/2-1.json
Normal file
199
examples/the-hat-chooses-the-wizard/map/2-1.json
Normal file
File diff suppressed because one or more lines are too long
173
examples/the-hat-chooses-the-wizard/map/2-1.tmx
Normal file
173
examples/the-hat-chooses-the-wizard/map/2-1.tmx
Normal file
|
@ -0,0 +1,173 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="30" height="60" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="56">
|
||||
<editorsettings>
|
||||
<export target="2-1.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="1" name="Extras" width="30" height="60">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="Map" width="30" height="60">
|
||||
<data encoding="csv">
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,
|
||||
229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Positions">
|
||||
<object id="1" type="Player Start" x="88" y="56">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="43" type="Slime Spawn" x="136" y="120">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="44" type="Slime Spawn" x="72" y="168">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="45" type="Slime Spawn" x="96" y="224">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="46" type="Slime Spawn" x="40" y="288">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="47" type="Slime Spawn" x="96" y="336">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="48" type="Enemy Stop" x="56" y="336">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="49" type="Snail Spawn" x="96" y="456">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="50" type="Enemy Stop" x="128" y="456">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="51" type="Slime Spawn" x="168" y="288">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="52" type="Enemy Stop" x="176" y="288">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="54" type="Enemy Stop" x="24" y="288">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
111
examples/the-hat-chooses-the-wizard/map/2-2.json
Normal file
111
examples/the-hat-chooses-the-wizard/map/2-2.json
Normal file
File diff suppressed because one or more lines are too long
89
examples/the-hat-chooses-the-wizard/map/2-2.tmx
Normal file
89
examples/the-hat-chooses-the-wizard/map/2-2.tmx
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="96" height="30" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="7">
|
||||
<editorsettings>
|
||||
<export target="2-2.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Backdrop" width="96" height="30">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="96" height="30">
|
||||
<data encoding="csv">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Objs">
|
||||
<object id="1" type="Player Start" x="48" y="64">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Snail Spawn" x="408" y="96">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Enemy Stop" x="400" y="96">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="5" type="Enemy Stop" x="416" y="96">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
187
examples/the-hat-chooses-the-wizard/map/2-3.json
Normal file
187
examples/the-hat-chooses-the-wizard/map/2-3.json
Normal file
File diff suppressed because one or more lines are too long
130
examples/the-hat-chooses-the-wizard/map/2-3.tmx
Normal file
130
examples/the-hat-chooses-the-wizard/map/2-3.tmx
Normal file
|
@ -0,0 +1,130 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="60" height="40" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="14">
|
||||
<editorsettings>
|
||||
<export target="2-3.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="1" name="Extras" width="60" height="40">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="Map" width="60" height="40">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Positions">
|
||||
<object id="1" type="Player Start" x="248" y="184">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Slime Spawn" x="344" y="184">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Snail Spawn" x="216" y="272">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Snail Spawn" x="216" y="56">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="6" type="Slime Spawn" x="80" y="24">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="7" type="Slime Spawn" x="48" y="224">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="8" type="Enemy Stop" x="56" y="24">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="9" type="Enemy Stop" x="104" y="24">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="10" type="Enemy Stop" x="360" y="184">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="11" type="Enemy Stop" x="96" y="224">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="12" type="Slime Spawn" x="320" y="184">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
159
examples/the-hat-chooses-the-wizard/map/2-4.json
Normal file
159
examples/the-hat-chooses-the-wizard/map/2-4.json
Normal file
File diff suppressed because one or more lines are too long
121
examples/the-hat-chooses-the-wizard/map/2-4.tmx
Normal file
121
examples/the-hat-chooses-the-wizard/map/2-4.tmx
Normal file
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" width="60" height="40" tilewidth="8" tileheight="8" infinite="0" nextlayerid="4" nextobjectid="10">
|
||||
<editorsettings>
|
||||
<export target="2-4.json" format="json"/>
|
||||
</editorsettings>
|
||||
<tileset firstgid="1" source="tilemap.tsx"/>
|
||||
<layer id="2" name="Backdrop" width="60" height="40">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="1" name="World" width="60" height="40">
|
||||
<data encoding="csv">
|
||||
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
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="3" name="Objs">
|
||||
<object id="1" type="Player Start" x="272" y="152">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="2" type="Slime Spawn" x="88" y="296">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="3" type="Slime Spawn" x="272" y="296">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="4" type="Slime Spawn" x="184" y="80">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="5" type="Snail Spawn" x="312" y="80">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="6" type="Enemy Stop" x="200" y="80">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="7" type="Enemy Stop" x="232" y="80">
|
||||
<point/>
|
||||
</object>
|
||||
<object id="8" type="Slime Spawn" x="448" y="304">
|
||||
<point/>
|
||||
</object>
|
||||
</objectgroup>
|
||||
</map>
|
10
examples/the-hat-chooses-the-wizard/map/objecttypes.xml
Normal file
10
examples/the-hat-chooses-the-wizard/map/objecttypes.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objecttypes>
|
||||
<objecttype name="Win" color="#a0a0a4"/>
|
||||
<objecttype name="Collision" color="#a0a0a4"/>
|
||||
<objecttype name="Enemy Stop" color="#ffff00"/>
|
||||
<objecttype name="Kill" color="#a0a0a4"/>
|
||||
<objecttype name="Player Start" color="#ff0000"/>
|
||||
<objecttype name="Slime Spawn" color="#00aa00"/>
|
||||
<objecttype name="Snail Spawn" color="#55557f"/>
|
||||
</objecttypes>
|
404
examples/the-hat-chooses-the-wizard/map/tilemap.json
Normal file
404
examples/the-hat-chooses-the-wizard/map/tilemap.json
Normal file
|
@ -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"
|
||||
}
|
102
examples/the-hat-chooses-the-wizard/map/tilemap.tsx
Normal file
102
examples/the-hat-chooses-the-wizard/map/tilemap.tsx
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tileset version="1.5" tiledversion="1.7.0" name="joined_together_in_a_tilemap-Sheet" tilewidth="8" tileheight="8" tilecount="364" columns="28">
|
||||
<editorsettings>
|
||||
<export target="tilemap.json" format="json"/>
|
||||
</editorsettings>
|
||||
<image source="../gfx/tile_sheet.png" trans="2ce8f4" width="224" height="104"/>
|
||||
<tile id="8" type="Collision"/>
|
||||
<tile id="9" type="Kill"/>
|
||||
<tile id="36" type="Collision"/>
|
||||
<tile id="37" type="Kill"/>
|
||||
<tile id="50" type="Collision"/>
|
||||
<tile id="53" type="Kill"/>
|
||||
<tile id="54" type="Collision"/>
|
||||
<tile id="64" type="Collision"/>
|
||||
<tile id="65" type="Kill"/>
|
||||
<tile id="78" type="Collision"/>
|
||||
<tile id="81" type="Kill"/>
|
||||
<tile id="82" type="Collision"/>
|
||||
<tile id="83" type="Kill"/>
|
||||
<tile id="106" type="Collision"/>
|
||||
<tile id="107" type="Kill"/>
|
||||
<tile id="109" type="Kill"/>
|
||||
<tile id="110" type="Collision"/>
|
||||
<tile id="111" type="Kill"/>
|
||||
<tile id="133" type="Kill"/>
|
||||
<tile id="134" type="Collision"/>
|
||||
<tile id="137" type="Kill"/>
|
||||
<tile id="138" type="Collision"/>
|
||||
<tile id="140" type="Kill"/>
|
||||
<tile id="141" type="Kill"/>
|
||||
<tile id="161" type="Kill"/>
|
||||
<tile id="162" type="Collision"/>
|
||||
<tile id="163" type="Kill"/>
|
||||
<tile id="166" type="Collision"/>
|
||||
<tile id="189" type="Kill"/>
|
||||
<tile id="190" type="Collision"/>
|
||||
<tile id="192" type="Kill"/>
|
||||
<tile id="193" type="Collision"/>
|
||||
<tile id="194" type="Collision"/>
|
||||
<tile id="195" type="Kill"/>
|
||||
<tile id="196" type="Collision"/>
|
||||
<tile id="198" type="Collision"/>
|
||||
<tile id="199" type="Collision"/>
|
||||
<tile id="200" type="Collision"/>
|
||||
<tile id="201" type="Collision"/>
|
||||
<tile id="202" type="Collision"/>
|
||||
<tile id="203" type="Collision"/>
|
||||
<tile id="217" type="Kill"/>
|
||||
<tile id="218" type="Collision"/>
|
||||
<tile id="220" type="Kill"/>
|
||||
<tile id="221" type="Collision"/>
|
||||
<tile id="222" type="Collision"/>
|
||||
<tile id="223" type="Win"/>
|
||||
<tile id="224" type="Collision"/>
|
||||
<tile id="226" type="Collision"/>
|
||||
<tile id="227" type="Collision"/>
|
||||
<tile id="228" type="Collision"/>
|
||||
<tile id="229" type="Collision"/>
|
||||
<tile id="230" type="Collision"/>
|
||||
<tile id="231" type="Collision"/>
|
||||
<tile id="246" type="Collision"/>
|
||||
<tile id="247" type="Kill"/>
|
||||
<tile id="248" type="Kill"/>
|
||||
<tile id="249" type="Collision"/>
|
||||
<tile id="250" type="Collision"/>
|
||||
<tile id="251" type="Win"/>
|
||||
<tile id="252" type="Collision"/>
|
||||
<tile id="255" type="Kill"/>
|
||||
<tile id="256" type="Kill"/>
|
||||
<tile id="257" type="Kill"/>
|
||||
<tile id="274" type="Collision"/>
|
||||
<tile id="275" type="Kill"/>
|
||||
<tile id="276" type="Kill"/>
|
||||
<tile id="277" type="Collision"/>
|
||||
<tile id="278" type="Collision"/>
|
||||
<tile id="279" type="Win"/>
|
||||
<tile id="280" type="Collision"/>
|
||||
<tile id="281" type="Collision"/>
|
||||
<tile id="283" type="Kill"/>
|
||||
<tile id="284" type="Kill"/>
|
||||
<tile id="285" type="Kill"/>
|
||||
<tile id="287" type="Collision"/>
|
||||
<tile id="288" type="Collision"/>
|
||||
<tile id="300" type="Collision"/>
|
||||
<tile id="301" type="Kill"/>
|
||||
<tile id="302" type="Collision"/>
|
||||
<tile id="303" type="Kill"/>
|
||||
<tile id="308" type="Collision"/>
|
||||
<tile id="309" type="Collision"/>
|
||||
<tile id="310" type="Collision"/>
|
||||
<tile id="315" type="Collision"/>
|
||||
<tile id="316" type="Collision"/>
|
||||
<tile id="317" type="Collision"/>
|
||||
<tile id="318" type="Collision"/>
|
||||
<tile id="327" type="Collision"/>
|
||||
<tile id="328" type="Collision"/>
|
||||
<tile id="329" type="Kill"/>
|
||||
<tile id="330" type="Collision"/>
|
||||
<tile id="331" type="Kill"/>
|
||||
<tile id="354" type="Collision"/>
|
||||
<tile id="355" type="Collision"/>
|
||||
</tileset>
|
3
examples/the-hat-chooses-the-wizard/rust-toolchain.toml
Normal file
3
examples/the-hat-chooses-the-wizard/rust-toolchain.toml
Normal file
|
@ -0,0 +1,3 @@
|
|||
[toolchain]
|
||||
channel = "nightly"
|
||||
components = ["rust-src", "clippy"]
|
BIN
examples/the-hat-chooses-the-wizard/screenshot.png
Normal file
BIN
examples/the-hat-chooses-the-wizard/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
Binary file not shown.
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/catch.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/catch.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/jump.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/jump.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/land.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/land.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/slime-death.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/slime-death.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/slime-jump.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/slime-jump.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-death.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-death.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-emerge.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-emerge.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-hat-bounce.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-hat-bounce.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-retreat.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/snail-retreat.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh1.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh1.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh2.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh2.wav
Normal file
Binary file not shown.
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh3.wav
Normal file
BIN
examples/the-hat-chooses-the-wizard/sfx/woosh3.wav
Normal file
Binary file not shown.
417
examples/the-hat-chooses-the-wizard/src/enemies.rs
Normal file
417
examples/the-hat-chooses-the-wizard/src/enemies.rs
Normal file
|
@ -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<FixedNumberType>) -> Self {
|
||||
Enemy::Slime(Slime::new(object, start_pos + (0, 1).into()))
|
||||
}
|
||||
|
||||
pub fn new_snail(object: &'a ObjectControl, start_pos: Vector2D<FixedNumberType>) -> Self {
|
||||
Enemy::Snail(Snail::new(object, start_pos))
|
||||
}
|
||||
|
||||
pub fn collides_with_hat(&self, position: Vector2D<FixedNumberType>) -> bool {
|
||||
match self {
|
||||
Enemy::Snail(snail) => snail.collides_with(position),
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn update(
|
||||
&mut self,
|
||||
level: &Level,
|
||||
player_pos: Vector2D<FixedNumberType>,
|
||||
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<FixedNumberType>) {
|
||||
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<FixedNumberType>,
|
||||
collision: Vector2D<u16>,
|
||||
) -> 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<FixedNumberType>) {
|
||||
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<FixedNumberType>) -> 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<FixedNumberType>,
|
||||
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<FixedNumberType>) {
|
||||
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<FixedNumberType>) -> 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<FixedNumberType>) -> bool {
|
||||
(self.enemy_info.entity.position - position).magnitude_squared() < (15 * 15).into()
|
||||
}
|
||||
|
||||
fn update(
|
||||
&mut self,
|
||||
level: &Level,
|
||||
player_pos: Vector2D<FixedNumberType>,
|
||||
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<FixedNumberType>) {
|
||||
self.enemy_info.commit(background_offset);
|
||||
}
|
||||
}
|
49
examples/the-hat-chooses-the-wizard/src/level_display.rs
Normal file
49
examples/the-hat-chooses-the-wizard/src/level_display.rs
Normal file
|
@ -0,0 +1,49 @@
|
|||
use agb::display::{background::BackgroundRegister, HEIGHT, WIDTH};
|
||||
|
||||
fn num_digits_iter(mut n: u32) -> impl core::iter::Iterator<Item = u8> {
|
||||
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());
|
||||
}
|
884
examples/the-hat-chooses-the-wizard/src/main.rs
Normal file
884
examples/the-hat-chooses-the-wizard/src/main.rs
Normal file
|
@ -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<u32>,
|
||||
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<FixedNumberType>,
|
||||
velocity: Vector2D<FixedNumberType>,
|
||||
collision_mask: Vector2D<u16>,
|
||||
}
|
||||
|
||||
impl<'a> Entity<'a> {
|
||||
pub fn new(object: &'a ObjectControl, collision_mask: Vector2D<u16>) -> 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<T: Fn(i32, i32) -> bool>(
|
||||
&self,
|
||||
position: Vector2D<FixedNumberType>,
|
||||
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<FixedNumberType>) -> bool {
|
||||
self.something_at_point(position, |x, y| level.collides(x, y))
|
||||
}
|
||||
|
||||
fn killision_at_point(&self, level: &Level, position: Vector2D<FixedNumberType>) -> bool {
|
||||
self.something_at_point(position, |x, y| level.kills(x, y))
|
||||
}
|
||||
|
||||
fn completion_at_point(&self, level: &Level, position: Vector2D<FixedNumberType>) -> bool {
|
||||
self.something_at_point(position, |x, y| level.wins(x, y))
|
||||
}
|
||||
|
||||
fn enemy_collision_at_point(
|
||||
&self,
|
||||
enemies: &[enemies::Enemy],
|
||||
position: Vector2D<FixedNumberType>,
|
||||
) -> 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<FixedNumberType> {
|
||||
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<FixedNumberType>, 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<FixedNumberType>,
|
||||
initial: FixedNumberType,
|
||||
) -> Vector2D<FixedNumberType> {
|
||||
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<FixedNumberType> = 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<FixedNumberType>) {
|
||||
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<FixedNumberType>,
|
||||
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<Item = ()> + '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<Item = ()> + '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<FixedNumberType>) -> 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<FixedNumberType> = {
|
||||
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<FixedNumberType> = (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<FixedNumberType> = 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<Item = ()> + 'c {
|
||||
self.background.load_background()
|
||||
}
|
||||
|
||||
fn load_2(&'c mut self) -> impl Iterator<Item = ()> + '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<FixedNumberType> {
|
||||
// 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<i32> = (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),
|
||||
);
|
||||
}
|
||||
}
|
126
examples/the-hat-chooses-the-wizard/src/sfx.rs
Normal file
126
examples/the-hat-chooses-the-wizard/src/sfx.rs
Normal file
|
@ -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()],
|
||||
));
|
||||
}
|
||||
}
|
64
examples/the-hat-chooses-the-wizard/src/splash_screen.rs
Normal file
64
examples/the-hat-chooses-the-wizard/src/splash_screen.rs
Normal file
|
@ -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();
|
||||
}
|
Loading…
Reference in a new issue