From: notzed@gmail.com Date: Sun, 15 Sep 2013 00:08:36 +0000 (+0000) Subject: A basic duskz map viewer/verifier. X-Git-Tag: dusk-0.1~8 X-Git-Url: https://code.zedzone.au/cvs?a=commitdiff_plain;h=7e65257f17c0b41f6c56523da982f847b4cc349e;p=duskz A basic duskz map viewer/verifier. git-svn-id: file:///home/notzed/svn/duskz/trunk@13 b8b59bfb-1aa4-4687-8f88-a62eeb14c21e --- diff --git a/TileZ/COPYING b/TileZ/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/TileZ/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/TileZ/README b/TileZ/README new file mode 100644 index 0000000..f36093f --- /dev/null +++ b/TileZ/README @@ -0,0 +1,16 @@ + +README +------ + +This is pre-alpha work-in-progress map editor for DuskZ using JavaFX. + +In it's present state it allows for loading of a Tiled map and cross +referencing the content of an 'old' Dusk game with a 'new' DuskZ game +(i.e. scripts so on). + +At the moment it is hardcoded to data I only have locally so isn't +much use to anyone else. + +I can't even remember if i had intented to keep working on or or just +use it as a transition tool. There is very little code here at any +rate and most of it was a JavaFX learning exercise. diff --git a/TileZ/build.xml b/TileZ/build.xml new file mode 100644 index 0000000..7364f6a --- /dev/null +++ b/TileZ/build.xml @@ -0,0 +1,53 @@ + + Builds, tests, and runs the project TileZ. + + + diff --git a/TileZ/manifest.mf b/TileZ/manifest.mf new file mode 100644 index 0000000..328e8e5 --- /dev/null +++ b/TileZ/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/TileZ/nbproject/build-impl.xml b/TileZ/nbproject/build-impl.xml new file mode 100644 index 0000000..be7416c --- /dev/null +++ b/TileZ/nbproject/build-impl.xml @@ -0,0 +1,1473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set platform.home + Must set platform.bootcp + Must set platform.java + Must set platform.javac + + The J2SE Platform is not correctly set up. + Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. + Either open the project in the IDE and setup the Platform with the same name or add it manually. + For example like this: + ant -Duser.properties.file=<path_to_property_file> jar (where you put the property "platforms.${platform.active}.home" in a .properties file) + or ant -Dplatforms.${platform.active}.home=<path_to_JDK_home> jar (where no properties file is used) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + + + + + + ${platform.java} -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + ${platform.java} -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TileZ/nbproject/configs/Run_as_WebStart.properties b/TileZ/nbproject/configs/Run_as_WebStart.properties new file mode 100644 index 0000000..670fff0 --- /dev/null +++ b/TileZ/nbproject/configs/Run_as_WebStart.properties @@ -0,0 +1,2 @@ +# Do not modify this property in this configuration. It can be re-generated. +$label=Run as WebStart diff --git a/TileZ/nbproject/configs/Run_in_Browser.properties b/TileZ/nbproject/configs/Run_in_Browser.properties new file mode 100644 index 0000000..f2a5a65 --- /dev/null +++ b/TileZ/nbproject/configs/Run_in_Browser.properties @@ -0,0 +1,2 @@ +# Do not modify this property in this configuration. It can be re-generated. +$label=Run in Browser diff --git a/TileZ/nbproject/genfiles.properties b/TileZ/nbproject/genfiles.properties new file mode 100644 index 0000000..8f8bdbe --- /dev/null +++ b/TileZ/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=79945bc4 +build.xml.script.CRC32=80e8c13b +build.xml.stylesheet.CRC32=28e38971@1.56.1.46 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=75566cc4 +nbproject/build-impl.xml.script.CRC32=fd7d9148 +nbproject/build-impl.xml.stylesheet.CRC32=c6d2a60f@1.56.1.46 diff --git a/TileZ/nbproject/jfx-impl.xml b/TileZ/nbproject/jfx-impl.xml new file mode 100644 index 0000000..43adba7 --- /dev/null +++ b/TileZ/nbproject/jfx-impl.xml @@ -0,0 +1,3218 @@ + + + + + JavaFX-specific Ant calls + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${cssfileslist} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TileZ/nbproject/project.properties b/TileZ/nbproject/project.properties new file mode 100644 index 0000000..f73a8d4 --- /dev/null +++ b/TileZ/nbproject/project.properties @@ -0,0 +1,123 @@ +project.DuskServer=../DuskServer +project.DuskZ=../DuskZ +project.license=gpl30 +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=TileZ +application.vendor=Michael Zucchi +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +compile.on.save=true +compile.on.save.unsupported.javafx=true +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/TileZ.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +includes=** +# Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects +jar.archive.disabled=true +jar.compress=false +javac.classpath=\ + ${javafx.runtime}/lib/jfxrt.jar:\ + ${javafx.runtime}/lib/deploy.jar:\ + ${javafx.runtime}/lib/javaws.jar:\ + ${javafx.runtime}/lib/plugin.jar:\ + ${reference.DuskServer.jar}:\ + ${reference.DuskZ.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.7 +javac.target=1.7 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +javafx.binarycss=false +javafx.deploy.adddesktopshortcut=false +javafx.deploy.addstartmenushortcut=false +javafx.deploy.allowoffline=true +# If true, application update mode is set to 'background', if false, update mode is set to 'eager' +javafx.deploy.backgroundupdate=false +javafx.deploy.embedJNLP=true +javafx.deploy.includeDT=true +javafx.deploy.installpermanently=false +javafx.deploy.permissionselevated=false +# Set true to prevent creation of temporary copy of deployment artifacts before each run (disables concurrent runs) +javafx.disable.concurrent.runs=false +# Set true to enable multiple concurrent runs of the same WebStart or Run-in-Browser project +javafx.enable.concurrent.external.runs=false +# This is a JavaFX project +javafx.enabled=true +javafx.fallback.class=com.javafx.main.NoJavaFXFallback +# Main class for JavaFX +javafx.main.class=au.notzed.tilez.TileZ +javafx.native.bundling.enabled=false +javafx.native.bundling.type=none +javafx.preloader.class= +# This project does not use Preloader +javafx.preloader.enabled=false +javafx.preloader.jar.filename= +javafx.preloader.jar.path= +javafx.preloader.project.path= +javafx.preloader.type=none +# Set true for GlassFish only. Rebases manifest classpaths of JARs in lib dir. Not usable with signed JARs. +javafx.rebase.libs=false +javafx.run.height=600 +javafx.run.width=800 +javafx.runtime=${platforms.Default_JavaFX_Platform.javafx.runtime.home} +javafx.sdk=${platforms.Default_JavaFX_Platform.javafx.sdk.home} +javafx.signing.enabled=false +javafx.signing.type=notsigned +# Pre-JavaFX 2.0 WebStart is deactivated in JavaFX 2.0+ projects +jnlp.enabled=false +# Main class for Java launcher +main.class=com.javafx.main.Main +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=Default_JavaFX_Platform +reference.DuskServer.jar=${project.DuskServer}/dist/DuskServer.jar +reference.DuskZ.jar=${project.DuskZ}/dist/DuskZ.jar +run.classpath=\ + ${dist.jar}:\ + ${javac.classpath} +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/TileZ/nbproject/project.xml b/TileZ/nbproject/project.xml new file mode 100644 index 0000000..6b5a0bb --- /dev/null +++ b/TileZ/nbproject/project.xml @@ -0,0 +1,47 @@ + + + org.netbeans.modules.java.j2seproject + + + + + + + + + + + + + + + + TileZ + + + + + + + + + + + DuskServer + jar + + jar + clean + jar + + + DuskZ + jar + + jar + clean + jar + + + + diff --git a/TileZ/src/au/notzed/tilez/DuskInfoView.java b/TileZ/src/au/notzed/tilez/DuskInfoView.java new file mode 100644 index 0000000..b6ccad5 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/DuskInfoView.java @@ -0,0 +1,80 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.scene.control.TextArea; +import javafx.scene.control.TitledPane; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.VBox; + +/** + * Displays the old dusk format information + * + * @author Michael Zucchi + */ +public class DuskInfoView extends BorderPane { + + String oldmap = "/home/notzed/src/DuskRPG/DuskFiles/Dusk2.7.3"; + TextArea action; + TextArea able; + + public DuskInfoView() { + VBox vbox = new VBox(); + + action = new TextArea(); + able = new TextArea(); + + action.setEditable(false); + able.setEditable(false); + + vbox.getChildren().addAll( + new TitledPane("defMoveActions", action), + new TitledPane("defCanMoveScripts", able)); + + setCenter(vbox); + } + + void set(TextArea text, File path) { + if (path.exists()) { + try { + byte[] data = Files.readAllBytes(path.toPath()); + String string = new String(data, Charset.defaultCharset()).trim(); + + if (!string.equals("")) + text.setText(string); + else + text.setText(""); + } catch (IOException ex) { + Logger.getLogger(DuskInfoView.class.getName()).log(Level.SEVERE, null, ex); + } + } else { + text.setText(""); + } + } + + public void setLocation(int tx, int ty) { + set(action, new File(String.format("%s/defMoveActions/%d_%d", oldmap, tx, ty))); + set(able, new File(String.format("%s/defCanMoveScripts/%d_%d", oldmap, tx, ty))); + } +} diff --git a/TileZ/src/au/notzed/tilez/LocationEditor.java b/TileZ/src/au/notzed/tilez/LocationEditor.java new file mode 100644 index 0000000..98a97fd --- /dev/null +++ b/TileZ/src/au/notzed/tilez/LocationEditor.java @@ -0,0 +1,274 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import duskz.server.entityz.TileMap; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.IntegerProperty; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.control.Button; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.control.TitledPane; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; + +/** + * Edit various shit at a location. + * + * @author Michael Zucchi + */ +public class LocationEditor extends BorderPane implements ChangeListener { + + String game = "/home/notzed/dusk/game"; + int tx, ty; + TileMap map; + TextField alias; + TextField jumpto; + TextField able; + TextField action; + TextField visible; + TextArea ableScript; + TextArea actionScript; + TextArea visibleScript; + IntegerProperty tileX = new SimpleIntegerProperty(); + IntegerProperty tileY = new SimpleIntegerProperty(); + + public LocationEditor() { + GridPane main = new GridPane(); + + alias = new TextField(); + jumpto = new TextField(); + able = new TextField(); + action = new TextField(); + visible = new TextField(); + + ableScript = new TextArea(); + actionScript = new TextArea(); + visibleScript = new TextArea(); + + Button aliasb, gotob, ableb, visibleb, actionb; + int r = 0; + + TextField location; + main.add(new Button("Location"), 0, r); + main.add(location = new TextField(), 1, r++); + main.add(aliasb = new Button("Alias"), 0, r); + main.add(alias, 1, r++); + main.add(gotob = new Button("Goto"), 0, r); + main.add(jumpto, 1, r++); + main.add(actionb = new Button("Action"), 0, r); + main.add(action, 1, r++); + main.add(new TitledPane("Action Script", actionScript), 0, r++, 2, 1); + main.add(ableb = new Button("Able"), 0, r); + main.add(able, 1, r++); + main.add(new TitledPane("Able Script", ableScript), 0, r++, 2, 1); + main.add(visibleb = new Button("Visible"), 0, r); + main.add(visible, 1, r++); + main.add(new TitledPane("Visible Script", visibleScript), 0, r++, 2, 1); + + location.textProperty().bind(tileX.asString().concat(", ").concat(tileY.asString())); + + aliasb.setOnAction(new EventHandler() { + public void handle(ActionEvent t) { + // save the alias + String s = alias.getText(); + + if (s == null || (s = s.trim()).equals("")) { + // Clear it + map.setJumpAlias(tx, ty, null); + } else { + map.setJumpAlias(tx, ty, s); + } + } + }); + gotob.setOnAction(new EventHandler() { + public void handle(ActionEvent t) { + // save the alias + String s = jumpto.getText(); + + if (s == null || (s = s.trim()).equals("")) { + // Clear it + map.setAlias(tx, ty, null); + } else { + map.setAlias(tx, ty, s); + } + } + }); + ableb.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + editScript("onLocationAble", able.getText()); + } + }); + visibleb.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + editScript("onLocationVisible", visible.getText()); + } + }); + actionb.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + editScript("onLocationAction", action.getText()); + } + }); + + setCenter(main); + + tileX.addListener(this); + tileY.addListener(this); + } + + void editScript(String type, String name) { + if (name == null) + return; + + name = name.trim(); + if (name.equals("")) + return; + + try { + TextEditor te = new TextEditor(); + te.setPath(Paths.get("/home/notzed/dusk/game", type, name)); + te.show(); + } catch (IOException ex) { + Logger.getLogger(LocationEditor.class.getName()).log(Level.SEVERE, null, ex); + } + /* + final Stage win = new Stage(); + HBox buttons = new HBox(); + BorderPane root = new BorderPane(); + TextArea text = new TextArea(); + text.setPrefRowCount(30); + try { + byte[] bytes = Files.readAllBytes(Paths.get("/home/notzed/dusk/game", type, name)); + String string = new String(bytes, Charset.defaultCharset()); + + text.setText(string); + } catch (IOException ex) { + Logger.getLogger(LocationEditor.class.getName()).log(Level.SEVERE, null, ex); + } + + Button save, cancel; + buttons.getChildren().addAll(cancel = new Button("Cancel"), + save = new Button("Save")); + + save.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + } + }); + + cancel.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + win.close(); + } + }); + + root.setCenter(text); + root.setTop(buttons); + Scene scene = new Scene(root); + + win.setScene(scene); + + win.show(); + * */ + } + + public void setMap(TileMap map) { + this.map = map; + } + + public int getTileX() { + return tileX.get(); + } + + public int getTileY() { + return tileY.get(); + } + + public void setTileX(int tx) { + this.tx = tx; + tileX.set(tx); + } + + public void setTileY(int ty) { + this.ty = ty; + tileY.set(ty); + } + + public IntegerProperty tileXProperty() { + return tileX; + } + + public IntegerProperty tileYProperty() { + return tileY; + } + + @Override + public void changed(ObservableValue ov, Number t, Number t1) { + updateLocation(); + } + + void setContent(TextArea text, String type, String name) { + if (name == null) { + text.setText(null); + return; + } + Path path = Paths.get(game, type, name); + if (path.toFile().exists()) { + try { + text.setText(new String(Files.readAllBytes(path), Charset.defaultCharset())); + } catch (IOException ex) { + Logger.getLogger(LocationEditor.class.getName()).log(Level.SEVERE, null, ex); + } + } else { + text.setText(null); + } + } + + void updateLocation() { + int tx = getTileX(); + int ty = getTileY(); + + System.out.printf("updating editor for : %d,%d '%s'\n", tx, ty, map.aliasForLocation(tx, ty)); + + alias.setText(map.aliasForLocation(tx, ty)); + jumpto.setText(map.jumpAlias(tx, ty)); + able.setText(map.locationAbleScript(tx, ty)); + action.setText(map.locationActionScript(tx, ty)); + visible.setText(map.locationVisibleScript(tx, ty)); + + setContent(visibleScript, "onLocationVisible", visible.getText()); + setContent(actionScript, "onLocationAction", action.getText()); + setContent(ableScript, "onLocationAble", able.getText()); + + } +} diff --git a/TileZ/src/au/notzed/tilez/MapLayer.java b/TileZ/src/au/notzed/tilez/MapLayer.java new file mode 100644 index 0000000..09de41a --- /dev/null +++ b/TileZ/src/au/notzed/tilez/MapLayer.java @@ -0,0 +1,67 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import javafx.geometry.Orientation; +import javafx.scene.control.ListView; +import javafx.scene.control.ScrollBar; +import javafx.scene.control.cell.ComboBoxListCell; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; +import javafx.util.Callback; + +/** + * Layer of a map. i.e. a set of tiles. + * + * Hmm, should this virtualise it's view? + * @author Michael Zucchi + */ +public class MapLayer extends BorderPane { + int[] mapArray; + ScrollBar hscroll, vscroll; + + public MapLayer() { + hscroll = new ScrollBar(); + vscroll = new ScrollBar(); + vscroll.setOrientation(Orientation.VERTICAL); + + setBottom(hscroll); + setRight(vscroll); + } + + + void main() { + ComboBoxListCell.forListView(null); + + ListView lv = null; + lv.setCellFactory(new Callback() { + + @Override + public Object call(Object p) { + throw new UnsupportedOperationException("Not supported yet."); + } + }); + + } + + class MapView extends Pane { + // track/update visible portion? + } + + +} diff --git a/TileZ/src/au/notzed/tilez/MapSelectionModel.java b/TileZ/src/au/notzed/tilez/MapSelectionModel.java new file mode 100644 index 0000000..268b199 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/MapSelectionModel.java @@ -0,0 +1,78 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; + +/** + * Region selection + * + * @author Michael Zucchi + */ +public class MapSelectionModel { + + ObjectProperty boundsProperty = new SimpleObjectProperty<>(); + + // TODO: move this to where TileMap lives + public static class Bounds { + + public int left, right, top, bottom; + + public Bounds() { + } + + public Bounds(int left, int right, int top, int bottom) { + this.left = left; + this.right = right; + this.top = top; + this.bottom = bottom; + } + + public int getLeft() { + return left; + } + + public int getRight() { + return right; + } + + public int getTop() { + return top; + } + + public int getBottom() { + return bottom; + } + } + + public MapSelectionModel() { + } + + public void setSelected(int tx, int ty) { + boundsProperty.set(new Bounds(tx, tx + 1, ty, ty + 1)); + } + + public Bounds getSelected() { + return boundsProperty.get(); + } + + public ObjectProperty boundsProperty() { + return boundsProperty; + } +} diff --git a/TileZ/src/au/notzed/tilez/MapView.java b/TileZ/src/au/notzed/tilez/MapView.java new file mode 100644 index 0000000..99970fa --- /dev/null +++ b/TileZ/src/au/notzed/tilez/MapView.java @@ -0,0 +1,466 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import duskz.client.fx.DataManagerFX; +import duskz.server.entityz.TileMap; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Future; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.ObservableList; +import javafx.event.EventHandler; +import javafx.geometry.Orientation; +import javafx.scene.Node; +import javafx.scene.control.ScrollBar; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.Region; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.shape.Rectangle; +import javafx.scene.text.Text; + +/** + * + * @author Michael Zucchi + */ +public class MapView extends Region implements ChangeListener { + + String oldmap = "/home/notzed/src/DuskRPG/DuskFiles/Dusk2.7.3"; + TileMap map; + DataManagerFX data; + // TODO: tilesize on DataManagerFX + int tileSize = 32; + double scale = 1; + Pane graphics; + Pane alias; + StackPane stack; + BorderPane overlay; + ScrollBar vbar; + ScrollBar hbar; + MapSelectionModel selectionModel = new MapSelectionModel(); + + public MapView() { + + graphics = new Pane(); + graphics.setManaged(false); + graphics.setScaleX(scale); + graphics.setScaleY(scale); + + alias = new Pane(); + alias.setManaged(false); + alias.setScaleX(scale); + alias.setScaleY(scale); + + stack = new StackPane(); + + stack.getChildren().add(graphics); + stack.getChildren().add(alias); + overlay = new BorderPane(); + overlay.setCenter(stack); + getChildren().add(overlay); + + vbar = new ScrollBar(); + vbar.setOrientation(Orientation.VERTICAL); + hbar = new ScrollBar(); + + overlay.setRight(vbar); + overlay.setBottom(hbar); + + vbar.setUnitIncrement(32); + hbar.setUnitIncrement(32); + + vbar.valueProperty().addListener(new ChangeListener() { + public void changed(ObservableValue ov, Number t, Number t1) { + // blah blah update for position or some shit + } + }); + + stack.addEventHandler(MouseEvent.ANY, new EventHandler() { + public void handle(MouseEvent t) { + if (t.getEventType() == MouseEvent.MOUSE_CLICKED) { + int tx = (int) ((getOriginX() + t.getX()) / tileSize / scale); + int ty = (int) ((getOriginY() + t.getY()) / tileSize / scale); + + //System.out.printf("selecting %d,%d mouse %f,%f origin %f,%f\n", tx, ty, t.getX(), t.getY(), getOriginX(), getOriginY()); + + selectionModel.setSelected(tx, ty); + // hack + requestLayout(); + } + } + }); + + } + double oldw, oldh; + int vcols, vrows; + + @Override + protected void layoutChildren() { + super.layoutChildren(); + + //System.out.printf("layout children dimensions = %fx%f\n", getWidth(), getHeight()); + + overlay.resize(getWidth(), getHeight()); + + if (map != null) { + //System.out.printf("visible total = %d max = %f visible %f\n", + // map.getRows() * tileSize, + // map.getRows() * tileSize - getHeight(), + // getHeight()); + + //vbar.setMin(getHeight()); + //hbar.setMin(getWidth()); + vbar.setMax(map.getRows() * tileSize * scale); + hbar.setMax(map.getCols() * tileSize * scale); + vbar.setVisibleAmount(getHeight()); + hbar.setVisibleAmount(getWidth()); + + //System.out.printf("visible %f total %f\n", vbar.getVisibleAmount(), vbar.getMax()); + + // create imageview objects to cover screen + if (oldw != getWidth() || oldh != getHeight()) { + vcols = (int) (getWidth() / (tileSize * scale)) + 1; + vrows = (int) (getHeight() / (tileSize * scale)) + 1; + oldw = getWidth(); + oldh = getHeight(); + ObservableList c = graphics.getChildren(); + c.clear(); + + for (int l = 0; l < map.getLayerCount(); l++) { + for (int y = 0; y < vrows; y++) { + for (int x = 0; x < vcols; x++) { + ImageView iv = new ImageView(); + + iv.relocate(x * tileSize, y * tileSize); + c.add(iv); + } + } + } + + } + + updateMapVisible(); + //updateThread(); + } + } + + @Override + public void changed(ObservableValue ov, Number t, Number t1) { + System.out.println("trnaslate changed"); + } + + void loadMap(DataManagerFX data, String path) throws IOException { + this.data = data; + map = TileMap.loadLayered(new File(path)); + updateMap(); + requestLayout(); + } + + @Override + protected double computePrefHeight(double d) { + //if (map == null) + return super.computePrefHeight(d); + //return map.getRows() * 32; + } + + @Override + protected double computePrefWidth(double d) { + //if (map == null) + return super.computePrefWidth(d); + //return map.getCols() * 32; + } + int oldx0 = -1; + int oldy0 = -1; + int oldvcols = -1; + int oldvrows = -1; + + double getOriginX() { + double v = hbar.getValue() * (hbar.getMax() + tileSize * scale - getWidth()) / hbar.getMax(); + + v -= Math.IEEEremainder(v, 32); + return v; + } + + double getOriginY() { + double v = vbar.getValue() * (vbar.getMax() + tileSize * scale - getHeight()) / vbar.getMax(); + v -= Math.IEEEremainder(v, 32); + return v; + } + + int getTileX() { + return (int) (getOriginX() / tileSize / scale); + } + + int getTileY() { + return (int) (getOriginY() / tileSize / scale); + } + + void updateMapVisible() { + final ArrayList children = new ArrayList<>(); + final ArrayList upper = new ArrayList<>(); + int levelCount = map.getLayerCount(); + + // Animated tiles hack test + // final Rectangle2D[] anims = new Rectangle2D[2]; + // anims[0] = data.createTile(305, 0, 0, tileSize, tileSize).getViewport(); + // anims[1] = data.createTile(304, 0, 0, tileSize, tileSize).getViewport(); + // final List animated = new ArrayList<>(); + + int x0 = getTileX(); + int y0 = getTileY(); + + // y0 = Math.min(y0, map.getRows()); + // y1 = Math.min(y1, map.getRows()); + + //graphics.setTranslateX(-((long) getOriginX() & (tileSize - 1)) * scale); + //graphics.setTranslateY(-((long) getOriginY() & (tileSize - 1)) * scale); + + // TODO: set position pixel or some shit + + //if (oldx0 == x0 && oldy0 == y0 && oldvcols == vcols && oldvrows == vrows) + // return; + + oldx0 = x0; + oldy0 = y0; + oldvcols = vcols; + oldvrows = vrows; + + for (int l = 0; l < map.getLayerCount(); l++) { + for (int y = 0; y < vrows; y++) { + int ty = y + y0; + for (int x = 0; x < vcols; x++) { + int tx = x + x0; + ImageView iv = (ImageView) graphics.getChildren().get(x + y * vcols + l * vcols * vrows); + + int tileid = map.getTile(l, tx, ty); + if (tileid != 0) { + data.updateTile(iv, tileid, tileSize, tileSize); + iv.setVisible(true); + } else { + iv.setVisible(false); + } + } + } + } + + + // Check for meta data on map region + List nodes = new ArrayList(); + + boolean overlayOld = true; + + // HACK: check for old map shit + if (overlayOld) { + for (int y = 0; y < vrows; y++) { + int ty = y + y0; + for (int x = 0; x < vcols; x++) { + int tx = x + x0; + File f = new File(String.format("%s/defMoveActions/%d_%d", oldmap, tx, ty)); + + if (f.exists()) { + Rectangle r = new Rectangle(tileSize - 4, tileSize - 4); + r.setFill(null); + r.setStroke(Color.BLUE); + r.setStrokeWidth(4); + + r.relocate(x * tileSize + 2, y * tileSize + 2); + nodes.add(r); + } + } + } + } + + // highlight any location with stuff + for (int y = 0; y < vrows; y++) { + int ty = y + y0; + for (int x = 0; x < vcols; x++) { + int tx = x + x0; + String a = map.aliasForLocation(tx, ty); + String j = map.jumpAlias(tx, ty); + String able = map.locationAbleScript(tx, ty); + String action = map.locationActionScript(tx, ty); + String visible = map.locationVisibleScript(tx, ty); + + if (a != null + || j != null + || able != null + || action != null + || visible != null) { + Rectangle r = new Rectangle(tileSize - 4, tileSize - 4); + r.setFill(null); + r.setStroke(Color.RED); + r.setStrokeWidth(2); + + r.relocate(x * tileSize + 2, y * tileSize + 2); + nodes.add(r); + } + if (a != null) { + Text t = new Text(a); + + t.relocate(x * tileSize, y * tileSize); + nodes.add(t); + } + } + } + MapSelectionModel.Bounds selected = selectionModel.getSelected(); + if (selected != null) { + int left = selected.left - getTileX(); + int top = selected.top - getTileY(); + System.out.printf("adding selected %d %d %d %d\n", selected.left, selected.right, selected.top, selected.bottom); + Rectangle r = new Rectangle((selected.right - selected.left) * tileSize - 4, (selected.bottom - selected.top) * tileSize - 4); + r.setFill(Color.color(1, 1, 0, 0.25)); + r.setStroke(Color.ORANGE); + r.setStrokeWidth(2); + + r.relocate(left * tileSize + 2, top * tileSize + 2); + nodes.add(r); + } + + alias.getChildren().setAll(nodes); + + } + Future f; + + void updateThread() { + int y0 = (int) (vbar.getValue() / tileSize / scale); + int x0 = (int) (hbar.getValue() / tileSize / scale); + + if (f != null) { + if (f.cancel(false)) { + System.out.println("pending cancelled"); + } + } + + f = TZ.single.submit(new Update(x0, y0, 1, vcols, vrows)); + } + + class Update implements Runnable { + + int x0, y0, xstep; + int vcols, vrows; + + public Update(int x0, int y0, int xstep, int vcols, int vrows) { + this.x0 = x0; + this.y0 = y0; + this.xstep = xstep; + this.vcols = vcols; + this.vrows = vrows; + } + + @Override + public void run() { + System.out.println("start update thread"); + final ArrayList children = new ArrayList<>(); + for (int y = 0; y < vrows; y++) { + int ty = y + y0; + for (int x = 0; x < vcols; x++) { + int tx = x + x0; + + int tileid = map.getTile(0, tx, ty); + if (tileid != 0) { + ImageView iv = data.createTile(tileid, x, y, tileSize, tileSize); + children.add(iv); + } + } + } + + Platform.runLater(new Runnable() { + @Override + public void run() { + System.out.println("update ui"); + graphics.getChildren().setAll(children); + } + }); + + } + } + + void updateMap() { + final ArrayList children = new ArrayList<>(); + final ArrayList upper = new ArrayList<>(); + int levelCount = map.getLayerCount(); + + // Animated tiles hack test + // final Rectangle2D[] anims = new Rectangle2D[2]; + // anims[0] = data.createTile(305, 0, 0, tileSize, tileSize).getViewport(); + // anims[1] = data.createTile(304, 0, 0, tileSize, tileSize).getViewport(); + // final List animated = new ArrayList<>(); + + // Build whole map + for (int l = 0; l < levelCount; l++) { + for (int y = 0; y < map.getRows(); y++) { + // Draw tiles first for whole row + for (int x = 0; x < map.getCols(); x++) { + int tileid = map.getTile(l, x, y); + if (tileid != 0) { + ImageView iv = data.createTile(tileid, x, y, tileSize, tileSize); + children.add(iv); + + // if (tileid == 305) + // animated.add(iv); + } + } + + if (children.size() > 16) + break; + + // Now check for entities over this layer row + /* + if (l == map.getGroundLevel()) { + for (int x = 0; x < map.cols; x++) { + Collection ents = map.getEntities(x + map.offx, y + map.offy); + if (ents != null) { + for (Entity e : ents) { + drawEntity(e, map.offx, map.offy, children, upper); + } + } + } + }*/ + } + } + + // Build sprites + //for (Entity e : map.getEntities()) { + // drawEntity(map.offx, map.offy, children, e); + //} + + Platform.runLater(new Runnable() { + @Override + public void run() { + graphics.getChildren().setAll(children); + graphics.getChildren().addAll(upper); + + // System.out.println("animated node count = " + animated.size()); + // if (animator == null) { + // animator = new TileAnimator(animated, Duration.seconds(0.25), anims); + // animator.setCycleCount(Animation.INDEFINITE); + // animator.play(); + // } else + // animator.setNodes(animated); + } + }); + } +} diff --git a/TileZ/src/au/notzed/tilez/TZ.java b/TileZ/src/au/notzed/tilez/TZ.java new file mode 100644 index 0000000..06fdc01 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/TZ.java @@ -0,0 +1,35 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * Class for global application resources. + * + * @author Michael Zucchi + */ +public class TZ { + + static ThreadPoolExecutor single = (ThreadPoolExecutor) Executors.newFixedThreadPool(1); + + public static void shutdown() { + single.shutdown(); + } +} diff --git a/TileZ/src/au/notzed/tilez/TextEditor.java b/TileZ/src/au/notzed/tilez/TextEditor.java new file mode 100644 index 0000000..b535b3a --- /dev/null +++ b/TileZ/src/au/notzed/tilez/TextEditor.java @@ -0,0 +1,95 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.nio.file.StandardOpenOption; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextArea; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; + +/** + * Very basic text editor window. + * + * @author Michael Zucchi + */ +public class TextEditor extends Stage { + + TextArea text; + Path path; + + public TextEditor() { + HBox buttons = new HBox(); + BorderPane root = new BorderPane(); + text = new TextArea(); + text.setPrefRowCount(30); + Button save, cancel; + buttons.getChildren().addAll(cancel = new Button("Cancel"), + save = new Button("Save")); + + save.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + try { + save(); + } catch (IOException ex) { + // TODO: show error somewhere + Logger.getLogger(TextEditor.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + + cancel.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent t) { + close(); + } + }); + + root.setCenter(text); + root.setTop(buttons); + Scene scene = new Scene(root); + + setScene(scene); + } + + public void setPath(Path path) throws IOException { + byte[] bytes = Files.readAllBytes(path); + String string = new String(bytes, Charset.defaultCharset()); + + this.path = path; + text.setText(string); + } + + public void save() throws IOException { + Path tmp = path.resolveSibling(path.getFileName().toString() + "~"); + Files.write(tmp, text.getText().getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); + Files.move(tmp, path, StandardCopyOption.ATOMIC_MOVE); + } +} diff --git a/TileZ/src/au/notzed/tilez/TileView.java b/TileZ/src/au/notzed/tilez/TileView.java new file mode 100644 index 0000000..847ee64 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/TileView.java @@ -0,0 +1,28 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import javafx.scene.layout.FlowPane; + +/** + * Flowpane for tiles, plus some management shit + * + * @author Michael Zucchi + */ +public class TileView extends FlowPane { +} diff --git a/TileZ/src/au/notzed/tilez/TileZ.java b/TileZ/src/au/notzed/tilez/TileZ.java new file mode 100644 index 0000000..be26693 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/TileZ.java @@ -0,0 +1,108 @@ +/** + * TileZ is a tile editor. + * Copyright (C) 2013 Michael Zucchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package au.notzed.tilez; + +import duskz.client.fx.DataManagerFX; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Application; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.scene.Scene; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +/** + * Tool to view duskz maps, maybe more? + * + * @author Michael Zucchi + */ +public class TileZ extends Application { + + MapView mapView; + LocationEditor locationEditor; + DuskInfoView oldInfo; + DataManagerFX data; + + @Override + public void start(Stage stage) { + BorderPane root = new BorderPane(); + + VBox left = new VBox(); + + left.getChildren().addAll( + locationEditor = new LocationEditor(), + oldInfo = new DuskInfoView()); + + root.setCenter(mapView = new MapView()); + root.setLeft(left); + + Scene scene = new Scene(root, 768, 512); + + stage.setTitle("TileZ"); + stage.setScene(scene); + stage.show(); + + String datapath = "/home/notzed/house.jar"; + String mappath = "/home/notzed/dusk/game/defMaps/dusk"; + + try { + data = new DataManagerFX(datapath); + data.open(); + mapView.loadMap(data, mappath); + + locationEditor.setMap(mapView.map); + + mapView.selectionModel.boundsProperty.addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, MapSelectionModel.Bounds t, MapSelectionModel.Bounds t1) { + if (t1 != null) { + locationEditor.setTileX(t1.left); + locationEditor.setTileY(t1.top); + oldInfo.setLocation(t1.left, t1.top); + } else { + locationEditor.setTileX(-1); + locationEditor.setTileY(-1); + } + } + }); + } catch (IOException ex) { + Logger.getLogger(TileZ.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @Override + public void stop() throws Exception { + super.stop(); + TZ.shutdown(); + } + + /** + * The main() method is ignored in correctly deployed JavaFX + * application. main() serves only as fallback in case the + * application can not be launched through deployment artifacts, + * e.g., in IDEs with limited FX support. NetBeans ignores main(). + * + * @param args the command line arguments + */ + public static void main(String[] args) { + launch(args); + } +} diff --git a/TileZ/src/au/notzed/tilez/io/Data.java b/TileZ/src/au/notzed/tilez/io/Data.java new file mode 100644 index 0000000..af2b2c1 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Data.java @@ -0,0 +1,112 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "value" +}) +@XmlRootElement(name = "data") +public class Data { + + @XmlAttribute(name = "encoding") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String encoding; + @XmlAttribute(name = "compression") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String compression; + @XmlValue + protected String value; + + /** + * Gets the value of the encoding property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getEncoding() { + return encoding; + } + + /** + * Sets the value of the encoding property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setEncoding(String value) { + this.encoding = value; + } + + /** + * Gets the value of the compression property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCompression() { + return compression; + } + + /** + * Sets the value of the compression property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCompression(String value) { + this.compression = value; + } + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getvalue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setvalue(String value) { + this.value = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Image.java b/TileZ/src/au/notzed/tilez/io/Image.java new file mode 100644 index 0000000..0df4b35 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Image.java @@ -0,0 +1,162 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "data" +}) +@XmlRootElement(name = "image") +public class Image { + + @XmlAttribute(name = "format") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String format; + @XmlAttribute(name = "id") + protected String id; + @XmlAttribute(name = "source") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String source; + @XmlAttribute(name = "trans") + protected String trans; + protected Data data; + + /** + * Gets the value of the format property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFormat() { + return format; + } + + /** + * Sets the value of the format property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFormat(String value) { + this.format = value; + } + + /** + * Gets the value of the id property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getId() { + return id; + } + + /** + * Sets the value of the id property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setId(String value) { + this.id = value; + } + + /** + * Gets the value of the source property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSource() { + return source; + } + + /** + * Sets the value of the source property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSource(String value) { + this.source = value; + } + + /** + * Gets the value of the trans property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTrans() { + return trans; + } + + /** + * Sets the value of the trans property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTrans(String value) { + this.trans = value; + } + + /** + * Gets the value of the data property. + * + * @return + * possible object is + * {@link Data } + * + */ + public Data getData() { + return data; + } + + /** + * Sets the value of the data property. + * + * @param value + * allowed object is + * {@link Data } + * + */ + public void setData(Data value) { + this.data = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Layer.java b/TileZ/src/au/notzed/tilez/io/Layer.java new file mode 100644 index 0000000..d646558 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Layer.java @@ -0,0 +1,268 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "properties", + "data" +}) +@XmlRootElement(name = "layer") +public class Layer { + + @XmlAttribute(name = "name", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String name; + @XmlAttribute(name = "width", required = true) + protected int width; + @XmlAttribute(name = "height", required = true) + protected int height; + @XmlAttribute(name = "x") + protected int x; + @XmlAttribute(name = "y") + protected int y; + @XmlAttribute(name = "opacity") + protected float opacity; + @XmlAttribute(name = "visible") + protected int visible; + protected Properties properties; + @XmlElement(required = true) + protected Data data; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setWidth(int value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHeight(int value) { + this.height = value; + } + + /** + * Gets the value of the x property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getX() { + return x; + } + + /** + * Sets the value of the x property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setX(int value) { + this.x = value; + } + + /** + * Gets the value of the y property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getY() { + return y; + } + + /** + * Sets the value of the y property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setY(int value) { + this.y = value; + } + + /** + * Gets the value of the opacity property. + * + * @return + * possible object is + * {@link String } + * + */ + public float getOpacity() { + return opacity; + } + + /** + * Sets the value of the opacity property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setOpacity(float value) { + this.opacity = value; + } + + /** + * Gets the value of the visible property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getVisible() { + return visible; + } + + /** + * Sets the value of the visible property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setVisible(int value) { + this.visible = value; + } + + /** + * Gets the value of the properties property. + * + * @return + * possible object is + * {@link Properties } + * + */ + public Properties getProperties() { + return properties; + } + + /** + * Sets the value of the properties property. + * + * @param value + * allowed object is + * {@link Properties } + * + */ + public void setProperties(Properties value) { + this.properties = value; + } + + /** + * Gets the value of the data property. + * + * @return + * possible object is + * {@link Data } + * + */ + public Data getData() { + return data; + } + + /** + * Sets the value of the data property. + * + * @param value + * allowed object is + * {@link Data } + * + */ + public void setData(Data value) { + this.data = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Map.java b/TileZ/src/au/notzed/tilez/io/Map.java new file mode 100644 index 0000000..6032f63 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Map.java @@ -0,0 +1,367 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "properties", + "tileset", + "layerOrObjectgroup" +}) +@XmlRootElement(name = "map") +public class Map { + + @XmlAttribute(name = "xmlns") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String xmlns; + @XmlAttribute(name = "xmlns:xsi") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String xmlnsXsi; + @XmlAttribute(name = "xsi:schemaLocation") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String xsiSchemaLocation; + @XmlAttribute(name = "version", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String version; + @XmlAttribute(name = "orientation", required = true) + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + protected String orientation; + @XmlAttribute(name = "width", required = true) + protected int width; + @XmlAttribute(name = "height", required = true) + protected int height; + @XmlAttribute(name = "tilewidth", required = true) + protected int tilewidth; + @XmlAttribute(name = "tileheight", required = true) + protected int tileheight; + protected Properties properties; + protected List tileset; + @XmlElements({ + @XmlElement(name = "layer", type = Layer.class), + @XmlElement(name = "objectgroup", type = Objectgroup.class) + }) + protected List layerOrObjectgroup; + + /** + * Gets the value of the xmlns property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getXmlns() { + return xmlns; + } + + /** + * Sets the value of the xmlns property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setXmlns(String value) { + this.xmlns = value; + } + + /** + * Gets the value of the xmlnsXsi property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getXmlnsXsi() { + return xmlnsXsi; + } + + /** + * Sets the value of the xmlnsXsi property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setXmlnsXsi(String value) { + this.xmlnsXsi = value; + } + + /** + * Gets the value of the xsiSchemaLocation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getXsiSchemaLocation() { + return xsiSchemaLocation; + } + + /** + * Sets the value of the xsiSchemaLocation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setXsiSchemaLocation(String value) { + this.xsiSchemaLocation = value; + } + + /** + * Gets the value of the version property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getVersion() { + return version; + } + + /** + * Sets the value of the version property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setVersion(String value) { + this.version = value; + } + + /** + * Gets the value of the orientation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getOrientation() { + return orientation; + } + + /** + * Sets the value of the orientation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setOrientation(String value) { + this.orientation = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setWidth(int value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHeight(int value) { + this.height = value; + } + + /** + * Gets the value of the tilewidth property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getTilewidth() { + return tilewidth; + } + + /** + * Sets the value of the tilewidth property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTilewidth(int value) { + this.tilewidth = value; + } + + /** + * Gets the value of the tileheight property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getTileheight() { + return tileheight; + } + + /** + * Sets the value of the tileheight property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTileheight(int value) { + this.tileheight = value; + } + + /** + * Gets the value of the properties property. + * + * @return + * possible object is + * {@link Properties } + * + */ + public Properties getProperties() { + return properties; + } + + /** + * Sets the value of the properties property. + * + * @param value + * allowed object is + * {@link Properties } + * + */ + public void setProperties(Properties value) { + this.properties = value; + } + + /** + * Gets the value of the tileset property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tileset property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTileset().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Tileset } + * + * + */ + public List getTileset() { + if (tileset == null) { + tileset = new ArrayList(); + } + return this.tileset; + } + + /** + * Gets the value of the layerOrObjectgroup property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the layerOrObjectgroup property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getLayerOrObjectgroup().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Layer } + * {@link Objectgroup } + * + * + */ + public List getLayerOrObjectgroup() { + if (layerOrObjectgroup == null) { + layerOrObjectgroup = new ArrayList(); + } + return this.layerOrObjectgroup; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Object.java b/TileZ/src/au/notzed/tilez/io/Object.java new file mode 100644 index 0000000..d40335d --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Object.java @@ -0,0 +1,240 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "properties", + "image" +}) +@XmlRootElement(name = "object") +public class Object { + + @XmlAttribute(name = "name", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String name; + @XmlAttribute(name = "type", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String type; + @XmlAttribute(name = "x", required = true) + protected int x; + @XmlAttribute(name = "y", required = true) + protected int y; + @XmlAttribute(name = "width") + protected int width; + @XmlAttribute(name = "height") + protected int height; + protected Properties properties; + protected Image image; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the type property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getType() { + return type; + } + + /** + * Sets the value of the type property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setType(String value) { + this.type = value; + } + + /** + * Gets the value of the x property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getX() { + return x; + } + + /** + * Sets the value of the x property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setX(int value) { + this.x = value; + } + + /** + * Gets the value of the y property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getY() { + return y; + } + + /** + * Sets the value of the y property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setY(int value) { + this.y = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setWidth(int value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHeight(int value) { + this.height = value; + } + + /** + * Gets the value of the properties property. + * + * @return + * possible object is + * {@link Properties } + * + */ + public Properties getProperties() { + return properties; + } + + /** + * Sets the value of the properties property. + * + * @param value + * allowed object is + * {@link Properties } + * + */ + public void setProperties(Properties value) { + this.properties = value; + } + + /** + * Gets the value of the image property. + * + * @return + * possible object is + * {@link Image } + * + */ + public Image getImage() { + return image; + } + + /** + * Sets the value of the image property. + * + * @param value + * allowed object is + * {@link Image } + * + */ + public void setImage(Image value) { + this.image = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/ObjectFactory.java b/TileZ/src/au/notzed/tilez/io/ObjectFactory.java new file mode 100644 index 0000000..8b5e11c --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/ObjectFactory.java @@ -0,0 +1,119 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlRegistry; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the generated package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: generated + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link Tileset } + * + */ + public Tileset createTileset() { + return new Tileset(); + } + + /** + * Create an instance of {@link Image } + * + */ + public Image createImage() { + return new Image(); + } + + /** + * Create an instance of {@link Tile } + * + */ + public Tile createTile() { + return new Tile(); + } + + /** + * Create an instance of {@link Properties } + * + */ + public Properties createProperties() { + return new Properties(); + } + + /** + * Create an instance of {@link Objectgroup } + * + */ + public Objectgroup createObjectgroup() { + return new Objectgroup(); + } + + /** + * Create an instance of {@link Object } + * + */ + public Object createObject() { + return new Object(); + } + + /** + * Create an instance of {@link Data } + * + */ + public Data createData() { + return new Data(); + } + + /** + * Create an instance of {@link Map } + * + */ + public Map createMap() { + return new Map(); + } + + /** + * Create an instance of {@link Layer } + * + */ + public Layer createLayer() { + return new Layer(); + } + + /** + * Create an instance of {@link Property } + * + */ + public Property createProperty() { + return new Property(); + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Objectgroup.java b/TileZ/src/au/notzed/tilez/io/Objectgroup.java new file mode 100644 index 0000000..4c4da5f --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Objectgroup.java @@ -0,0 +1,194 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "object" +}) +@XmlRootElement(name = "objectgroup") +public class Objectgroup { + + @XmlAttribute(name = "name", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String name; + @XmlAttribute(name = "width") + protected int width; + @XmlAttribute(name = "height") + protected int height; + @XmlAttribute(name = "x") + protected int x; + @XmlAttribute(name = "y") + protected int y; + protected List object; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setWidth(int value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHeight(int value) { + this.height = value; + } + + /** + * Gets the value of the x property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getX() { + return x; + } + + /** + * Sets the value of the x property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setX(int value) { + this.x = value; + } + + /** + * Gets the value of the y property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getY() { + return y; + } + + /** + * Sets the value of the y property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setY(int value) { + this.y = value; + } + + /** + * Gets the value of the object property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the object property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getObject().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Object } + * + * + */ + public List getObject() { + if (object == null) { + object = new ArrayList(); + } + return this.object; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Properties.java b/TileZ/src/au/notzed/tilez/io/Properties.java new file mode 100644 index 0000000..1b7c417 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Properties.java @@ -0,0 +1,60 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "property" +}) +@XmlRootElement(name = "properties") +public class Properties { + + protected List property; + + /** + * Gets the value of the property property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the property property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getProperty().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Property } + * + * + */ + public List getProperty() { + if (property == null) { + property = new ArrayList(); + } + return this.property; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Property.java b/TileZ/src/au/notzed/tilez/io/Property.java new file mode 100644 index 0000000..a911217 --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Property.java @@ -0,0 +1,83 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "") +@XmlRootElement(name = "property") +public class Property { + + @XmlAttribute(name = "name", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String name; + @XmlAttribute(name = "value", required = true) + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String value; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Tile.java b/TileZ/src/au/notzed/tilez/io/Tile.java new file mode 100644 index 0000000..4fe55ff --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Tile.java @@ -0,0 +1,134 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "properties", + "image" +}) +@XmlRootElement(name = "tile") +public class Tile { + + @XmlAttribute(name = "id") + protected int id; + @XmlAttribute(name = "gid") + protected String gid; + protected Properties properties; + protected Image image; + + /** + * Gets the value of the id property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getId() { + return id; + } + + /** + * Sets the value of the id property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setId(int value) { + this.id = value; + } + + /** + * Gets the value of the gid property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getGid() { + return gid; + } + + /** + * Sets the value of the gid property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setGid(String value) { + this.gid = value; + } + + /** + * Gets the value of the properties property. + * + * @return + * possible object is + * {@link Properties } + * + */ + public Properties getProperties() { + return properties; + } + + /** + * Sets the value of the properties property. + * + * @param value + * allowed object is + * {@link Properties } + * + */ + public void setProperties(Properties value) { + this.properties = value; + } + + /** + * Gets the value of the image property. + * + * @return + * possible object is + * {@link Image } + * + */ + public Image getImage() { + return image; + } + + /** + * Sets the value of the image property. + * + * @param value + * allowed object is + * {@link Image } + * + */ + public void setImage(Image value) { + this.image = value; + } + +} diff --git a/TileZ/src/au/notzed/tilez/io/Tileset.java b/TileZ/src/au/notzed/tilez/io/Tileset.java new file mode 100644 index 0000000..a0bba6b --- /dev/null +++ b/TileZ/src/au/notzed/tilez/io/Tileset.java @@ -0,0 +1,279 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2013.02.27 at 01:07:39 PM CST +// + + +package au.notzed.tilez.io; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.NormalizedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "image", + "tile" +}) +@XmlRootElement(name = "tileset") +public class Tileset { + + @XmlAttribute(name = "name") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String name; + @XmlAttribute(name = "firstgid", required = true) + protected int firstgid; + @XmlAttribute(name = "source") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String source; + @XmlAttribute(name = "tilewidth") + protected int tilewidth; + @XmlAttribute(name = "tileheight") + protected int tileheight; + @XmlAttribute(name = "spacing") + protected int spacing; + @XmlAttribute(name = "margin") + @XmlJavaTypeAdapter(NormalizedStringAdapter.class) + protected String margin; + protected List image; + protected List tile; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the firstgid property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getFirstgid() { + return firstgid; + } + + /** + * Sets the value of the firstgid property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFirstgid(int value) { + this.firstgid = value; + } + + /** + * Gets the value of the source property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSource() { + return source; + } + + /** + * Sets the value of the source property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSource(String value) { + this.source = value; + } + + /** + * Gets the value of the tilewidth property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getTilewidth() { + return tilewidth; + } + + /** + * Sets the value of the tilewidth property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTilewidth(int value) { + this.tilewidth = value; + } + + /** + * Gets the value of the tileheight property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getTileheight() { + return tileheight; + } + + /** + * Sets the value of the tileheight property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTileheight(int value) { + this.tileheight = value; + } + + /** + * Gets the value of the spacing property. + * + * @return + * possible object is + * {@link String } + * + */ + public int getSpacing() { + return spacing; + } + + /** + * Sets the value of the spacing property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSpacing(int value) { + this.spacing = value; + } + + /** + * Gets the value of the margin property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMargin() { + return margin; + } + + /** + * Sets the value of the margin property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMargin(String value) { + this.margin = value; + } + + /** + * Gets the value of the image property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the image property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getImage().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Image } + * + * + */ + public List getImage() { + if (image == null) { + image = new ArrayList(); + } + return this.image; + } + + /** + * Gets the value of the tile property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tile property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTile().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link Tile } + * + * + */ + public List getTile() { + if (tile == null) { + tile = new ArrayList(); + } + return this.tile; + } + +}