From a6d56cbc1a25a42972302dc656d02dbf020cc055 Mon Sep 17 00:00:00 2001 From: Jade Macho Date: Sat, 2 Mar 2024 01:31:18 +0100 Subject: [PATCH] Initial commit --- .gitignore | 4 + LICENSE | 674 +++++++++++++++++++++ README.md | 7 + VoidBox.sln | 30 + VoidBox/Cmd.cs | 52 ++ VoidBox/Cmds/MainCmd.cs | 49 ++ VoidBox/Configuration.cs | 26 + VoidBox/GameVersion.cs | 12 + VoidBox/Plugin.cs | 111 ++++ VoidBox/PluginUI.cs | 50 ++ VoidBox/Service.cs | 50 ++ VoidBox/Structs/Env/EnvManagerEx.cs | 16 + VoidBox/Structs/Env/EnvSimulator.cs | 8 + VoidBox/Structs/Env/EnvState.cs | 19 + VoidBox/Structs/Env/Weather/EnvClouds.cs | 14 + VoidBox/Structs/Env/Weather/EnvDust.cs | 20 + VoidBox/Structs/Env/Weather/EnvFog.cs | 15 + VoidBox/Structs/Env/Weather/EnvLighting.cs | 17 + VoidBox/Structs/Env/Weather/EnvRain.cs | 18 + VoidBox/Structs/Env/Weather/EnvStars.cs | 15 + VoidBox/Structs/Env/Weather/EnvWind.cs | 10 + VoidBox/VoidBox.csproj | 63 ++ VoidBox/VoidBox.json | 11 + VoidBox/Windows/ConfigWindow.cs | 58 ++ VoidBox/images/icon.png | Bin 0 -> 117413 bytes VoidBox/packages.lock.json | 13 + release.bat | 10 + 27 files changed, 1372 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 VoidBox.sln create mode 100644 VoidBox/Cmd.cs create mode 100644 VoidBox/Cmds/MainCmd.cs create mode 100644 VoidBox/Configuration.cs create mode 100644 VoidBox/GameVersion.cs create mode 100644 VoidBox/Plugin.cs create mode 100644 VoidBox/PluginUI.cs create mode 100644 VoidBox/Service.cs create mode 100644 VoidBox/Structs/Env/EnvManagerEx.cs create mode 100644 VoidBox/Structs/Env/EnvSimulator.cs create mode 100644 VoidBox/Structs/Env/EnvState.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvClouds.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvDust.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvFog.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvLighting.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvRain.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvStars.cs create mode 100644 VoidBox/Structs/Env/Weather/EnvWind.cs create mode 100644 VoidBox/VoidBox.csproj create mode 100644 VoidBox/VoidBox.json create mode 100644 VoidBox/Windows/ConfigWindow.cs create mode 100644 VoidBox/images/icon.png create mode 100644 VoidBox/packages.lock.json create mode 100644 release.bat diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7990fe7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vs/ +obj/ +bin/ +*.user \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -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/README.md b/README.md new file mode 100644 index 0000000..1c9cd53 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# VoidBox +### Basic plugin to add a skybox to the housing void. +Based on [Ktisis](https://github.com/ktisis-tools/Ktisis), thus using the same license despite me usually not being a fan of the GPLv3. + +(Strictly speaking it's just the env copy hook / signature and the accompanying structs which are copied, but credit goes to chirp for implementing it first!) + +Turn around. Seriously, this is a mess, hotglued to do one job and one job only. I didn't even bother matching the code style or adjusting the namespaces, and it's way past midnight and my eyes are falling shut as I'm typing this sentence. diff --git a/VoidBox.sln b/VoidBox.sln new file mode 100644 index 0000000..52b77e7 --- /dev/null +++ b/VoidBox.sln @@ -0,0 +1,30 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32505.426 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VoidBox", "VoidBox\VoidBox.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5ECEDCE5-D60F-4A8A-AB33-4131F5C7371C}" + ProjectSection(SolutionItems) = preProject + Directory.Build.props = Directory.Build.props + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|x64 + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64 + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64 + {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B17E85B1-5F60-4440-9F9A-3DDE877E8CDF} + EndGlobalSection +EndGlobal diff --git a/VoidBox/Cmd.cs b/VoidBox/Cmd.cs new file mode 100644 index 0000000..54384af --- /dev/null +++ b/VoidBox/Cmd.cs @@ -0,0 +1,52 @@ +using Dalamud.Game.Command; +using Dalamud.Plugin.Services; +using System; + +namespace VoidBox; + +public abstract class Cmd : IDisposable +{ + private ICommandManager? _commandManager; + private string? _commandString; + + public abstract string Name { get; } + public string FullName => _commandString ?? $"/{Name}"; + + public abstract string HelpMessage { get; } + + public void Register(ICommandManager commandManager) + { + if (_commandManager is not null) + { + Dispose(); + } + + _commandManager = commandManager; + _commandString = FullName; + + commandManager.AddHandler(FullName, new CommandInfo(Handle) + { + HelpMessage = HelpMessage + }); + } + + public abstract void Run(string arguments); + + public void Dispose() + { + _commandManager?.RemoveHandler(FullName); + _commandManager = null; + + GC.SuppressFinalize(this); + } + + private void Handle(string command, string arguments) + { + if (command != _commandString) + { + return; + } + + Run(arguments); + } +} diff --git a/VoidBox/Cmds/MainCmd.cs b/VoidBox/Cmds/MainCmd.cs new file mode 100644 index 0000000..7a74407 --- /dev/null +++ b/VoidBox/Cmds/MainCmd.cs @@ -0,0 +1,49 @@ +using static FFXIVClientStructs.FFXIV.Client.UI.AddonRelicNoteBook; +using System.Collections; +using System.Globalization; +using System; + +namespace VoidBox.Cmds; + +public sealed class MainCmd : Cmd +{ + public override string Name => "voidbox"; + + public override string HelpMessage => $"Open / adjust the VoidBox settings.\n" + + $"\tExamples:\n" + + $"\tTo open the settings:\n\t\t{FullName}\n" + + $"\tTo enable / disable it:\n\t\t{FullName} on\n\t\t{FullName} off\n\t\t{FullName} toggle\n"; + + public override void Run(string arguments) + { + if (string.IsNullOrEmpty(arguments)) + { + Service.PluginUI.SettingsVisible = !Service.PluginUI.SettingsVisible; + + return; + } + + switch (arguments.ToLowerInvariant()) + { + case "on": + Service.Config.IsEnabled = true; + Service.Config.Save(); + Service.PrintChat("Enabled VoidBox."); + return; + + case "off": + Service.Config.IsEnabled = false; + Service.Config.Save(); + Service.PrintChat("Disabled VoidBox."); + return; + + case "toggle": + Service.Config.IsEnabled = !Service.Config.IsEnabled; + Service.Config.Save(); + Service.PrintChat($"{(Service.Config.IsEnabled ? "Enabled" : "Disabled")} VoidBox."); + return; + } + + Service.PrintChat("Invalid parameters."); + } +} diff --git a/VoidBox/Configuration.cs b/VoidBox/Configuration.cs new file mode 100644 index 0000000..14e90dc --- /dev/null +++ b/VoidBox/Configuration.cs @@ -0,0 +1,26 @@ +using Dalamud.Configuration; +using Dalamud.Plugin; +using System; + +namespace VoidBox; + +[Serializable] +public class Configuration : IPluginConfiguration +{ + public int Version { get; set; } = 0; + + public bool IsEnabled = true; + + [NonSerialized] + private DalamudPluginInterface? pluginInterface; + + internal void Initialize(DalamudPluginInterface pluginInterface) + { + this.pluginInterface = pluginInterface; + } + + public void Save() + { + pluginInterface!.SavePluginConfig(this); + } +} diff --git a/VoidBox/GameVersion.cs b/VoidBox/GameVersion.cs new file mode 100644 index 0000000..2cc6cb9 --- /dev/null +++ b/VoidBox/GameVersion.cs @@ -0,0 +1,12 @@ +using FFXIVClientStructs.FFXIV.Client.System.Framework; + +namespace Ktisis; + +public static class GameVersion { + public const string Validated = "2023.11.09.0000.0000"; + + public unsafe static string GetCurrent() { + var framework = Framework.Instance(); + return framework != null ? framework->GameVersion.Base : string.Empty; + } +} diff --git a/VoidBox/Plugin.cs b/VoidBox/Plugin.cs new file mode 100644 index 0000000..797ae81 --- /dev/null +++ b/VoidBox/Plugin.cs @@ -0,0 +1,111 @@ +using Dalamud.Hooking; +using Dalamud.IoC; +using Dalamud.Plugin; +using Dalamud.Plugin.Services; +using Dalamud.Utility.Signatures; +using Ktisis.Structs.Env; +using Serilog; +using Serilog.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Reflection.Emit; +using System.Runtime.Intrinsics.Arm; + +namespace VoidBox; + +public sealed unsafe class Plugin : IDalamudPlugin +{ + private readonly List _cmds; + + public Plugin([RequiredVersion("1.0")] DalamudPluginInterface pluginInterface) + { + pluginInterface.Create(); + + Service.Plugin = this; + + Service.Config = Service.PluginInterface.GetPluginConfig() as Configuration ?? new(); + Service.Config.Initialize(Service.PluginInterface); + + Service.PluginUI = new(); + + _cmds = typeof(Plugin).Assembly.GetTypes() + .Where(t => !t.IsAbstract && typeof(Cmd).IsAssignableFrom(t)) + .Select(t => (Cmd) Activator.CreateInstance(t)!) + .ToList(); + + foreach (Cmd cmd in _cmds) + { + cmd.Register(Service.CommandManager); + } + + Service.GameInteropProvider.InitializeFromAttributes(this); + + EnvStateCopyHook?.Enable(); + } + + public string Name => "VoidBox"; + + public void Dispose() + { + EnvStateCopyHook?.Dispose(); + + foreach (Cmd cmd in _cmds) + { + cmd.Dispose(); + } + + Service.PluginUI.Dispose(); + + Service.Plugin = null!; + } + + private void Replace(EnvState* env) + { + if (!Service.Config.IsEnabled) + { + return; + } + + if (env->SkyId != 0) + { + return; + } + + env->SkyId = 1; + env->Clouds.CloudTexture = 10; + env->Clouds.CloudSideTexture = 48; + env->Clouds.CloudColor = new Vector3(0f, 0f, 0f); + env->Clouds.Color2 = new Vector3(1f, 1f, 1f); + env->Clouds.Gradient = 0.5f; + env->Clouds.SideHeight = 2f; + + env->Fog.Color = new Vector4(0.4f, 0.4f, 0.4f, 1f); + env->Fog.Distance = 50f; + env->Fog.Thickness = 5f; + env->Fog.Opacity = 0.231f; + env->Fog.SkyVisibility = 0.254f; + + env->Stars.Stars = 20f; + env->Stars.StarIntensity = 1.104f; + env->Stars.Constellations = 4.686f; + env->Stars.ConstellationIntensity = 1.172f; + env->Stars.GalaxyIntensity = 5.628f; + env->Stars.MoonColor = new Vector4(1f, 1f, 1f, 1f); + env->Stars.MoonBrightness = 0.603f; + } + + private unsafe delegate nint EnvStateCopyDelegate(EnvState* dest, EnvState* src); + + [Signature("E8 ?? ?? ?? ?? 49 3B F5", DetourName = nameof(EnvStateCopyDetour))] + private Hook EnvStateCopyHook = null!; + private unsafe nint EnvStateCopyDetour(EnvState* dest, EnvState* src) + { + var exec = EnvStateCopyHook.Original(dest, src); + + Replace(dest); + + return exec; + } +} diff --git a/VoidBox/PluginUI.cs b/VoidBox/PluginUI.cs new file mode 100644 index 0000000..41cf470 --- /dev/null +++ b/VoidBox/PluginUI.cs @@ -0,0 +1,50 @@ +using VoidBox.Windows; +using Dalamud.Interface.Windowing; +using System; + +namespace VoidBox; + +public sealed class PluginUI : IDisposable +{ + private ConfigWindow _configWindow; + + internal PluginUI() + { + Service.PluginInterface.UiBuilder.Draw += Draw; + Service.PluginInterface.UiBuilder.OpenConfigUi += ShowConfigWindow; + + WindowSystem.AddWindow(_configWindow = new ConfigWindow()); + } + + public WindowSystem WindowSystem { get; } = new("VoidBox"); + + public bool SettingsVisible + { + get => _configWindow.IsOpen; + set + { + _configWindow.IsOpen = value; + _configWindow.UpdateFromConfig(); + } + } + + public void Dispose() + { + WindowSystem.RemoveAllWindows(); + + _configWindow.Dispose(); + + Service.PluginInterface.UiBuilder.Draw -= Draw; + Service.PluginInterface.UiBuilder.OpenConfigUi -= ShowConfigWindow; + } + + public void Draw() + { + WindowSystem.Draw(); + } + + private void ShowConfigWindow() + { + SettingsVisible = true; + } +} diff --git a/VoidBox/Service.cs b/VoidBox/Service.cs new file mode 100644 index 0000000..0936856 --- /dev/null +++ b/VoidBox/Service.cs @@ -0,0 +1,50 @@ +using Dalamud.Game.Text; +using Dalamud.IoC; +using Dalamud.Plugin; +using Dalamud.Plugin.Services; + +namespace VoidBox; + +public sealed class Service +{ + public static Plugin Plugin { get; internal set; } = null!; + + public static Configuration Config { get; internal set; } = null!; + + public static PluginUI PluginUI { get; internal set; } = null!; + + [PluginService] + public static DalamudPluginInterface PluginInterface { get; private set; } = null!; + + [PluginService] + public static ICommandManager CommandManager { get; private set; } = null!; + + [PluginService] + public static IFramework Framework { get; private set; } = null!; + + [PluginService] + public static IClientState ClientState { get; private set; } = null!; + + [PluginService] + public static IGameInteropProvider GameInteropProvider { get; private set; } = null!; + + [PluginService] + public static IPluginLog PluginLog { get; private set; } = null!; + + [PluginService] + public static IChatGui ChatGui { get; private set; } = null!; + + public static void PrintChat(string msg) + { + ChatGui.Print(new XivChatEntry + { + Message = msg, + Type = PluginInterface.GeneralChatType + }); + } + + public static void PrintChatErr(string msg) + { + ChatGui.PrintError(msg); + } +} diff --git a/VoidBox/Structs/Env/EnvManagerEx.cs b/VoidBox/Structs/Env/EnvManagerEx.cs new file mode 100644 index 0000000..5798e47 --- /dev/null +++ b/VoidBox/Structs/Env/EnvManagerEx.cs @@ -0,0 +1,16 @@ +using System.Runtime.InteropServices; + +using FFXIVClientStructs.FFXIV.Client.Graphics.Environment; + +namespace Ktisis.Structs.Env; + +[StructLayout(LayoutKind.Explicit, Size = 0x910)] +public struct EnvManagerEx { + [FieldOffset(0x000)] public EnvManager _base; + + [FieldOffset(0x058)] public EnvState EnvState; + + [FieldOffset(0x410)] public EnvSimulator EnvSimulator; + + public unsafe static EnvManagerEx* Instance() => (EnvManagerEx*)EnvManager.Instance(); +} diff --git a/VoidBox/Structs/Env/EnvSimulator.cs b/VoidBox/Structs/Env/EnvSimulator.cs new file mode 100644 index 0000000..fdb7b03 --- /dev/null +++ b/VoidBox/Structs/Env/EnvSimulator.cs @@ -0,0 +1,8 @@ +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env; + +[StructLayout(LayoutKind.Explicit, Size = 0x310)] +public struct EnvSimulator { + +} diff --git a/VoidBox/Structs/Env/EnvState.cs b/VoidBox/Structs/Env/EnvState.cs new file mode 100644 index 0000000..bbe6700 --- /dev/null +++ b/VoidBox/Structs/Env/EnvState.cs @@ -0,0 +1,19 @@ +using System.Runtime.InteropServices; + +using Ktisis.Structs.Env.Weather; + +namespace Ktisis.Structs.Env; + +[StructLayout(LayoutKind.Explicit, Size = 0x258)] +public struct EnvState { + [FieldOffset(0x008)] public uint SkyId; + + [FieldOffset(0x020)] public EnvLighting Lighting; + [FieldOffset(0x094)] public EnvStars Stars; + [FieldOffset(0x0BC)] public EnvFog Fog; + + [FieldOffset(0x104)] public EnvClouds Clouds; + [FieldOffset(0x12C)] public EnvRain Rain; + [FieldOffset(0x160)] public EnvDust Dust; + [FieldOffset(0x194)] public EnvWind Wind; +} diff --git a/VoidBox/Structs/Env/Weather/EnvClouds.cs b/VoidBox/Structs/Env/Weather/EnvClouds.cs new file mode 100644 index 0000000..1ce7d01 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvClouds.cs @@ -0,0 +1,14 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x28)] +public struct EnvClouds { + [FieldOffset(0x00)] public Vector3 CloudColor; + [FieldOffset(0x0C)] public Vector3 Color2; + [FieldOffset(0x18)] public float Gradient; + [FieldOffset(0x1C)] public float SideHeight; + [FieldOffset(0x20)] public uint CloudTexture; + [FieldOffset(0x24)] public uint CloudSideTexture; +} diff --git a/VoidBox/Structs/Env/Weather/EnvDust.cs b/VoidBox/Structs/Env/Weather/EnvDust.cs new file mode 100644 index 0000000..dfb9dce --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvDust.cs @@ -0,0 +1,20 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +// This is responsible for snow and leaves as well as dust, but I'm naming it dust because of its texture path. + +[StructLayout(LayoutKind.Explicit, Size = 0x34)] +public struct EnvDust { + [FieldOffset(0x00)] public float _unk1; + [FieldOffset(0x04)] public float Intensity; + [FieldOffset(0x08)] public float Weight; + [FieldOffset(0x0C)] public float Spread; + [FieldOffset(0x10)] public float Speed; + [FieldOffset(0x14)] public float Size; + [FieldOffset(0x18)] public Vector4 Color; + [FieldOffset(0x28)] public float Glow; + [FieldOffset(0x2C)] public float Spin; + [FieldOffset(0x30)] public uint TextureId; +} diff --git a/VoidBox/Structs/Env/Weather/EnvFog.cs b/VoidBox/Structs/Env/Weather/EnvFog.cs new file mode 100644 index 0000000..fb05eb3 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvFog.cs @@ -0,0 +1,15 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x28)] +public struct EnvFog { + [FieldOffset(0x00)] public Vector4 Color; + [FieldOffset(0x10)] public float Distance; + [FieldOffset(0x14)] public float Thickness; + [FieldOffset(0x18)] public float _unk1; + [FieldOffset(0x1C)] public float _unk2; + [FieldOffset(0x20)] public float Opacity; + [FieldOffset(0x24)] public float SkyVisibility; +} diff --git a/VoidBox/Structs/Env/Weather/EnvLighting.cs b/VoidBox/Structs/Env/Weather/EnvLighting.cs new file mode 100644 index 0000000..dda2a07 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvLighting.cs @@ -0,0 +1,17 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x40)] +public struct EnvLighting { + [FieldOffset(0x00)] public Vector3 SunLightColor; + [FieldOffset(0x0C)] public Vector3 MoonLightColor; + [FieldOffset(0x18)] public Vector3 Ambient; + [FieldOffset(0x24)] public float _unk1; + [FieldOffset(0x28)] public float AmbientSaturation; + [FieldOffset(0x2C)] public float Temperature; + [FieldOffset(0x30)] public float _unk2; + [FieldOffset(0x34)] public float _unk3; + [FieldOffset(0x38)] public float _unk4; +} diff --git a/VoidBox/Structs/Env/Weather/EnvRain.cs b/VoidBox/Structs/Env/Weather/EnvRain.cs new file mode 100644 index 0000000..4afe1a1 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvRain.cs @@ -0,0 +1,18 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x34)] +public struct EnvRain { + [FieldOffset(0x00)] public float Raindrops; + [FieldOffset(0x04)] public float Intensity; + [FieldOffset(0x08)] public float Weight; + [FieldOffset(0x0C)] public float Scatter; + [FieldOffset(0x10)] public float _unk1; + [FieldOffset(0x14)] public float Size; + [FieldOffset(0x18)] public Vector4 Color; + [FieldOffset(0x28)] public float _unk2; + [FieldOffset(0x2C)] public float _unk3; + [FieldOffset(0x30)] public uint _unk4; +} diff --git a/VoidBox/Structs/Env/Weather/EnvStars.cs b/VoidBox/Structs/Env/Weather/EnvStars.cs new file mode 100644 index 0000000..aa83d68 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvStars.cs @@ -0,0 +1,15 @@ +using System.Numerics; +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x28)] +public struct EnvStars { + [FieldOffset(0x00)] public float ConstellationIntensity; + [FieldOffset(0x04)] public float Constellations; + [FieldOffset(0x08)] public float Stars; + [FieldOffset(0x0C)] public float GalaxyIntensity; + [FieldOffset(0x10)] public float StarIntensity; + [FieldOffset(0x14)] public Vector4 MoonColor; + [FieldOffset(0x24)] public float MoonBrightness; +} diff --git a/VoidBox/Structs/Env/Weather/EnvWind.cs b/VoidBox/Structs/Env/Weather/EnvWind.cs new file mode 100644 index 0000000..490f681 --- /dev/null +++ b/VoidBox/Structs/Env/Weather/EnvWind.cs @@ -0,0 +1,10 @@ +using System.Runtime.InteropServices; + +namespace Ktisis.Structs.Env.Weather; + +[StructLayout(LayoutKind.Explicit, Size = 0x0C)] +public struct EnvWind { + [FieldOffset(0x00)] public float Direction; + [FieldOffset(0x04)] public float Angle; + [FieldOffset(0x08)] public float Speed; +} diff --git a/VoidBox/VoidBox.csproj b/VoidBox/VoidBox.csproj new file mode 100644 index 0000000..558be80 --- /dev/null +++ b/VoidBox/VoidBox.csproj @@ -0,0 +1,63 @@ + + + + 0x0ade + + 0.1.0.0 + + + + + + + net7.0-windows + x64 + enable + latest + true + false + false + true + + + + $(appdata)\XIVLauncher\addon\Hooks\dev\ + + + + + + $(DalamudLibPath)FFXIVClientStructs.dll + false + + + $(DalamudLibPath)Newtonsoft.Json.dll + false + + + $(DalamudLibPath)Dalamud.dll + false + + + $(DalamudLibPath)ImGui.NET.dll + false + + + $(DalamudLibPath)ImGuiScene.dll + false + + + $(DalamudLibPath)Lumina.dll + false + + + $(DalamudLibPath)Lumina.Excel.dll + false + + + $(DalamudLibPath)Serilog.dll + false + + + + diff --git a/VoidBox/VoidBox.json b/VoidBox/VoidBox.json new file mode 100644 index 0000000..5673e3e --- /dev/null +++ b/VoidBox/VoidBox.json @@ -0,0 +1,11 @@ +{ + "Name": "VoidBox", + "InternalName": "VoidBox2782", + "Author": "0x0ade", + "ApplicableVersion": "any", + "DalamudApiLevel": 9, + "Punchline": "Make jump puzzles prettier by adding a skybox to the housing void.", + "Description": "Basic plugin to add a skybox to the housing void.", + "Tags": [ "skybox", "housing", "void", "jump puzzles" ], + "RepoUrl": "https://gitea.0x0a.de/0x0ade/DP-VoidBox" +} diff --git a/VoidBox/Windows/ConfigWindow.cs b/VoidBox/Windows/ConfigWindow.cs new file mode 100644 index 0000000..e4234da --- /dev/null +++ b/VoidBox/Windows/ConfigWindow.cs @@ -0,0 +1,58 @@ +using Dalamud.Interface.Windowing; +using ImGuiNET; +using System; +using System.Numerics; + +namespace VoidBox.Windows; + +public class ConfigWindow : Window, IDisposable +{ + private bool _configIsEnabled; + + public ConfigWindow() : base( + "VoidBox", + ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoScrollbar | + ImGuiWindowFlags.NoScrollWithMouse) + { + Size = new Vector2(430, 184); + SizeCondition = ImGuiCond.Always; + + UpdateFromConfig(); + } + + public void Dispose() { + } + + public void UpdateFromConfig() + { + var config = Service.Config; + + _configIsEnabled = config.IsEnabled; + } + + public void UpdateToConfig() + { + var config = Service.Config; + + config.IsEnabled = _configIsEnabled; + + config.Save(); + } + + public override void Draw() + { + var save = false; + + ImGui.Checkbox("Enabled", ref _configIsEnabled); + + if (ImGui.Button("Save and apply")) + { + save = true; + } + + if (save) + { + UpdateToConfig(); + } + } +} diff --git a/VoidBox/images/icon.png b/VoidBox/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..168a792b960f646183681c4167c9975c76ddfa15 GIT binary patch literal 117413 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