diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5b79524 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# EditorConfig +root = true + +[*] +charset = utf-8 + +[*.{gd,dialogue}] +indent_style = tab +indent_size = 4 + +[*.{yaml,yml,xml}] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ddba7d3 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,18 @@ +github: HarmonyHoney +ko_fi: hhoney +custom: + - https://harmonymonroe.itch.io/ + - https://store.steampowered.com/developer/HarmonyMonroe + - https://www.youtube.com/@hhoney7 + +# Unused by keeping here as a reminder +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: # Replace with a single Buy Me a Coffee username +thanks_dev: # Replace with a single thanks.dev username diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml new file mode 100644 index 0000000..4daae6b --- /dev/null +++ b/.github/workflows/flatpak.yml @@ -0,0 +1,24 @@ +name: Flatpak +on: + push: + branches: + - master4 + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + flatpak: + runs-on: ubuntu-latest + container: + image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-24.08 + options: --privileged + steps: + - uses: actions/checkout@v4 + - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + bundle: rota.flatpak + manifest-path: linux/net.hhoney.rota.yml + cache-key: "flatpak-builder-${{ github.sha }}" diff --git a/.github/workflows/godot.yml b/.github/workflows/godot.yml new file mode 100644 index 0000000..8341a60 --- /dev/null +++ b/.github/workflows/godot.yml @@ -0,0 +1,57 @@ +name: "Godot Engine" +on: + workflow_dispatch: + pull_request: + release: + types: + - released + +env: + GODOT_VERSION: 3.6 + EXPORT_NAME: rota-ci + +jobs: + export: + name: Export + runs-on: ubuntu-latest + container: + image: docker.io/smks/godot-ci:3.6 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + lfs: true + + - name: Set up export templates + run: | + mkdir -v -p ~/.local/share/godot/templates/ + mv /root/.local/share/godot/templates/${GODOT_VERSION}.stable ~/.local/share/godot/templates/${GODOT_VERSION}.stable + + - name: Export + run: | + mkdir --verbose --parents ./export/linux + godot --no-window --path=./project.godot --export-pack "Linux/X11" ./export/linux/${EXPORT_NAME}.pck + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.EXPORT_NAME }} + path: export/linux/${{ env.EXPORT_NAME }}.pck + + release: + name: Release + needs: export + if: ${{ github.event_name == 'release' }} + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.EXPORT_NAME }} + + - name: Upload to release + env: + GITHUB_TOKEN: ${{ github.token }} + run: | + mv '${{ env.EXPORT_NAME }}.pck' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' + gh release upload '${{ github.ref_name }}' '${{ env.EXPORT_NAME }}-${{ github.ref_name }}.pck' --repo '${{ github.repository }}' diff --git a/.gitignore b/.gitignore index e4007a6..eaf2514 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.translation # custom +.flatpak-builder/ .import/ [Aa]ndroid/ [Ee]xport/*/ diff --git a/LICENSE b/LICENSE index 68a49da..e515d0b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,24 +1,7 @@ -This is free and unencumbered software released into the public domain. +Copyright (c) 2025 Harmony Honey Monroe -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/export/butler_push.bat b/export/butler_push.bat index 06a4995..3b10da0 100644 --- a/export/butler_push.bat +++ b/export/butler_push.bat @@ -1,6 +1,6 @@ -butler push win hhoneysoftware/rota:win -butler push linux hhoneysoftware/rota:linux -butler push mac hhoneysoftware/rota:mac -butler push web hhoneysoftware/rota:web -butler push android hhoneysoftware/rota:android +butler push win harmonymonroe/rota:win +butler push linux harmonymonroe/rota:linux +butler push mac harmonymonroe/rota:mac +butler push web harmonymonroe/rota:web +butler push android harmonymonroe/rota:android pause diff --git a/export_presets.cfg b/export_presets.cfg index a277098..82a595e 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -214,9 +214,9 @@ architectures/armeabi-v7a=true architectures/arm64-v8a=true architectures/x86=false architectures/x86_64=false -keystore/debug="" -keystore/debug_user="" -keystore/debug_password="" +keystore/debug="C:/Dev/keys/harmony.keystore" +keystore/debug_user="harmony" +keystore/debug_password="harmony" keystore/release="C:/Dev/keys/harmony.keystore" keystore/release_user="harmony" keystore/release_password="harmony" @@ -229,7 +229,7 @@ package/signed=true package/classify_as_game=true package/retain_data_on_uninstall=false package/exclude_from_recents=false -launcher_icons/main_192x192="" +launcher_icons/main_192x192="res://media/image/icon/android-icon192.png" launcher_icons/adaptive_foreground_432x432="" launcher_icons/adaptive_background_432x432="" graphics/opengl_debug=false diff --git a/linux/.gdignore b/linux/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/linux/net.hhoney.rota-symbolic.svg b/linux/net.hhoney.rota-symbolic.svg new file mode 100644 index 0000000..8601122 --- /dev/null +++ b/linux/net.hhoney.rota-symbolic.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux/net.hhoney.rota.Source.svg b/linux/net.hhoney.rota.Source.svg new file mode 100644 index 0000000..30e732f --- /dev/null +++ b/linux/net.hhoney.rota.Source.svg @@ -0,0 +1,3199 @@ + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hicolor + Symbolic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + battery is full and there is no a/c connected. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux/net.hhoney.rota.desktop b/linux/net.hhoney.rota.desktop new file mode 100644 index 0000000..c270c83 --- /dev/null +++ b/linux/net.hhoney.rota.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=ROTA +GenericName=Puzzle Game +Comment=Gravity bends beneath your feet +Exec=godot-runner +Icon=net.hhoney.rota +Terminal=false +Type=Application +Categories=Game;KidsGame; \ No newline at end of file diff --git a/linux/net.hhoney.rota.metainfo.xml b/linux/net.hhoney.rota.metainfo.xml new file mode 100644 index 0000000..6ccdd47 --- /dev/null +++ b/linux/net.hhoney.rota.metainfo.xml @@ -0,0 +1,71 @@ + + + ROTA + Gravity bends beneath your feet + + #ffc3d6 + #850087 + + HHoney Software + + HHoney Software + + +

Move blocks and twist gravity to solve puzzles. Collect all 50 gems and explore 8 vibrant worlds.

+
    +
  • Rotate gravity as you walk over the edge!
  • +
  • Push, pull and rotate gravity-blocks to traverse the stage and solve puzzles.
  • +
  • Collect all 50 gems to unlock doors and explore 8 vibrant worlds!
  • +
  • Listen to an original ambient soundtrack that will keep you relaxed while solving challenging puzzles. (:
  • +
  • Watch out for spikes! 0:
  • +
+
+ net.hhoney.rota + net.hhoney.rota.desktop + CC0-1.0 + MIT + + https://hhoney.net + https://github.com/HarmonyHoney/ROTA/issues + https://ko-fi.com/hhoney + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/1.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/2.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/3.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/4.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/5.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/6.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/7.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/8.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/9.png + + + https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/10.png + + + + + touch + + + keyboard + gamepad + +
diff --git a/linux/net.hhoney.rota.releases.xml b/linux/net.hhoney.rota.releases.xml new file mode 100644 index 0000000..036376c --- /dev/null +++ b/linux/net.hhoney.rota.releases.xml @@ -0,0 +1,179 @@ + + + +

Soundtrack Update

+
    +
  • Two new songs have been added to ROTA
  • +
  • Touch-screen bugfixes
  • +
  • Player animation fixes
  • +
  • Added a Sign to puzzle 1-5 showing the Zoom instructions
  • +
+
+
+ + +

Updated logos, credits

+

Fixed typo

+
+
+ + +

Refreshed app icon and brand colors

+
+
+ + +

Touch screen revisions

+
+
+ + +

New Logos & Touch Screen Saving

+
    +
  • add new HHoney Software Logos
  • +
  • "Touch Screen" option will now save and load between game sessions
  • +
+

(:

+
+
+ + +

Patch 9 - Android Port & Touch Controls !

+
    +
  • ROTA on Android
  • +
  • Touch Controls for any device
  • +
  • Adjust Touch Control Margins
  • +
+
+
+ + +

Patch 8 - New Logo & Engine Upgrade

+
    +
  • Game Engine update from Godot 3.5.2 to Godot 3.6
  • +
  • New Logo !
  • +
+
+
+ + +

Patch 7 - Arcade Action & Ultrawide Support

+
    +
  • "Wrap It Up" Arcade Cabinet located in the Grasslands (:
  • +
  • Ultrawide Display Support! ROTA now expands to infinite width...
  • +
  • Weather is silent when Disabled
  • +
  • Weather Volume Option
  • +
+

New Achievements:

+
    +
  • Shiny - Collect your first Gem
  • +
  • Fast Fingers - Collect your first Clock
  • +
  • Clock Collector - Collect 50 Clocks (=
  • +
  • Wrap It Up - Clear the First Loop
  • +
+
+
+ + +

Patch 6 - High Refresh Rate Support! (=

+

This update brings two new Options in the Menu:

+
    +
  • Interpolation
  • +
  • Frame Limit
  • +
+

Interpolation will smooth out player movement on higher refresh rate displays! Frame limit can limit the maximum Frames Per Second of the game (:

+

Thanks to the pull request by neropatti! <3

+
+ + Add smoothing/interpolation to player visuals + +
+ + +

Breath of Life Update - Patch 5

+

New friends have arrived in ROTA! The Sun, Moon and Stars have come along with them... ROTA is now populated with curious characters eager to meet you! Have a chat between puzzles! Clouds have filled with sky, bringing weather like rain and snow falling gently to the ground.

+

Changes:

+
    +
  • New Characters moved in, populating ROTA!
  • +
  • Chat with folks and get to know them (;
  • +
  • Connect stray worlds and bring people together!
  • +
+
    +
  • Dynamic Weather System! Clouds fill the sky with falling Rain & Snow...
  • +
  • Day & Night! Watch the Sun rise and Moon fall.
  • +
  • Dynamic Lighting and Shadows! Illuminated by the Burning Star in Orbit.
  • +
  • Stars come out at night! Twinkling in the distance...
  • +
  • Background depth with Parallax layers!
  • +
+
    +
  • Doors hold a Vortex, sucking in travelers and spitting them out the other end!
  • +
  • Door closing Sound Effect.
  • +
  • World Door Unlock Cutscene! Combine the power of Gems and fill the socket...
  • +
+
    +
  • All Menus overhauled! Simple & Clean.
  • +
  • Pause Menu minified. The world keeps moving...
  • +
  • UI animation improved when collecting a Gem or Clock!
  • +
  • Hair physics rework! Smoother motions when swaying in the breeze (;
  • +
  • Radial Blur effect with help from Guy Unger! <3
  • +
+
    +
  • Player D-Pad & Joystick input issues fixed! Movement feels more responsive.
  • +
  • Camera speed V-Sync issue fixed!
  • +
  • Performance improvements! Ignoring many objects off-screen.
  • +
+
+
+ + +

Patch 4 - Character Creator and Speedruns!

+

Changes:

+
    +
  • Character Creator
  • +
  • Speedrun Goals!
  • +
  • Ending Scene
  • +
  • Visual Overhaul, More Animations and Polygons! (=
  • +
  • Input Responsiveness and Bugfixes
  • +
  • Performance Optimations! (;
  • +
+
+
+ + +

Patch 3 - Demo! (:

+

Hello everyone! ^.^ ROTA now has a free Demo!

+

Explore and solve the first 8 puzzles before you buy the game!

+

Cross-save is enabled, so any progress you make in the demo will carry over into the full game! (:

+

Have fun and keep on rotating! <3

+

- Harmony Honey

+
+
+ + +

Patch 2

+
    +
  • Fixed Gem placement on puzzle 3 in cobblestone.
  • +
  • Fixed a bug with the player riding boxes.
  • +
+
+
+ + +

Patch 1

+

Hello everyone, Patch 1 is now live!

+

This build comes with two minor bug fixes:

+
    +
  • Menu scrolling re-worked
  • +
  • Prevent the player from riding on boxes moving upward
  • +
+

Thanks for the feedback! Please let me know if you see anything funny.

+

Contact me on discord! (。◕‿◕。) Harmony <3#8571

+
+
+ + +

Launch Day!!

+

ROTA is out now!! Thank you all for the support and positivity! Every order on itch comes with a steam key on launch! (:

+
+
+
diff --git a/linux/net.hhoney.rota.svg b/linux/net.hhoney.rota.svg new file mode 100644 index 0000000..0edcfd6 --- /dev/null +++ b/linux/net.hhoney.rota.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linux/net.hhoney.rota.yml b/linux/net.hhoney.rota.yml new file mode 100644 index 0000000..dc3e241 --- /dev/null +++ b/linux/net.hhoney.rota.yml @@ -0,0 +1,31 @@ +id: net.hhoney.rota +runtime: org.freedesktop.Platform +runtime-version: '24.08' +base: org.godotengine.godot.BaseApp +base-version: '3.6' +sdk: org.freedesktop.Sdk +command: godot-runner +finish-args: +- --share=ipc +- --socket=x11 +- --socket=pulseaudio +- --device=all +modules: +- name: rota + buildsystem: simple + sources: + + - type: dir + path: ../ + + - type: file + url: https://github.com/HarmonyHoney/ROTA/releases/download/flathub3/ROTA.pck + sha256: fc7849b61e32c6ff6d8a8c4b31225c396ca845ee220436f75f665d60698c59a6 + + build-commands: + - install -Dm644 ROTA.pck ${FLATPAK_DEST}/bin/godot-runner.pck + - install -Dm644 linux/${FLATPAK_ID}.desktop ${FLATPAK_DEST}/share/applications/${FLATPAK_ID}.desktop + - install -Dm644 linux/${FLATPAK_ID}.metainfo.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.metainfo.xml + - install -Dm644 linux/${FLATPAK_ID}.releases.xml ${FLATPAK_DEST}/share/metainfo/${FLATPAK_ID}.releases.xml + - install -Dm644 linux/${FLATPAK_ID}.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/${FLATPAK_ID}.svg + - install -Dm644 linux/${FLATPAK_ID}-symbolic.svg ${FLATPAK_DEST}/share/icons/hicolor/symbolic/apps/${FLATPAK_ID}-symbolic.svg diff --git a/media/audio/music/ost5.mp3 b/media/audio/music/ost5.mp3 new file mode 100644 index 0000000..7cd9f1b Binary files /dev/null and b/media/audio/music/ost5.mp3 differ diff --git a/media/audio/music/ost5.mp3.import b/media/audio/music/ost5.mp3.import new file mode 100644 index 0000000..90ea2e4 --- /dev/null +++ b/media/audio/music/ost5.mp3.import @@ -0,0 +1,15 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +path="res://.import/ost5.mp3-8a410e27a4dd1ce657a4b843180f824c.mp3str" + +[deps] + +source_file="res://media/audio/music/ost5.mp3" +dest_files=[ "res://.import/ost5.mp3-8a410e27a4dd1ce657a4b843180f824c.mp3str" ] + +[params] + +loop=false +loop_offset=0 diff --git a/media/audio/music/ost6.mp3 b/media/audio/music/ost6.mp3 new file mode 100644 index 0000000..c8638a8 Binary files /dev/null and b/media/audio/music/ost6.mp3 differ diff --git a/media/audio/music/ost6.mp3.import b/media/audio/music/ost6.mp3.import new file mode 100644 index 0000000..7e95ae6 --- /dev/null +++ b/media/audio/music/ost6.mp3.import @@ -0,0 +1,15 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +path="res://.import/ost6.mp3-a69612ac29493fe5fcdc0b2994486269.mp3str" + +[deps] + +source_file="res://media/audio/music/ost6.mp3" +dest_files=[ "res://.import/ost6.mp3-a69612ac29493fe5fcdc0b2994486269.mp3str" ] + +[params] + +loop=false +loop_offset=0 diff --git a/media/font/alexandria-latin-100-normal.ttf b/media/font/alexandria-latin-100-normal.ttf new file mode 100644 index 0000000..d73a6e3 Binary files /dev/null and b/media/font/alexandria-latin-100-normal.ttf differ diff --git a/media/font/alexandria-latin-200-normal.ttf b/media/font/alexandria-latin-200-normal.ttf new file mode 100644 index 0000000..c89b588 Binary files /dev/null and b/media/font/alexandria-latin-200-normal.ttf differ diff --git a/media/font/alexandria-latin-300-normal.ttf b/media/font/alexandria-latin-300-normal.ttf new file mode 100644 index 0000000..381181f Binary files /dev/null and b/media/font/alexandria-latin-300-normal.ttf differ diff --git a/media/font/alexandria-latin-400-normal.ttf b/media/font/alexandria-latin-400-normal.ttf new file mode 100644 index 0000000..fc35e8d Binary files /dev/null and b/media/font/alexandria-latin-400-normal.ttf differ diff --git a/media/font/alexandria-latin-500-normal.ttf b/media/font/alexandria-latin-500-normal.ttf new file mode 100644 index 0000000..54b36e2 Binary files /dev/null and b/media/font/alexandria-latin-500-normal.ttf differ diff --git a/media/font/alexandria-latin-600-normal.ttf b/media/font/alexandria-latin-600-normal.ttf new file mode 100644 index 0000000..75a5871 Binary files /dev/null and b/media/font/alexandria-latin-600-normal.ttf differ diff --git a/media/font/alexandria-latin-700-normal.ttf b/media/font/alexandria-latin-700-normal.ttf new file mode 100644 index 0000000..d11ed70 Binary files /dev/null and b/media/font/alexandria-latin-700-normal.ttf differ diff --git a/media/font/alexandria-latin-800-normal.ttf b/media/font/alexandria-latin-800-normal.ttf new file mode 100644 index 0000000..cec900d Binary files /dev/null and b/media/font/alexandria-latin-800-normal.ttf differ diff --git a/media/font/alexandria-latin-900-normal.ttf b/media/font/alexandria-latin-900-normal.ttf new file mode 100644 index 0000000..8c676a1 Binary files /dev/null and b/media/font/alexandria-latin-900-normal.ttf differ diff --git a/media/image/UI/harmony-monroe-square-white.png b/media/image/UI/harmony-monroe-square-white.png new file mode 100644 index 0000000..8d94fdb Binary files /dev/null and b/media/image/UI/harmony-monroe-square-white.png differ diff --git a/media/image/UI/harmony-monroe-square-white.png.import b/media/image/UI/harmony-monroe-square-white.png.import new file mode 100644 index 0000000..4a93df5 --- /dev/null +++ b/media/image/UI/harmony-monroe-square-white.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/harmony-monroe-square-white.png-ddf61032c5d50c1bf08c2fd5160a5188.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://media/image/UI/harmony-monroe-square-white.png" +dest_files=[ "res://.import/harmony-monroe-square-white.png-ddf61032c5d50c1bf08c2fd5160a5188.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/media/image/UI/harmony-monroe-white.png b/media/image/UI/harmony-monroe-white.png new file mode 100644 index 0000000..1b4ea73 Binary files /dev/null and b/media/image/UI/harmony-monroe-white.png differ diff --git a/media/image/UI/harmony-monroe-white.png.import b/media/image/UI/harmony-monroe-white.png.import new file mode 100644 index 0000000..43d20d2 --- /dev/null +++ b/media/image/UI/harmony-monroe-white.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/harmony-monroe-white.png-b5ca7bdecdb1233b817bf2f49291c597.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://media/image/UI/harmony-monroe-white.png" +dest_files=[ "res://.import/harmony-monroe-white.png-b5ca7bdecdb1233b817bf2f49291c597.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/media/image/icon/android-icon192.png b/media/image/icon/android-icon192.png new file mode 100644 index 0000000..1d1bfc0 Binary files /dev/null and b/media/image/icon/android-icon192.png differ diff --git a/media/image/icon/android-icon192.png.import b/media/image/icon/android-icon192.png.import new file mode 100644 index 0000000..8c8c531 --- /dev/null +++ b/media/image/icon/android-icon192.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/android-icon192.png-8ced6154d62c44da16aa10ff020fc5cd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://media/image/icon/android-icon192.png" +dest_files=[ "res://.import/android-icon192.png-8ced6154d62c44da16aa10ff020fc5cd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/project.godot b/project.godot index 49472f8..2a1fec4 100644 --- a/project.godot +++ b/project.godot @@ -152,14 +152,14 @@ _global_script_class_icons={ [application] -config/name="ROTA" -config/description="ROTA by Harmony Honey -hhoney.net" +config/name="ROTA: Bend Gravity" +config/description="ROTA: Bend Gravity by Harmony Monroe +harmonymonroe.com" run/main_scene="res://src/menu/Splash.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="ROTA-Harmony" config/project_settings_override="user://override.cfg" -boot_splash/image="res://media/image/UI/title_splash.png" +boot_splash/image="res://media/image/UI/harmony-monroe-square-white.png" boot_splash/bg_color=Color( 0, 0, 0, 1 ) config/icon="res://media/image/icon/icon256.png" config/windows_native_icon="res://media/image/icon/rota.ico" @@ -185,7 +185,6 @@ Steam="*res://addons/steam_api/steam.gd" window/size/width=1280 window/size/height=720 -window/size/borderless=true window/size/test_width=1920 window/size/test_height=1080 window/stretch/mode="2d" diff --git a/readme.md b/readme.md index c83a393..807cd07 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,11 @@ -# ![icon](media/image/icon/icon48.png) ROTA -Made with [Godot Engine](https://github.com/godotengine/godot) 3.6 / Gravity Bending Puzzle Platformer +# ![icon](media/image/icon/icon48.png) ROTA: Bend Gravity +Made with [Godot Engine](https://github.com/godotengine/godot) 3.6.1 / Gravity Bending Puzzle Platformer Available for Linux, Windows, Mac, Web & Android ! -Play now on [Steam](https://store.steampowered.com/app/1993830/ROTA/) or [itch.io](https://harmonyhoney.itch.io/rota) (: +Play on Steam [store.steampowered.com/app/1993830/ROTA/](https://store.steampowered.com/app/1993830/ROTA/) + +Play on itch.io [harmonymonroe.itch.io/rota](https://harmonymonroe.itch.io/rota) (: ![main_capsule](media/image/assets/main_capsule.png) diff --git a/src/actor/Player.gd b/src/actor/Player.gd index 20e1649..064002e 100644 --- a/src/actor/Player.gd +++ b/src/actor/Player.gd @@ -522,6 +522,23 @@ func physics_frame(): func _process(delta): if Engine.editor_hint: return + # squash squish and stretch + sprites.scale = squish_from.linear_interpolate(Vector2.ONE, squish_ease.count(delta)) + + # blink anim + if blink_clock < blink_time: + blink_clock += delta + else: + var be = blink_ease.count(delta) + spr_eyes.scale.y = lerp(1.0, 0.1, be) + if be == 1.0: + blink_ease.show = false + elif be == 0.0: + blink_ease.show = true + blink_clock = 0.0 + blink_time = rand_range(blink_range.x, blink_range.y) + + # death animation if is_dead: sprites.position += rot(velocity) * delta sprites.rotate(deg2rad(240) * -dir_x * delta) @@ -529,12 +546,13 @@ func _process(delta): if dead_clock < dead_time: dead_clock += delta - if dead_clock > dead_time: + if dead_clock >= dead_time: Cutscene.is_playing = false Shared.reset() return + # grow and shrink in and out of scene if spr_easy.is_less or !spr_easy.show: var sec = spr_easy.count(delta, spr_easy.show and !Wipe.is_intro) var dp = to_local(door_exit.global_position) if is_instance_valid(door_exit) else rot(Vector2(0, -25)) @@ -603,22 +621,6 @@ func _process(delta): var r = lerp_angle(turn_from, turn_to, s) sprites.rotation = r emit_signal("turn_angle", r) - - # squash squish and stretch - sprites.scale = squish_from.linear_interpolate(Vector2.ONE, squish_ease.count(delta)) - - # blink anim - if blink_clock < blink_time: - blink_clock += delta - else: - var be = blink_ease.count(delta) - spr_eyes.scale.y = lerp(1.0, 0.1, be) - if be == 1.0: - blink_ease.show = false - elif be == 0.0: - blink_ease.show = true - blink_clock = 0.0 - blink_time = rand_range(blink_range.x, blink_range.y) ### Set Get diff --git a/src/autoload/Audio.tscn b/src/autoload/Audio.tscn index c8572ed..4629bff 100644 --- a/src/autoload/Audio.tscn +++ b/src/autoload/Audio.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=2] +[gd_scene load_steps=37 format=2] [ext_resource path="res://src/autoload/Audio.gd" type="Script" id=1] [ext_resource path="res://media/audio/sfx/coin1.wav" type="AudioStream" id=2] @@ -34,11 +34,14 @@ [ext_resource path="res://media/audio/sfx/zap0.wav" type="AudioStream" id=32] [ext_resource path="res://media/audio/music/arcade2.mp3" type="AudioStream" id=33] [ext_resource path="res://media/audio/sfx/oneup1.wav" type="AudioStream" id=34] +[ext_resource path="res://media/audio/music/ost6.mp3" type="AudioStream" id=35] +[ext_resource path="res://media/audio/music/ost5.mp3" type="AudioStream" id=36] [node name="Audio" type="Node"] pause_mode = 2 script = ExtResource( 1 ) -ost = [ ExtResource( 21 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ) ] +ost = [ ExtResource( 21 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 36 ), ExtResource( 35 ) ] +wait_range = Vector2( 2, 5 ) [node name="Music" type="Node" parent="."] diff --git a/src/autoload/touch_screen.gd b/src/autoload/touch_screen.gd index 2f3b1d3..630ac64 100644 --- a/src/autoload/touch_screen.gd +++ b/src/autoload/touch_screen.gd @@ -23,15 +23,10 @@ func _ready(): visible = Shared.is_touch or ((OS.has_touchscreen_ui_hint() and OS.get_name() == "HTML5") or OS.get_name() == "Android") func _input(event): - if !Shared.is_touch: - var d = event is InputEventScreenDrag - var t = event is InputEventScreenTouch - var k = event is InputEventKey - var b = event is InputEventJoypadButton - var m = event is InputEventJoypadMotion - - if d or t or k or b or m: - visible = d or t + if event is InputEventScreenTouch or event is InputEventScreenDrag: + visible = true + elif event is InputEventKey or event is InputEventJoypadButton or event is InputEventJoypadMotion: + visible = Shared.is_touch func show_keys(arg_arrows := true, arg_c := true, arg_x := true, arg_pause := false, arg_passby := false): right.visible = arg_arrows @@ -40,10 +35,6 @@ func show_keys(arg_arrows := true, arg_c := true, arg_x := true, arg_pause := fa top.visible = arg_pause func set_game(arg := false): - var i = "" if arg else "ui_" - set_actions(i + "up", i + "down", i + "left", i + "right") - buttons[0].action = "grab" if arg else "ui_cancel" - buttons[1].action = "jump" if arg else "ui_accept" for h in game_hide: h.visible = !arg @@ -60,11 +51,6 @@ func set_game(arg := false): for f in buttons: f.passby_press = arg -func set_actions(_up, _down, _left, _right): - for i in 4: - btns[i].action = [_right, _down, _left, _up][i] - btns[i].passby_press = !("ui_" in _up) - func margin(x := 20, y := 20): control.margin_left = x control.margin_right = -x diff --git a/src/autoload/touch_screen.tscn b/src/autoload/touch_screen.tscn index f4e405e..7a1c1b5 100644 --- a/src/autoload/touch_screen.tscn +++ b/src/autoload/touch_screen.tscn @@ -82,6 +82,7 @@ margin_bottom = 150.0 [node name="0" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 13 ) shape_centered = false +passby_press = true action = "ui_right" script = ExtResource( 3 ) radius = 500.0 @@ -90,6 +91,7 @@ poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 +secondary_action = "right" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/0"] modulate = Color( 1, 1, 1, 0.5 ) @@ -102,6 +104,7 @@ idle_color = Color( 1, 1, 1, 0.501961 ) [node name="1" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 14 ) shape_centered = false +passby_press = true action = "ui_down" script = ExtResource( 3 ) angle = 90.0 @@ -111,6 +114,7 @@ poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 +secondary_action = "down" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/1"] modulate = Color( 1, 1, 1, 0.5 ) @@ -123,6 +127,7 @@ idle_color = Color( 1, 1, 1, 0.501961 ) [node name="2" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 15 ) shape_centered = false +passby_press = true action = "ui_left" script = ExtResource( 3 ) angle = 180.0 @@ -132,6 +137,7 @@ poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 +secondary_action = "left" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/2"] modulate = Color( 1, 1, 1, 0.5 ) @@ -144,6 +150,7 @@ idle_color = Color( 1, 1, 1, 0.501961 ) [node name="3" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"] shape = SubResource( 16 ) shape_centered = false +passby_press = true action = "ui_up" script = ExtResource( 3 ) angle = 270.0 @@ -153,6 +160,7 @@ poly_path = NodePath("Polygon2D") poly_radius = 140.0 poly_points = 7 poly_deadzone = 10.0 +secondary_action = "up" [node name="Polygon2D" type="Polygon2D" parent="Control/HBoxLeft/DPad/Buttons/3"] modulate = Color( 1, 1, 1, 0.5 ) @@ -187,6 +195,7 @@ physics_interpolation_mode = 1 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 3 ) shape_centered = false +passby_press = true action = "ui_cancel" visibility_mode = 1 script = ExtResource( 4 ) @@ -195,6 +204,7 @@ __meta__ = { } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) +secondary_action = "grab" [node name="Poly" type="Polygon2D" parent="Control/HBoxRight/C/Control"] modulate = Color( 1, 1, 1, 0.156863 ) @@ -238,6 +248,7 @@ margin_bottom = 75.0 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 4 ) shape_centered = false +passby_press = true action = "ui_accept" visibility_mode = 1 script = ExtResource( 4 ) @@ -246,6 +257,7 @@ __meta__ = { } color_path = NodePath("../Poly") idle_color = Color( 1, 1, 1, 0.156863 ) +secondary_action = "jump" [node name="Poly" type="Polygon2D" parent="Control/HBoxRight/X/Control"] modulate = Color( 1, 1, 1, 0.156863 ) @@ -295,6 +307,7 @@ physics_interpolation_mode = 1 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 3 ) shape_centered = false +passby_press = true action = "zoom" visibility_mode = 1 script = ExtResource( 4 ) @@ -345,6 +358,7 @@ margin_bottom = 75.0 modulate = Color( 1, 1, 1, 0.156863 ) shape = SubResource( 5 ) shape_centered = false +passby_press = true action = "ui_pause" visibility_mode = 1 script = ExtResource( 4 ) diff --git a/src/map/worlds/1/6.tscn b/src/map/worlds/1/6.tscn index d7befc7..a7dcb3c 100644 --- a/src/map/worlds/1/6.tscn +++ b/src/map/worlds/1/6.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=16 format=2] [ext_resource path="res://src/detail/Rocks.tscn" type="PackedScene" id=1] [ext_resource path="res://src/actor/door/DoorLittle.tscn" type="PackedScene" id=2] @@ -14,6 +14,7 @@ [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=12] [ext_resource path="res://src/detail/Bench.tscn" type="PackedScene" id=13] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=14] +[ext_resource path="res://src/detail/SignZoom.tscn" type="PackedScene" id=15] [node name="Node2D" type="Node2D"] @@ -139,3 +140,7 @@ rotation = -3.14159 [node name="Lamppost" parent="Details" instance=ExtResource( 14 )] position = Vector2( 1000, 400 ) rotation = 1.57079 + +[node name="SignZoom" parent="Details" instance=ExtResource( 15 )] +position = Vector2( 110, 590 ) +rotation = -2.26893 diff --git a/src/map/worlds/2/0_hub.tscn b/src/map/worlds/2/0_hub.tscn index 623673c..b62893c 100644 --- a/src/map/worlds/2/0_hub.tscn +++ b/src/map/worlds/2/0_hub.tscn @@ -24,7 +24,6 @@ __meta__ = { [node name="SolidTileMap" parent="." instance=ExtResource( 2 )] tile_data = PoolIntArray( 786413, -1610612736, 0, 786414, -1610612736, 0, 786415, -1610612736, 0, 786416, -1610612736, 0, 786417, -1610612736, 0, 851949, -1610612736, 0, 851950, -1610612736, 0, 851951, -1610612736, 0, 851952, -1610612736, 0, 851953, -1610612736, 0, 917485, -1610612736, 0, 917486, -1610612736, 0, 917487, -1610612736, 0, 917488, -1610612736, 0, 917489, 0, 0, 917490, 0, 0, 917491, 0, 0, 917492, 0, 0, 917493, 0, 0, 917494, 0, 0, 917495, 0, 0, 917496, 0, 0, 917497, 0, 0, 983021, -1610612736, 0, 983022, -1610612736, 0, 983023, -1610612736, 0, 983024, -1610612736, 0, 983025, 0, 0, 983026, 0, 0, 983027, 0, 0, 983028, 0, 0, 983029, 0, 0, 983030, 0, 0, 983031, 0, 0, 983032, 0, 0, 983033, 0, 0, 1048557, -1610612736, 0, 1048558, -1610612736, 0, 1048559, -1610612736, 0, 1048560, -1610612736, 0, 1048561, 0, 0, 1048562, 0, 0, 1048563, 0, 0, 1048564, 0, 0, 1048565, 0, 0, 1048566, 0, 0, 1048567, 0, 0, 1048568, 0, 0, 1048569, 0, 0, 1114093, -1610612736, 0, 1114094, -1610612736, 0, 1114095, -1610612736, 0, 1114096, -1610612736, 0, 1114097, -1610612736, 0, 1114098, -1610612736, 0, 1114099, -1610612736, 0, 1114100, -1610612736, 0, 1114101, -1610612736, 0, 1114102, 0, 0, 1114103, 0, 0, 1114104, 0, 0, 1114105, 0, 0, 1179629, -1610612736, 0, 1179630, -1610612736, 0, 1179631, -1610612736, 0, 1179632, -1610612736, 0, 1179633, -1610612736, 0, 1179634, -1610612736, 0, 1179635, -1610612736, 0, 1179636, -1610612736, 0, 1179637, -1610612736, 0, 1179638, 0, 0, 1179639, 0, 0, 1179640, 0, 0, 1179641, 0, 0, 1245165, -1610612736, 0, 1245166, -1610612736, 0, 1245167, -1610612736, 0, 1245174, -1610612736, 0, 1245175, 0, 0, 1245176, 0, 0, 1245177, 0, 0, 1310701, -1610612736, 0, 1310702, -1610612736, 0, 1310711, -1610612736, 0, 1310712, 0, 0, 1310713, 0, 0, 1310714, 0, 0, 1310715, 0, 0, 1310716, 0, 0, 1376237, -1610612736, 0, 1376238, -1610612736, 0, 1376247, -1610612736, 0, 1376248, 0, 0, 1376249, 0, 0, 1376250, 0, 0, 1376251, 0, 0, 1376252, 0, 0, 1441783, -1610612736, 0, 1441784, -1610612736, 0, 1441785, 0, 0, 1441786, 0, 0, 1441787, 0, 0, 1441788, 0, 0, 1507319, -1610612736, 0, 1507320, -1610612736, 0, 1507321, -1610612736, 0, 1507322, -1610612736, 0, 1507323, -1610612736, 0, 1507324, -1610612736, 0, 1572855, -1610612736, 0, 1572856, -1610612736, 0, 1572857, -1610612736, 0, 1572858, -1610612736, 0, 1572859, -1610612736, 0, 1572860, -1610612736, 0, 1638381, 0, 0, 1638382, 0, 0, 1638383, 0, 0, 1638384, 0, 0, 1638385, 0, 0, 1638386, 0, 0, 1703917, 0, 0, 1703918, 0, 0, 1703919, 0, 0, 1703920, 0, 0, 1703921, 0, 0, 1703922, 0, 0, 1703923, 0, 0, 1769451, 0, 0, 1769452, 0, 0, 1769453, 0, 0, 1769454, 0, 0, 1769455, 0, 0, 1769456, 0, 0, 1769457, 0, 0, 1769458, 0, 0, 1769459, 0, 0, 1834987, 0, 0, 1834988, 0, 0, 1834989, 0, 0, 1834990, 0, 0, 1834991, 0, 0, 1834992, 0, 0, 1834993, 0, 0, 1834994, 0, 0, 1834995, 0, 0, 1834998, 0, 0, 1834999, 0, 0, 1835000, 0, 0, 1835001, 0, 0, 1835002, 0, 0, 1835003, 0, 0, 1900534, 0, 0, 1900535, 0, 0, 1900536, 0, 0, 1900537, 0, 0, 1900538, 0, 0, 1900539, 0, 0 ) detail = 1 -bg_palette = 1 [node name="SpikeMap" parent="." instance=ExtResource( 12 )] tile_data = PoolIntArray( 1310717, -1610612736, 0 ) @@ -101,7 +100,7 @@ dye = { } hairstyle_front = 3 is_npc = true -lines = [ "Hey cutie! ;P", "Have you tried turning it off and on again?", "Breathe in, breathe out", "It's so cozy between these trees", "I'ts nice to catch a break and relax", "I feel calm.", "I found a big worm here yesterday!", "Let the trees breathe into you", "Nature takes care of you <3" ] +lines = [ "Hey cutie! ;P", "Have you tried turning it off and on again?", "Breathe in, breathe out", "It's so cozy between these trees", "It's nice to catch a break and relax", "I feel calm.", "I found a big worm here yesterday!", "Let the trees breathe into you", "Nature takes care of you <3" ] greeting = 0 [node name="NPC3" parent="Actors" instance=ExtResource( 5 )] diff --git a/src/menu/MenuTitle.tscn b/src/menu/MenuTitle.tscn index b490f85..4c40b3a 100644 --- a/src/menu/MenuTitle.tscn +++ b/src/menu/MenuTitle.tscn @@ -12,7 +12,7 @@ [ext_resource path="res://src/detail/FlowerPetals.tscn" type="PackedScene" id=10] [ext_resource path="res://src/detail/Candle.tscn" type="PackedScene" id=11] [ext_resource path="res://src/detail/Lamppost.tscn" type="PackedScene" id=12] -[ext_resource path="res://media/image/UI/hhoney_logo.svg" type="Texture" id=13] +[ext_resource path="res://media/image/UI/harmony-monroe-white.png" type="Texture" id=13] [ext_resource path="res://src/menu/MenuFile.gd" type="Script" id=14] [ext_resource path="res://src/menu/MenuTitle.gd" type="Script" id=15] [ext_resource path="res://src/menu/MenuFileDelete.gd" type="Script" id=16] @@ -108,7 +108,7 @@ use_filter = true extra_spacing_bottom = -20 font_data = ExtResource( 1 ) -[sub_resource type="DynamicFont" id=5] +[sub_resource type="DynamicFont" id=26] size = 40 outline_color = Color( 0, 0, 0, 1 ) use_mipmaps = true @@ -613,7 +613,7 @@ margin_bottom = -15.0 size_flags_horizontal = 4 size_flags_vertical = 5 custom_fonts/font = ExtResource( 21 ) -text = "Patch 2024-12-6" +text = "2025.08.18" align = 1 valign = 2 @@ -627,9 +627,9 @@ custom_constants/separation = 0 alignment = 1 [node name="Prefix" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 22.0 +margin_top = 14.0 margin_right = 512.0 -margin_bottom = 53.0 +margin_bottom = 45.0 custom_fonts/font = SubResource( 6 ) text = " a game by" valign = 1 @@ -653,9 +653,9 @@ __meta__ = { } [node name="Control" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 53.0 +margin_top = 45.0 margin_right = 512.0 -margin_bottom = 203.0 +margin_bottom = 195.0 rect_min_size = Vector2( 0, 150 ) [node name="TextureRect" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List/Control"] @@ -667,19 +667,19 @@ expand = true stretch_mode = 6 [node name="Suffix" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 203.0 +margin_top = 195.0 margin_right = 512.0 -margin_bottom = 234.0 +margin_bottom = 226.0 custom_fonts/font = SubResource( 6 ) -text = "hhoney.net " +text = "harmonymonroe.com " align = 2 valign = 1 [node name="Spacer" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 234.0 +margin_top = 226.0 margin_right = 512.0 margin_bottom = 244.0 -rect_min_size = Vector2( 0, 10 ) +rect_min_size = Vector2( 0, 18 ) [node name="Prefix2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 244.0 @@ -728,13 +728,13 @@ valign = 1 [node name="Spacer2" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] margin_top = 456.0 margin_right = 512.0 -margin_bottom = 466.0 -rect_min_size = Vector2( 0, 10 ) +margin_bottom = 474.0 +rect_min_size = Vector2( 0, 18 ) [node name="HBoxContainer" type="HBoxContainer" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 466.0 +margin_top = 474.0 margin_right = 512.0 -margin_bottom = 516.0 +margin_bottom = 524.0 custom_constants/separation = 10 alignment = 1 @@ -771,31 +771,30 @@ texture = ExtResource( 27 ) expand = true [node name="Spacer3" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 516.0 +margin_top = 524.0 margin_right = 512.0 -margin_bottom = 526.0 +margin_bottom = 534.0 rect_min_size = Vector2( 0, 10 ) [node name="HFlowContainer" type="HFlowContainer" parent="Canvas/CenterContainer/Control/Credits/List"] -margin_top = 526.0 +margin_top = 534.0 margin_right = 512.0 -margin_bottom = 662.0 +margin_bottom = 670.0 [node name="Label4" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 68.0 -margin_right = 444.0 +margin_left = 18.0 +margin_right = 284.0 margin_bottom = 31.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) -text = "Harmony Honey Monroe" +text = "Harmony Monroe" align = 1 valign = 1 [node name="Label8" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 37.0 -margin_top = 35.0 -margin_right = 205.0 -margin_bottom = 66.0 +margin_left = 325.0 +margin_right = 493.0 +margin_bottom = 31.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Guy Unger" @@ -803,9 +802,9 @@ align = 1 valign = 1 [node name="Label6" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 284.0 +margin_left = 20.0 margin_top = 35.0 -margin_right = 474.0 +margin_right = 210.0 margin_bottom = 66.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) @@ -814,10 +813,10 @@ align = 1 valign = 1 [node name="Label5" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 31.0 -margin_top = 70.0 -margin_right = 267.0 -margin_bottom = 101.0 +margin_left = 255.0 +margin_top = 35.0 +margin_right = 491.0 +margin_bottom = 66.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) text = "Raffaele Picca" @@ -825,9 +824,9 @@ align = 1 valign = 1 [node name="Label7" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 334.0 +margin_left = 32.0 margin_top = 70.0 -margin_right = 480.0 +margin_right = 178.0 margin_bottom = 101.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) @@ -836,13 +835,35 @@ align = 1 valign = 1 [node name="Label9" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] -margin_left = 85.0 +margin_left = 246.0 +margin_top = 70.0 +margin_right = 479.0 +margin_bottom = 101.0 +size_flags_horizontal = 6 +custom_fonts/font = SubResource( 6 ) +text = "Cassidy Blaede" +align = 1 +valign = 1 + +[node name="Label10" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] +margin_left = 22.0 margin_top = 105.0 -margin_right = 426.0 +margin_right = 245.0 margin_bottom = 136.0 size_flags_horizontal = 6 custom_fonts/font = SubResource( 6 ) -text = "Cassidy James Blaede" +text = "Will Thompson" +align = 1 +valign = 1 + +[node name="Label11" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"] +margin_left = 294.0 +margin_top = 105.0 +margin_right = 489.0 +margin_bottom = 136.0 +size_flags_horizontal = 6 +custom_fonts/font = SubResource( 6 ) +text = "Micah Ilbery" align = 1 valign = 1 @@ -876,7 +897,7 @@ script = ExtResource( 3 ) [node name="Title" type="Sprite" parent="Map"] process_priority = 1 material = SubResource( 25 ) -position = Vector2( 1800, 650 ) +position = Vector2( 1800, 640 ) scale = Vector2( 0.9, 0.9 ) texture = ExtResource( 19 ) @@ -896,17 +917,15 @@ __meta__ = { } [node name="Demo" type="Label" parent="Map"] -visible = false margin_left = 1500.0 -margin_top = 700.0 +margin_top = 690.0 margin_right = 2100.0 -margin_bottom = 800.0 -custom_colors/font_color = Color( 0.55, 0.55, 0.55, 1 ) -custom_fonts/font = SubResource( 5 ) -text = "DEMO" +margin_bottom = 790.0 +custom_colors/font_color = Color( 0.25098, 0.25098, 0.25098, 1 ) +custom_fonts/font = SubResource( 26 ) +text = "BEND GRAVITY" align = 1 valign = 1 -script = ExtResource( 22 ) [node name="Details" type="Node2D" parent="Map"] diff --git a/src/menu/Splash.tscn b/src/menu/Splash.tscn index 463fe44..9b577a6 100644 --- a/src/menu/Splash.tscn +++ b/src/menu/Splash.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://media/image/UI/title_splash.png" type="Texture" id=1] +[ext_resource path="res://media/image/UI/harmony-monroe-square-white.png" type="Texture" id=1] [ext_resource path="res://src/menu/Splash.gd" type="Script" id=2] [ext_resource path="res://media/audio/sfx/bell1.wav" type="AudioStream" id=3] @@ -27,6 +27,7 @@ anchor_right = 1.0 anchor_bottom = 1.0 texture = ExtResource( 1 ) expand = true +stretch_mode = 6 [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource( 3 ) diff --git a/src/menu/button_modulate.gd b/src/menu/button_modulate.gd index 44c7161..40726ca 100644 --- a/src/menu/button_modulate.gd +++ b/src/menu/button_modulate.gd @@ -8,11 +8,12 @@ onready var color_node : CanvasItem = get_node_or_null(color_path) export var press_color := Color(1,0,1, 1.0) export var idle_color := Color(1,1,1, 0.5) +export var secondary_action := "" func _ready(): if is_instance_valid(button): - button.connect("pressed", self, "interact") - button.connect("released", self, "interact") + button.connect("pressed", self, "press") + button.connect("released", self, "release") if is_instance_valid(color_node): color_node.modulate = idle_color @@ -20,3 +21,13 @@ func _ready(): func interact(): if is_instance_valid(button) and is_instance_valid(color_node): color_node.modulate = press_color if button.is_pressed() else idle_color + +func press(): + interact() + if secondary_action != "": + Input.action_press(secondary_action) + +func release(): + interact() + if secondary_action != "": + Input.action_release(secondary_action) diff --git a/src/menu/options/MenuOptions.gd b/src/menu/options/MenuOptions.gd index e35bf9b..e0492fd 100644 --- a/src/menu/options/MenuOptions.gd +++ b/src/menu/options/MenuOptions.gd @@ -12,8 +12,6 @@ func fill_items(): i.visible = Shared.light_enabled > 0 if i.is_in_group("shadow") and i.visible: i.visible = Shared.shadow_enabled > 0 - if i.is_in_group("touch"): - i.visible = TouchScreen.visible .fill_items() diff --git a/src/menu/options/MenuOptions.tscn b/src/menu/options/MenuOptions.tscn index 241362c..a60f1fd 100644 --- a/src/menu/options/MenuOptions.tscn +++ b/src/menu/options/MenuOptions.tscn @@ -275,11 +275,11 @@ anchor_bottom = 1.0 margin_left = 25.0 size_flags_vertical = 6 custom_fonts/font = ExtResource( 2 ) -text = "< OFF >" +text = "< TOGGLE >" align = 2 valign = 1 -[node name="X" type="Control" parent="Control/Menu/List" groups=["touch"]] +[node name="X" type="Control" parent="Control/Menu/List"] margin_top = 510.0 margin_right = 640.0 margin_bottom = 580.0 @@ -312,7 +312,7 @@ text = "< 2 >" align = 2 valign = 1 -[node name="Y" type="Control" parent="Control/Menu/List" groups=["touch"]] +[node name="Y" type="Control" parent="Control/Menu/List"] margin_top = 580.0 margin_right = 640.0 margin_bottom = 650.0 diff --git a/src/menu/round_button.gd b/src/menu/round_button.gd index 0aa7cbf..d379992 100644 --- a/src/menu/round_button.gd +++ b/src/menu/round_button.gd @@ -15,6 +15,8 @@ export var poly_points := 5 setget set_poly_points export var poly_deadzone := 3.0 setget set_poly_deadzone export var poly_dead_points := 5 setget set_poly_dead_points +export var secondary_action := "" + func set_radius(arg := radius): radius = arg act() @@ -58,6 +60,16 @@ func set_poly_dead_points(arg := poly_dead_points): func _ready(): act() poly_act() + connect("pressed", self, "press") + connect("released", self, "release") + +func press(): + if secondary_action != "": + Input.action_press(secondary_action) + +func release(): + if secondary_action != "": + Input.action_release(secondary_action) func act(): shape = ConvexPolygonShape2D.new()