From 39bcdcb78c78de2b2c61befedbc24428b0e0a6b3 Mon Sep 17 00:00:00 2001 From: Tony Bark Date: Tue, 16 Jan 2024 16:55:00 -0500 Subject: [PATCH] Save game option - New button themes - Redid retro and "full snack" shirts --- ASSET_LICENSE | 515 +++++++--------------------- README.md | 2 +- project.godot | 5 + scenes/character.tscn | 6 +- scenes/game.tscn | 206 +++++++---- scenes/items.tres | 10 +- scripts/config.gd | 32 +- scripts/game.gd | 82 ++++- sprites/clothes/fullsnack_shirt.svg | 175 ++++++++-- sprites/clothes/retro_shirt.svg | 95 ++++- sprites/ui/button_style.tres | 14 + sprites/ui/comic_sans.tres | 5 + 12 files changed, 613 insertions(+), 534 deletions(-) create mode 100644 sprites/ui/button_style.tres create mode 100644 sprites/ui/comic_sans.tres diff --git a/ASSET_LICENSE b/ASSET_LICENSE index c78e1b2..0e259d4 100644 --- a/ASSET_LICENSE +++ b/ASSET_LICENSE @@ -1,394 +1,121 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the "Licensor." Except for the limited purpose of indicating -that material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. - +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/README.md b/README.md index 59f90ef..a7e8c54 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,4 @@ Tony's Dress Up is a port of my first (and only) Flash game series, ZC's Dress U The source and assets are licensed under the GPL-3.0 License and CC-BY, respectfully - see the [LICENSE](LICENSE) and [ASSET-LICENSE](ASSET-LICENSE) for more details. -The Flash games located in the `/archive` directory are proprietary, but considered abandonware. Any extracted assets are under the same license. Feel free to share them on archives. \ No newline at end of file +The Flash games located in the `/archive` directory are proprietary, but considered abandonware. Any extracted assets are under the same license. Feel free to share them on archives. diff --git a/project.godot b/project.godot index d565706..d4a649c 100644 --- a/project.godot +++ b/project.godot @@ -100,6 +100,11 @@ click={ "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) ] } +exit={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null) +] +} [locale] diff --git a/scenes/character.tscn b/scenes/character.tscn index 7752635..a2a12e0 100644 --- a/scenes/character.tscn +++ b/scenes/character.tscn @@ -123,7 +123,7 @@ script = ExtResource("1_k1mtq") position = Vector2(-33.7592, 99.4079) scale = Vector2(0.927713, 1) sprite_frames = SubResource("1") -frame_progress = 0.185576 +frame_progress = 0.472335 [node name="Body" type="Sprite2D" parent="."] position = Vector2(12, 81) @@ -132,9 +132,9 @@ texture = ExtResource("5_i8wm6") [node name="Eyes" type="AnimatedSprite2D" parent="."] position = Vector2(28.6857, -15.7785) sprite_frames = SubResource("2") -frame_progress = 0.102847 +frame_progress = 0.389606 [node name="Mouth" type="AnimatedSprite2D" parent="."] position = Vector2(49.1195, -14.3155) sprite_frames = SubResource("3") -frame_progress = 0.222902 +frame_progress = 0.509661 diff --git a/scenes/game.tscn b/scenes/game.tscn index b944a4a..9db0391 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=3 uid="uid://cvr2aries2lhr"] +[gd_scene load_steps=15 format=3 uid="uid://cvr2aries2lhr"] [ext_resource type="Script" path="res://scripts/game.gd" id="1_qt3fe"] [ext_resource type="Texture2D" uid="uid://33g80p0qnfw4" path="res://sprites/world/background.svg" id="1_uee2i"] @@ -7,10 +7,12 @@ [ext_resource type="Texture2D" uid="uid://d1u3w61r0uv7p" path="res://sprites/world/boxersOfAmericaFrame.png" id="4_327cy"] [ext_resource type="PackedScene" uid="uid://detf8uwimqp3v" path="res://scenes/character.tscn" id="6_tdil0"] [ext_resource type="SpriteFrames" uid="uid://bhyon1s1op8ly" path="res://scenes/items.tres" id="7_3ykci"] +[ext_resource type="StyleBox" uid="uid://by6foat5q5d8b" path="res://sprites/ui/button_style.tres" id="11_a038t"] +[ext_resource type="FontFile" uid="uid://cnddkn05b5fj" path="res://addons/fontawesome/fonts/fa-solid-900.woff2" id="11_e3r4r"] +[ext_resource type="SystemFont" uid="uid://dfre5a3mywuhy" path="res://sprites/ui/comic_sans.tres" id="12_0f8fj"] +[ext_resource type="Script" path="res://addons/fontawesome/FontAwesome.gd" id="12_o3hu5"] [ext_resource type="Texture2D" uid="uid://clakkue2mohs4" path="res://sprites/ui/greenBtn.png" id="14_yk2bu"] [ext_resource type="Texture2D" uid="uid://cd8mirubbhn10" path="res://sprites/ui/redBtn.png" id="15_g5gd1"] -[ext_resource type="Texture2D" uid="uid://cl0wwlm6yw0ug" path="res://sprites/ui/fullbodyBtn.png" id="15_rfctk"] -[ext_resource type="Texture2D" uid="uid://nc0wkek55yhu" path="res://sprites/ui/seperateBtn.png" id="16_px53c"] [ext_resource type="Texture2D" uid="uid://wr3ns0ywb75q" path="res://sprites/logo.png" id="16_y58oj"] [node name="Game" type="Node"] @@ -22,13 +24,14 @@ script = ExtResource("1_qt3fe") position = Vector2(306.682, 204.039) scale = Vector2(0.618038, 0.725217) texture = ExtResource("1_uee2i") +metadata/_edit_lock_ = true [node name="Stand" type="Sprite2D" parent="World"] -position = Vector2(321.326, 368.764) +position = Vector2(307.326, 368.764) texture = ExtResource("2_q0w7j") [node name="BoxersOfAmericaFrame" type="Sprite2D" parent="World"] -position = Vector2(77.9707, 272.449) +position = Vector2(527.778, 119.515) texture = ExtResource("4_327cy") [node name="iCrazyFrame" type="Sprite2D" parent="World"] @@ -37,21 +40,23 @@ scale = Vector2(0.700948, 0.7129) texture = ExtResource("2_n1kmf") [node name="Character" parent="." instance=ExtResource("6_tdil0")] -position = Vector2(313.61, 133.222) +position = Vector2(299.61, 133.222) -[node name="Bottoms" type="AnimatedSprite2D" parent="."] -position = Vector2(316.681, 303.715) +[node name="Seperate" type="Node2D" parent="."] + +[node name="Bottoms" type="AnimatedSprite2D" parent="Seperate"] +position = Vector2(305.681, 303.715) sprite_frames = ExtResource("7_3ykci") animation = &"bottoms" -[node name="Tops" type="AnimatedSprite2D" parent="."] -position = Vector2(325.091, 213.195) +[node name="Tops" type="AnimatedSprite2D" parent="Seperate"] +position = Vector2(310.934, 206.309) sprite_frames = ExtResource("7_3ykci") animation = &"tops" -[node name="Fullbody" type="AnimatedSprite2D" parent="."] +[node name="FullBody" type="AnimatedSprite2D" parent="."] visible = false -position = Vector2(558.266, 434.335) +position = Vector2(314.225, 262.214) sprite_frames = ExtResource("7_3ykci") animation = &"fullbody" @@ -60,9 +65,9 @@ position = Vector2(546.704, 311.642) scale = Vector2(0.172412, 0.162644) texture = ExtResource("16_y58oj") -[node name="CanvasLayer" type="CanvasLayer" parent="."] +[node name="Canvas" type="CanvasLayer" parent="."] -[node name="UI" type="Control" parent="CanvasLayer"] +[node name="UI" type="Control" parent="Canvas"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -70,79 +75,146 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 metadata/_edit_use_anchors_ = true +metadata/_edit_lock_ = true -[node name="TopsFwdBtn" type="TextureButton" parent="CanvasLayer/UI"] -layout_mode = 0 -anchor_left = 0.735474 -anchor_top = 0.406494 -anchor_right = 0.807141 -anchor_bottom = 0.563994 +[node name="DressUpCtrls" type="Control" parent="Canvas/UI"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +metadata/_edit_use_anchors_ = true +metadata/_edit_lock_ = true + +[node name="TopsFwdBtn" type="TextureButton" parent="Canvas/UI/DressUpCtrls"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.655 +anchor_top = 0.3775 +anchor_right = 0.726667 +anchor_bottom = 0.535 +offset_bottom = -1.04904e-05 texture_normal = ExtResource("14_yk2bu") -stretch_mode = 4 metadata/_edit_use_anchors_ = true -[node name="TopsBckBtn" type="TextureButton" parent="CanvasLayer/UI"] -layout_mode = 0 -anchor_left = 0.236586 -anchor_top = 0.399881 -anchor_right = 0.308252 -anchor_bottom = 0.55738 -offset_bottom = 1.04904e-05 +[node name="TopsBckBtn" type="TextureButton" parent="Canvas/UI/DressUpCtrls"] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.256667 +anchor_top = 0.345 +anchor_right = 0.328334 +anchor_bottom = 0.5025 texture_normal = ExtResource("15_g5gd1") metadata/_edit_use_anchors_ = true -[node name="BottomsBckBtn" type="TextureButton" parent="CanvasLayer/UI"] +[node name="BottomsBckBtn" type="TextureButton" parent="Canvas/UI/DressUpCtrls"] layout_mode = 1 anchors_preset = -1 -anchor_left = 0.230677 -anchor_top = 0.61427 -anchor_right = 0.302344 -anchor_bottom = 0.77177 -offset_bottom = -2.28882e-05 +anchor_left = 0.245 +anchor_top = 0.535 +anchor_right = 0.316667 +anchor_bottom = 0.6925 +offset_top = -1.04904e-05 texture_normal = ExtResource("15_g5gd1") -stretch_mode = 4 metadata/_edit_use_anchors_ = true -[node name="BottomsFwdBtn" type="TextureButton" parent="CanvasLayer/UI"] +[node name="BottomsFwdBtn" type="TextureButton" parent="Canvas/UI/DressUpCtrls"] layout_mode = 1 anchors_preset = -1 -anchor_left = 0.736785 -anchor_top = 0.613892 -anchor_right = 0.808452 -anchor_bottom = 0.771392 -offset_left = -1.4782e-05 +anchor_left = 0.658334 +anchor_top = 0.5725 +anchor_right = 0.73 +anchor_bottom = 0.73 texture_normal = ExtResource("14_yk2bu") -stretch_mode = 4 metadata/_edit_use_anchors_ = true -[node name="FullbodyBtn" type="TextureButton" parent="CanvasLayer/UI"] +[node name="SettingsCtrls" type="HBoxContainer" parent="Canvas/UI"] layout_mode = 1 anchors_preset = -1 -anchor_left = 0.265919 -anchor_top = 0.0531643 -anchor_right = 0.417585 -anchor_bottom = 0.115664 -offset_left = 1.14441e-05 -offset_right = 1.52588e-05 -texture_normal = ExtResource("15_rfctk") -stretch_mode = 4 +anchor_top = 0.015 +anchor_right = 1.0 +anchor_bottom = 0.0875 +grow_horizontal = 2 +theme_override_constants/separation = 13 +alignment = 1 metadata/_edit_use_anchors_ = true -[node name="SeparateBtn" type="TextureButton" parent="CanvasLayer/UI"] -layout_mode = 1 -anchors_preset = -1 -anchor_left = 0.666512 -anchor_top = 0.0395699 -anchor_right = 0.818178 -anchor_bottom = 0.10457 -offset_left = -1.14441e-05 -texture_normal = ExtResource("16_px53c") -stretch_mode = 4 +[node name="ShirtIcon" type="Label" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +auto_translate = false +localize_numeral_system = false +theme_override_colors/font_color = Color(0, 0.290196, 1, 1) +theme_override_fonts/font = ExtResource("11_e3r4r") +theme_override_font_sizes/font_size = 16 +text = "" +horizontal_alignment = 1 +vertical_alignment = 1 +script = ExtResource("12_o3hu5") +icon_name = "shirt" + +[node name="FullbodyBtn" type="Button" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("12_0f8fj") +theme_override_styles/normal = ExtResource("11_a038t") +theme_override_styles/hover = ExtResource("11_a038t") +theme_override_styles/pressed = ExtResource("11_a038t") +theme_override_styles/disabled = ExtResource("11_a038t") +theme_override_styles/focus = ExtResource("11_a038t") +text = "Outfits" metadata/_edit_use_anchors_ = true -[connection signal="pressed" from="CanvasLayer/UI/TopsFwdBtn" to="." method="_on_tops_fwd_btn_pressed"] -[connection signal="pressed" from="CanvasLayer/UI/TopsBckBtn" to="." method="_on_tops_bck_btn_pressed"] -[connection signal="pressed" from="CanvasLayer/UI/BottomsBckBtn" to="." method="_on_bottoms_bck_btn_pressed"] -[connection signal="pressed" from="CanvasLayer/UI/BottomsFwdBtn" to="." method="_on_bottoms_fwd_btn_pressed"] -[connection signal="pressed" from="CanvasLayer/UI/FullbodyBtn" to="." method="_on_fullbody_btn_pressed"] -[connection signal="pressed" from="CanvasLayer/UI/SeparateBtn" to="." method="_on_separate_btn_pressed"] +[node name="SeparateBtn" type="Button" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("12_0f8fj") +theme_override_styles/normal = ExtResource("11_a038t") +theme_override_styles/hover = ExtResource("11_a038t") +theme_override_styles/pressed = ExtResource("11_a038t") +theme_override_styles/disabled = ExtResource("11_a038t") +theme_override_styles/focus = ExtResource("11_a038t") +text = "Seperate" +metadata/_edit_use_anchors_ = true + +[node name="FontAwesome" type="Label" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +auto_translate = false +localize_numeral_system = false +theme_override_colors/font_color = Color(0, 0.290196, 1, 1) +theme_override_fonts/font = ExtResource("11_e3r4r") +theme_override_font_sizes/font_size = 16 +text = "" +horizontal_alignment = 1 +vertical_alignment = 1 +script = ExtResource("12_o3hu5") +icon_name = "gear" + +[node name="SaveBtn" type="Button" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +theme_type_variation = &"FlatButton" +theme_override_fonts/font = ExtResource("12_0f8fj") +theme_override_styles/normal = ExtResource("11_a038t") +theme_override_styles/hover = ExtResource("11_a038t") +theme_override_styles/pressed = ExtResource("11_a038t") +theme_override_styles/disabled = ExtResource("11_a038t") +theme_override_styles/focus = ExtResource("11_a038t") +text = "Save" + +[node name="ExitBtn" type="Button" parent="Canvas/UI/SettingsCtrls"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("12_0f8fj") +theme_override_styles/normal = ExtResource("11_a038t") +theme_override_styles/hover = ExtResource("11_a038t") +theme_override_styles/pressed = ExtResource("11_a038t") +theme_override_styles/disabled = ExtResource("11_a038t") +theme_override_styles/focus = ExtResource("11_a038t") +text = "Exit" + +[connection signal="pressed" from="Canvas/UI/DressUpCtrls/TopsFwdBtn" to="." method="_on_tops_fwd_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/DressUpCtrls/TopsBckBtn" to="." method="_on_tops_bck_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/DressUpCtrls/BottomsBckBtn" to="." method="_on_bottoms_bck_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/DressUpCtrls/BottomsFwdBtn" to="." method="_on_bottoms_fwd_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/SettingsCtrls/FullbodyBtn" to="." method="_on_fullbody_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/SettingsCtrls/SeparateBtn" to="." method="_on_separate_btn_pressed"] +[connection signal="pressed" from="Canvas/UI/SettingsCtrls/SaveBtn" to="." method="_on_save_btn_pressed"] diff --git a/scenes/items.tres b/scenes/items.tres index 310c47d..d931730 100644 --- a/scenes/items.tres +++ b/scenes/items.tres @@ -1,14 +1,16 @@ -[gd_resource type="SpriteFrames" load_steps=15 format=3 uid="uid://bhyon1s1op8ly"] +[gd_resource type="SpriteFrames" load_steps=17 format=3 uid="uid://bhyon1s1op8ly"] [ext_resource type="Texture2D" uid="uid://wfsffpk4h8p" path="res://sprites/clothes/sweat_pants.png" id="1_5mrf2"] [ext_resource type="Texture2D" uid="uid://b3xtl8c73nw30" path="res://sprites/clothes/beatup_jeans.png" id="2_0n07e"] [ext_resource type="Texture2D" uid="uid://bl8w5mjjo4i73" path="res://sprites/clothes/jeans.png" id="3_7udtq"] [ext_resource type="Texture2D" uid="uid://310b2835i5d8" path="res://sprites/clothes/dj_shirt.png" id="7_b8d0l"] [ext_resource type="Texture2D" uid="uid://5heuxqo78jns" path="res://sprites/clothes/fullbody/canonrhode.png" id="7_iagv2"] +[ext_resource type="Texture2D" uid="uid://bhgvidynd582a" path="res://sprites/clothes/retro_shirt.svg" id="8_cd0je"] [ext_resource type="Texture2D" uid="uid://cgnumy58myojg" path="res://sprites/clothes/fullbody/coat.png" id="8_uraqp"] [ext_resource type="Texture2D" uid="uid://6y443cg1s6up" path="res://sprites/clothes/fullbody/edsoutfit.png" id="9_osdr5"] [ext_resource type="Texture2D" uid="uid://dt1tsnusorwv8" path="res://sprites/clothes/korm_shirt.png" id="10_81cd5"] [ext_resource type="Texture2D" uid="uid://crgedi1ppq2ow" path="res://sprites/clothes/fullbody/formal.png" id="10_uqjix"] +[ext_resource type="Texture2D" uid="uid://qvwv0sdwl5u4" path="res://sprites/clothes/fullsnack_shirt.svg" id="11_hmki5"] [ext_resource type="Texture2D" uid="uid://b07kumnwr7c0w" path="res://sprites/clothes/fullbody/mario.png" id="11_ssvy5"] [ext_resource type="Texture2D" uid="uid://c8xa7sal3omnm" path="res://sprites/clothes/fullbody/schoolgirl.png" id="12_3wtcm"] [ext_resource type="Texture2D" uid="uid://b0sf2e2e5jfab" path="res://sprites/clothes/z_shirt.png" id="12_i81ab"] @@ -69,6 +71,12 @@ animations = [{ }, { "duration": 1.0, "texture": ExtResource("12_i81ab") +}, { +"duration": 1.0, +"texture": ExtResource("8_cd0je") +}, { +"duration": 1.0, +"texture": ExtResource("11_hmki5") }], "loop": true, "name": &"tops", diff --git a/scripts/config.gd b/scripts/config.gd index 460c050..35a1f65 100644 --- a/scripts/config.gd +++ b/scripts/config.gd @@ -1,16 +1,25 @@ extends Node -func debug_config(): +func config_file(config_file = "user://config.cfg"): # If the game is in if OS.is_debug_build(): + print_debug("Loading local config file") return "res://config.cfg" else: - return "user://config.cfg" + return config_file + +func save_file(save_file = "user://save.cfg"): + # If the game is in + if OS.is_debug_build(): + print_debug("Loading local save file") + return "res://save.cfg" + else: + return save_file -func set_config(config_file = "user://config.cfg"): +func save_config(config_file = "user://config.cfg"): # Create new ConfigFile object. var config = ConfigFile.new() - + # Store some values. config.set_value("window", "height", 1024) config.set_value("window", "width", 768) @@ -18,8 +27,21 @@ func set_config(config_file = "user://config.cfg"): # Save it to a file (overwrite if already exists) if !FileAccess.file_exists(config_file): config.save(config_file) + +func save_game(tops = 0, bottoms = 0, full_body = 0, save_file = "user://save.cfg", overwrite = false, ): + # Create new ConfigFile object. + var config = ConfigFile.new() -func get_config(section, value, config_file = "user://config.cfg"): + # Store some values. + config.set_value("clothes", "tops", tops) + config.set_value("clothes", "bottoms", bottoms) + config.set_value("clothes", "full_body", full_body) + + # Save it to a file (overwrite if already exists) + if !FileAccess.file_exists(save_file) || overwrite == true: + config.save(save_file) + +func load_config(section, value, config_file = "user://config.cfg"): var config = ConfigFile.new() # Load data from a file. diff --git a/scripts/game.gd b/scripts/game.gd index 2b41643..7964138 100644 --- a/scripts/game.gd +++ b/scripts/game.gd @@ -1,33 +1,71 @@ extends Node -@onready var tops = $Tops -@onready var bottoms = $Bottoms +@onready var tops = $Seperate/Tops +@onready var bottoms = $Seperate/Bottoms +@onready var seperate_items = $Seperate +@onready var bottoms_bck = $Canvas/UI/DressUpCtrls/BottomsBckBtn +@onready var bottoms_fwd = $Canvas/UI/DressUpCtrls/BottomsFwdBtn +@onready var full_body = $FullBody +var is_seperate = true +var is_full_body = false + +var config_file = Config.config_file() +var save_file = Config.save_file() func _ready(): - var config_file = Config.debug_config() if !FileAccess.file_exists(config_file): - Config.set_config() + Config.save_config(config_file) + + if !FileAccess.file_exists(save_file): + Config.save_game(save_file) + + if FileAccess.file_exists(save_file): + var clothes_section = "clothes" + tops.frame = Config.load_config(clothes_section, "tops", save_file) + bottoms.frame = Config.load_config(clothes_section, "bottoms", save_file) + full_body.frame = Config.load_config(clothes_section, "full_body", save_file) if FileAccess.file_exists(config_file): - var window_height = Config.get_config("window", "height", config_file) - var window_width = Config.get_config("window", "width", config_file) - print_debug(window_height) - print_debug(window_width) + var window_section = "window" + var window_height = Config.load_config(window_section, "height", config_file) + var window_width = Config.load_config(window_section, "width", config_file) if window_height && window_width != null: DisplayServer.window_set_size(Vector2i(window_height, window_width)) +func game_save(): + Config.save_game(tops.frame, bottoms.frame, full_body.frame, save_file, true) + +func _process(delta): + if Input.is_action_just_pressed("exit"): + game_save() + get_tree().quit() + +func _on_save_btn_pressed(): + game_save() func _on_tops_fwd_btn_pressed(): - var current_frame = tops.frame - tops.frame = current_frame + 1; + var current_frame + + if is_seperate: + current_frame = tops.frame + tops.frame = current_frame + 1; + + if is_full_body: + current_frame = full_body.frame + full_body.frame = current_frame + 1; func _on_tops_bck_btn_pressed(): - var current_frame = tops.frame - tops.frame = current_frame + -1; - + var current_frame + if is_seperate: + current_frame = tops.frame + tops.frame = current_frame + -1; + + if is_full_body: + current_frame = full_body.frame + full_body.frame = current_frame + -1; func _on_bottoms_bck_btn_pressed(): var current_frame = bottoms.frame @@ -38,10 +76,20 @@ func _on_bottoms_fwd_btn_pressed(): var current_frame = bottoms.frame bottoms.frame = current_frame + 1; - func _on_fullbody_btn_pressed(): - pass # Replace with function body. - + is_seperate = false + is_full_body = true + seperate_items.hide() + bottoms_bck.hide() + bottoms_fwd.hide() + full_body.show() func _on_separate_btn_pressed(): - pass # Replace with function body. + is_seperate = true + is_full_body = false + seperate_items.show() + bottoms_bck.show() + bottoms_fwd.show() + full_body.hide() + + diff --git a/sprites/clothes/fullsnack_shirt.svg b/sprites/clothes/fullsnack_shirt.svg index ee8c400..41f76c7 100644 --- a/sprites/clothes/fullsnack_shirt.svg +++ b/sprites/clothes/fullsnack_shirt.svg @@ -1,35 +1,146 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sprites/clothes/retro_shirt.svg b/sprites/clothes/retro_shirt.svg index a2f80b3..72ca220 100644 --- a/sprites/clothes/retro_shirt.svg +++ b/sprites/clothes/retro_shirt.svg @@ -1,17 +1,84 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/sprites/ui/button_style.tres b/sprites/ui/button_style.tres new file mode 100644 index 0000000..7e142fb --- /dev/null +++ b/sprites/ui/button_style.tres @@ -0,0 +1,14 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://by6foat5q5d8b"] + +[resource] +bg_color = Color(0, 0.556863, 1, 1) +border_width_left = 3 +border_width_top = 3 +border_width_right = 3 +border_width_bottom = 3 +border_color = Color(0, 0.180392, 1, 1) +border_blend = true +corner_radius_top_left = 5 +corner_radius_top_right = 5 +corner_radius_bottom_right = 5 +corner_radius_bottom_left = 5 diff --git a/sprites/ui/comic_sans.tres b/sprites/ui/comic_sans.tres new file mode 100644 index 0000000..d238858 --- /dev/null +++ b/sprites/ui/comic_sans.tres @@ -0,0 +1,5 @@ +[gd_resource type="SystemFont" format=3 uid="uid://dfre5a3mywuhy"] + +[resource] +font_names = PackedStringArray("Comic Sans MS") +hinting = 2