Compare commits

..

4 commits

Author SHA1 Message Date
Harmony Honey Monroe
c8113ab670 bring up touch controls after touching screen
hide from view when pressing keyboard or gamepad
is_touch: 0 = TOGGLE, 1 = ALWAYS
TOGGLE is default behavior
ALWAYS will keep Touch Controls on screen
2024-12-07 11:53:15 -05:00
Harmony Honey Monroe
d38503f49f new itch name 2024-12-06 16:43:05 -05:00
Harmony Honey Monroe
557a4284e6 Patch 2024-12-6 2024-12-06 16:21:50 -05:00
Harmony Honey Monroe
bc03a013b8 credits + new title_splash & is_touch save and load!
start game with touch controls on or off from last session
2024-12-06 16:16:01 -05:00
49 changed files with 132 additions and 3995 deletions

View file

@ -1,13 +0,0 @@
# EditorConfig <http://EditorConfig.org>
root = true
[*]
charset = utf-8
[*.{gd,dialogue}]
indent_style = tab
indent_size = 4
[*.{yaml,yml,xml}]
indent_style = space
indent_size = 2

18
.github/FUNDING.yml vendored
View file

@ -1,18 +0,0 @@
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

View file

@ -1,24 +0,0 @@
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 }}"

View file

@ -1,57 +0,0 @@
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 }}'

1
.gitignore vendored
View file

@ -2,7 +2,6 @@
*.translation
# custom
.flatpak-builder/
.import/
[Aa]ndroid/
[Ee]xport/*/

25
LICENSE
View file

@ -1,7 +1,24 @@
Copyright (c) 2025 Harmony Honey Monroe
This is free and unencumbered software released into the public domain.
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:
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.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
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 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.
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 <http://unlicense.org/>

View file

@ -1,6 +1,6 @@
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
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
pause

View file

@ -214,9 +214,9 @@ architectures/armeabi-v7a=true
architectures/arm64-v8a=true
architectures/x86=false
architectures/x86_64=false
keystore/debug="C:/Dev/keys/harmony.keystore"
keystore/debug_user="harmony"
keystore/debug_password="harmony"
keystore/debug=""
keystore/debug_user=""
keystore/debug_password=""
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="res://media/image/icon/android-icon192.png"
launcher_icons/main_192x192=""
launcher_icons/adaptive_foreground_432x432=""
launcher_icons/adaptive_background_432x432=""
graphics/opengl_debug=false

View file

View file

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="19.2" width="19.2" x="-1.6" y="-1.6"/>
</g>
</mask>
<clipPath id="c">
<rect height="152" width="192"/>
</clipPath>
<mask id="d">
<g filter="url(#a)">
<rect fill-opacity="0.1" height="19.2" width="19.2" x="-1.6" y="-1.6"/>
</g>
</mask>
<clipPath id="e">
<rect height="152" width="192"/>
</clipPath>
<g mask="url(#b)">
<g clip-path="url(#c)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m 24 44 c -4.433594 0 -8 3.566406 -8 8 v 17.5 h 44.875 c 10.316406 0 18.625 -8.308594 18.625 -18.625 c 0 -2.433594 -0.476562 -4.75 -1.316406 -6.875 z m 0 0" fill="#ffffff"/>
</g>
</g>
<g mask="url(#d)">
<g clip-path="url(#e)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m 23 54 l -7 27.125 v 8.875 h 112 v -8.875 l -7 -27.125 l -8 31 h -19 l -8 -21 l -8 21 h -5 l -8 -31 l -8 31 h -5 l -8 -21 l -8 21 h -5 z m 0 0" fill="#241f31"/>
</g>
</g>
<path d="m 4 2 c -1.109375 0 -2 0.890625 -2 2 v 8 c 0 1.109375 0.890625 2 2 2 h 8 c 1.109375 0 2 -0.890625 2 -2 v -8 c 0 -1.109375 -0.890625 -2 -2 -2 z m 0 1 h 8 c 0.554688 0 1 0.445312 1 1 v 7 c 0 0.554688 -0.445312 1 -1 1 h -3 c 0 -0.019531 0 -0.039062 0 -0.0625 v -1.402344 l -1 -1 l -1 1 v 1.402344 c 0 0.023438 0 0.042969 0.003906 0.0625 h -3.003906 c -0.554688 0 -1 -0.445312 -1 -1 v -7 c 0 -0.554688 0.445312 -1 1 -1 z m 1.878906 1 c -0.253906 0 -0.511718 0.097656 -0.707031 0.292969 c -0.390625 0.390625 -0.390625 1.023437 0 1.414062 l 1.414063 1.417969 l -1.410157 1.410156 c -0.394531 0.394532 -0.394531 1.023438 -0.003906 1.414063 c 0.390625 0.394531 1.023437 0.390625 1.414063 0 l 1.414062 -1.410157 l 1.414062 1.410157 c 0.394532 0.394531 1.023438 0.390625 1.414063 0 s 0.390625 -1.019531 0 -1.414063 l -1.414063 -1.414062 l 1.410157 -1.414063 c 0.394531 -0.390625 0.394531 -1.023437 0.003906 -1.414062 s -1.023437 -0.390625 -1.414063 0.003906 l -1.414062 1.410156 l -1.414062 -1.414062 c -0.195313 -0.195313 -0.453126 -0.292969 -0.707032 -0.292969 z m 0 0"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 185 KiB

View file

@ -1,9 +0,0 @@
[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;

View file

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<name>ROTA</name>
<summary>Gravity bends beneath your feet</summary>
<branding>
<color type="primary" scheme_preference="light">#ffc3d6</color>
<color type="primary" scheme_preference="dark">#850087</color>
</branding>
<developer_name translatable="no">HHoney Software</developer_name>
<developer id="net.hhoney">
<name translatable="no">HHoney Software</name>
</developer>
<description>
<p>Move blocks and twist gravity to solve puzzles. Collect all 50 gems and explore 8 vibrant worlds.</p>
<ul>
<li>Rotate gravity as you walk over the edge!</li>
<li>Push, pull and rotate gravity-blocks to traverse the stage and solve puzzles.</li>
<li>Collect all 50 gems to unlock doors and explore 8 vibrant worlds!</li>
<li>Listen to an original ambient soundtrack that will keep you relaxed while solving challenging puzzles. (:</li>
<li>Watch out for spikes! 0:</li>
</ul>
</description>
<id>net.hhoney.rota</id>
<launchable type="desktop-id">net.hhoney.rota.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT</project_license>
<content_rating type="oars-1.1"></content_rating>
<url type="homepage">https://hhoney.net</url>
<url type="bugtracker">https://github.com/HarmonyHoney/ROTA/issues</url>
<url type="donation">https://ko-fi.com/hhoney</url>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/1.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/2.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/3.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/4.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/5.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/6.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/7.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/8.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/9.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/HarmonyHoney/ROTA/6c7dafea0993700258f77a2412eef7fca5fa559c/media/image/assets/screens/10.png</image>
</screenshot>
</screenshots>
<releases type="external" url="https://github.com/HarmonyHoney/ROTA/raw/refs/heads/master4/linux/net.hhoney.rota.releases.xml" />
<supports>
<control>touch</control>
</supports>
<recommends>
<control>keyboard</control>
<control>gamepad</control>
</recommends>
</component>

View file

@ -1,179 +0,0 @@
<releases>
<release version="2025.08.18" date="2025-08-18">
<description>
<p>Soundtrack Update</p>
<ul>
<li>Two new songs have been added to ROTA</li>
<li>Touch-screen bugfixes</li>
<li>Player animation fixes</li>
<li>Added a Sign to puzzle 1-5 showing the Zoom instructions</li>
</ul>
</description>
</release>
<release version="2025.04.29" date="2025-04-29">
<description>
<p>Updated logos, credits</p>
<p>Fixed typo</p>
</description>
</release>
<release version="2025.02.23" date="2025-02-23">
<description>
<p>Refreshed app icon and brand colors</p>
</description>
</release>
<release version="2024.12.10" date="2024-12-10">
<description>
<p>Touch screen revisions</p>
</description>
</release>
<release version="2024.12.6" date="2024-12-06T21:44:45Z">
<description>
<p>New Logos &amp; Touch Screen Saving</p>
<ul>
<li>add new HHoney Software Logos</li>
<li>"Touch Screen" option will now save and load between game sessions</li>
</ul>
<p>(:</p>
</description>
</release>
<release version="1.9" date="2024-09-09T23:08:11Z">
<description>
<p>Patch 9 - Android Port &amp; Touch Controls !</p>
<ul>
<li>ROTA on Android</li>
<li>Touch Controls for any device</li>
<li>Adjust Touch Control Margins</li>
</ul>
</description>
</release>
<release version="1.8" date="2024-09-09T23:08:11Z">
<description>
<p>Patch 8 - New Logo &amp; Engine Upgrade</p>
<ul>
<li>Game Engine update from Godot 3.5.2 to Godot 3.6</li>
<li>New Logo !</li>
</ul>
</description>
</release>
<release version="1.7" date="2023-05-27T05:42:05Z">
<description>
<p>Patch 7 - Arcade Action &amp; Ultrawide Support</p>
<ul>
<li>"Wrap It Up" Arcade Cabinet located in the Grasslands (:</li>
<li>Ultrawide Display Support! ROTA now expands to infinite width...</li>
<li>Weather is silent when Disabled</li>
<li>Weather Volume Option</li>
</ul>
<p>New Achievements:</p>
<ul>
<li>Shiny - Collect your first Gem</li>
<li>Fast Fingers - Collect your first Clock</li>
<li>Clock Collector - Collect 50 Clocks (=</li>
<li>Wrap It Up - Clear the First Loop</li>
</ul>
</description>
</release>
<release version="1.6" date="2023-04-21T17:57:17Z">
<description>
<p>Patch 6 - High Refresh Rate Support! (=</p>
<p>This update brings two new Options in the Menu:</p>
<ul>
<li>Interpolation</li>
<li>Frame Limit</li>
</ul>
<p>Interpolation will smooth out player movement on higher refresh rate displays! Frame limit can limit the maximum Frames Per Second of the game (:</p>
<p>Thanks to the pull request by neropatti! &lt;3</p>
</description>
<issues>
<issue url="https://github.com/HarmonyHoney/ROTA/pull/1">Add smoothing/interpolation to player visuals</issue>
</issues>
</release>
<release version="1.5" date="2023-04-17T22:42:29Z">
<description>
<p>Breath of Life Update - Patch 5</p>
<p>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.</p>
<p>Changes:</p>
<ul>
<li>New Characters moved in, populating ROTA!</li>
<li>Chat with folks and get to know them (;</li>
<li>Connect stray worlds and bring people together!</li>
</ul>
<ul>
<li>Dynamic Weather System! Clouds fill the sky with falling Rain &amp; Snow...</li>
<li>Day &amp; Night! Watch the Sun rise and Moon fall.</li>
<li>Dynamic Lighting and Shadows! Illuminated by the Burning Star in Orbit.</li>
<li>Stars come out at night! Twinkling in the distance...</li>
<li>Background depth with Parallax layers!</li>
</ul>
<ul>
<li>Doors hold a Vortex, sucking in travelers and spitting them out the other end!</li>
<li>Door closing Sound Effect.</li>
<li>World Door Unlock Cutscene! Combine the power of Gems and fill the socket...</li>
</ul>
<ul>
<li>All Menus overhauled! Simple &amp; Clean.</li>
<li>Pause Menu minified. The world keeps moving...</li>
<li>UI animation improved when collecting a Gem or Clock!</li>
<li>Hair physics rework! Smoother motions when swaying in the breeze (;</li>
<li>Radial Blur effect with help from Guy Unger! &lt;3</li>
</ul>
<ul>
<li>Player D-Pad &amp; Joystick input issues fixed! Movement feels more responsive.</li>
<li>Camera speed V-Sync issue fixed!</li>
<li>Performance improvements! Ignoring many objects off-screen.</li>
</ul>
</description>
</release>
<release version="1.4" date="2023-01-07T09:00:46Z">
<description>
<p>Patch 4 - Character Creator and Speedruns!</p>
<p>Changes:</p>
<ul>
<li>Character Creator</li>
<li>Speedrun Goals!</li>
<li>Ending Scene</li>
<li>Visual Overhaul, More Animations and Polygons! (=</li>
<li>Input Responsiveness and Bugfixes</li>
<li>Performance Optimations! (;</li>
</ul>
</description>
</release>
<release version="1.3" date="2022-06-29T00:29:02Z">
<description>
<p>Patch 3 - Demo! (:</p>
<p>Hello everyone! ^.^ ROTA now has a free Demo!</p>
<p>Explore and solve the first 8 puzzles before you buy the game!</p>
<p>Cross-save is enabled, so any progress you make in the demo will carry over into the full game! (:</p>
<p>Have fun and keep on rotating! &lt;3</p>
<p>- Harmony Honey</p>
</description>
</release>
<release version="1.2" date="2022-05-29T09:43:38Z">
<description>
<p>Patch 2</p>
<ul>
<li>Fixed Gem placement on puzzle 3 in cobblestone.</li>
<li>Fixed a bug with the player riding boxes.</li>
</ul>
</description>
</release>
<release version="1.1" date="2022-05-10T20:01:27Z">
<description>
<p>Patch 1</p>
<p>Hello everyone, Patch 1 is now live!</p>
<p>This build comes with two minor bug fixes:</p>
<ul>
<li>Menu scrolling re-worked</li>
<li>Prevent the player from riding on boxes moving upward</li>
</ul>
<p>Thanks for the feedback! Please let me know if you see anything funny.</p>
<p>Contact me on discord! (。◕‿◕。) Harmony &lt;3#8571</p>
</description>
</release>
<release version="1.0" date="2022-05-07T22:18:44Z">
<description>
<p>Launch Day!!</p>
<p>ROTA is out now!! Thank you all for the support and positivity! Every order on itch comes with a steam key on launch! (:</p>
</description>
</release>
</releases>

View file

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="8.0000115" x2="120.0000115" y1="115.999977" y2="115.999977">
<stop offset="0" stop-color="#ac7800"/>
<stop offset="0.0384615" stop-color="#dc9500"/>
<stop offset="0.0768555" stop-color="#ac7800"/>
<stop offset="0.923077" stop-color="#ac7800"/>
<stop offset="0.961538" stop-color="#dc9500"/>
<stop offset="1" stop-color="#ac7800"/>
</linearGradient>
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="64" x2="64" y1="13.999939" y2="93.11969">
<stop offset="0" stop-color="#72f2fe"/>
<stop offset="1" stop-color="#b084fd"/>
</linearGradient>
<mask id="d">
<g filter="url(#a)">
<rect fill-opacity="0.4" height="153.6" width="153.6" x="-12.8" y="-12.8"/>
</g>
</mask>
<clipPath id="e">
<rect height="152" width="192"/>
</clipPath>
<mask id="f">
<g filter="url(#a)">
<rect fill-opacity="0.1" height="153.6" width="153.6" x="-12.8" y="-12.8"/>
</g>
</mask>
<clipPath id="g">
<rect height="152" width="192"/>
</clipPath>
<path d="m 16 40 h 96 c 4.417969 0 8 3.582031 8 8 v 60 c 0 4.417969 -3.582031 8 -8 8 h -96 c -4.417969 0 -8 -3.582031 -8 -8 v -60 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#b)"/>
<path d="m 16 28 c -4.433594 0 -8 3.566406 -8 8 v 34 h 32 c 15.511719 0 28 -12.488281 28 -28 c 0 -5.109375 -1.363281 -9.886719 -3.734375 -14 z m 0 0" fill="#8efe56"/>
<path d="m 16 28 h 96 c 4.417969 0 8 3.582031 8 8 v 68 c 0 4.417969 -3.582031 8 -8 8 h -96 c -4.417969 0 -8 -3.582031 -8 -8 v -68 c 0 -4.417969 3.582031 -8 8 -8 z m 0 0" fill="url(#c)"/>
<g mask="url(#d)">
<g clip-path="url(#e)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 24 44 c -4.433594 0 -8 3.566406 -8 8 v 17.5 h 44.875 c 10.316406 0 18.625 -8.308594 18.625 -18.625 c 0 -2.433594 -0.476562 -4.75 -1.316406 -6.875 z m 0 0" fill="#ffffff"/>
</g>
</g>
<path d="m 120 72 v 32.019531 c 0 4.421875 -3.566406 7.984375 -8 7.980469 l -96 -0.09375 c -4.433594 -0.003906 -8 -3.558594 -8 -7.980469 v -31.925781 z m 0 0" fill="#dc9500"/>
<path d="m 68.414062 98 c -0.359374 0 -0.722656 0.140625 -1 0.417969 l -1 1 c -0.550781 0.550781 -0.550781 1.445312 0 2 l 1 1 c 0.554688 0.550781 1.449219 0.550781 2 0 l 1 -1 c 0.554688 -0.554688 0.554688 -1.449219 0 -2 l -1 -1 c -0.277343 -0.277344 -0.636718 -0.417969 -1 -0.417969 z m 38.488282 4 c -1.609375 0 -2.902344 1.339844 -2.902344 3 s 1.292969 3 2.902344 3 h 0.195312 c 1.609375 0 2.902344 -1.339844 2.902344 -3 s -1.292969 -3 -2.902344 -3 z m 0 0" fill="#615c7d"/>
<path d="m 68.414062 97 c -0.359374 0 -0.722656 0.140625 -1 0.417969 l -1 1 c -0.550781 0.550781 -0.550781 1.445312 0 2 l 1 1 c 0.554688 0.550781 1.449219 0.550781 2 0 l 1 -1 c 0.554688 -0.554688 0.554688 -1.449219 0 -2 l -1 -1 c -0.277343 -0.277344 -0.636718 -0.417969 -1 -0.417969 z m 38.488282 4 c -1.609375 0 -2.902344 1.339844 -2.902344 3 s 1.292969 3 2.902344 3 h 0.195312 c 1.609375 0 2.902344 -1.339844 2.902344 -3 s -1.292969 -3 -2.902344 -3 z m 0 0" fill="#dbd8d5"/>
<path d="m 8 71 h 112 v 22 c -16.125 0 -15.945312 -8 -28 -8 s -12.167969 8 -28 8 s -15.945312 -8 -28 -8 s -9.636719 8 -28 8 z m 0 0" fill="#72c300"/>
<path d="m 8 102.925781 v 1 c 0 4.421875 3.566406 7.976563 8 7.980469 l 96 0.09375 c 4.433594 0.003906 8 -3.558594 8 -7.980469 v -1 c 0 4.421875 -3.566406 7.984375 -8 7.980469 l -96 -0.09375 c -4.433594 -0.003906 -8 -3.558594 -8 -7.980469 z m 0 0" fill="#ffad02"/>
<path d="m 95.320312 26 c 3.3125 0 6 2.6875 6 6 v 36.886719 c 0 3.3125 -2.6875 6 -6 6 s -6 -2.6875 -6 -6 v -36.886719 c 0 -3.3125 2.6875 -6 6 -6 z m 0 0" fill="#1bfd00"/>
<g mask="url(#f)">
<g clip-path="url(#g)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 23 54 l -7 27.125 v 8.875 h 112 v -8.875 l -7 -27.125 l -8 31 h -19 l -8 -21 l -8 21 h -5 l -8 -31 l -8 31 h -5 l -8 -21 l -8 21 h -5 z m 0 0" fill="#241f31"/>
</g>
</g>
<path d="m 8 70 l 7 -30 l 7 30 h 7 l 7 -20 l 7 20 h 7 l 7 -30 l 7 30 h 7 l 7 -20 l 7 20 h 21 l 7 -30 l 7 30 v 22 c -16.125 0 -15.945312 -8 -28 -8 s -12.167969 8 -28 8 s -15.945312 -8 -28 -8 s -9.636719 8 -28 8 z m 0 0" fill="#96fe00"/>
<path d="m 112.292969 20.351562 c -3.136719 -3.132812 -8.179688 -3.132812 -11.316407 0 l -5.65625 5.65625 l -5.65625 -5.65625 c -3.132812 -3.132812 -8.179687 -3.132812 -11.3125 0 c -3.136718 3.132813 -3.136718 8.179688 0 11.3125 l 5.65625 5.65625 l -5.65625 5.660157 c -3.136718 3.132812 -3.136718 8.179687 0 11.3125 c 3.132813 3.132812 8.179688 3.132812 11.3125 0 l 5.65625 -5.65625 l 5.65625 5.65625 c 3.136719 3.132812 8.179688 3.132812 11.316407 0 c 3.132812 -3.132813 3.132812 -8.179688 0 -11.3125 l -5.660157 -5.660157 l 5.660157 -5.65625 c 3.132812 -3.132812 3.132812 -8.179687 0 -11.3125 z m 0 0" fill="#8b0000"/>
<path d="m 112.292969 18.351562 c -3.136719 -3.132812 -8.179688 -3.132812 -11.316407 0 l -5.65625 5.65625 l -5.65625 -5.65625 c -3.132812 -3.132812 -8.179687 -3.132812 -11.3125 0 c -3.136718 3.132813 -3.136718 8.179688 0 11.3125 l 5.65625 5.65625 l -5.65625 5.660157 c -3.136718 3.132812 -3.136718 8.179687 0 11.3125 c 3.132813 3.132812 8.179688 3.132812 11.3125 0 l 5.65625 -5.65625 l 5.65625 5.65625 c 3.136719 3.132812 8.179688 3.132812 11.316407 0 c 3.132812 -3.132813 3.132812 -8.179688 0 -11.3125 l -5.660157 -5.660157 l 5.660157 -5.65625 c 3.132812 -3.132812 3.132812 -8.179687 0 -11.3125 z m 0 0" fill="#fe0000"/>
<path d="m 84.007812 16 c -2.046874 0 -4.089843 0.785156 -5.65625 2.351562 c -1.695312 1.695313 -2.464843 3.949219 -2.328124 6.15625 c 0.117187 -1.875 0.886718 -3.71875 2.328124 -5.15625 c 3.132813 -3.136718 8.179688 -3.136718 11.3125 0 l 5.65625 5.65625 l 5.65625 -5.65625 c 3.132813 -3.136718 8.179688 -3.136718 11.316407 0 c 1.4375 1.4375 2.207031 3.28125 2.324219 5.15625 c 0.140624 -2.207031 -0.628907 -4.460937 -2.324219 -6.15625 c -3.136719 -3.136718 -8.183594 -3.136718 -11.316407 0 l -5.65625 5.65625 l -5.65625 -5.65625 c -1.566406 -1.566406 -3.613281 -2.351562 -5.65625 -2.351562 z m -0.5 19.820312 l -5.15625 5.160157 c -1.695312 1.695312 -2.464843 3.945312 -2.328124 6.15625 c 0.117187 -1.875 0.886718 -3.71875 2.328124 -5.15625 l 5.65625 -5.660157 z m 23.628907 0 l -0.5 0.5 l 5.65625 5.660157 c 1.4375 1.4375 2.207031 3.28125 2.324219 5.15625 c 0.140624 -2.210938 -0.628907 -4.460938 -2.324219 -6.15625 z m 0 0" fill="#ff7c7c"/>
<path d="m 42 101 c 0 4.417969 -3.582031 8 -8 8 s -8 -3.582031 -8 -8 s 3.582031 -8 8 -8 s 8 3.582031 8 8 z m 0 0" fill="#615c7d"/>
<path d="m 42 100 c 0 4.417969 -3.582031 8 -8 8 s -8 -3.582031 -8 -8 s 3.582031 -8 8 -8 s 8 3.582031 8 8 z m 0 0" fill="#dbd8d5"/>
</svg>

Before

Width:  |  Height:  |  Size: 7 KiB

View file

@ -1,31 +0,0 @@
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

Binary file not shown.

View file

@ -1,15 +0,0 @@
[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

Binary file not shown.

View file

@ -1,15 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

View file

@ -1,35 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View file

@ -1,35 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View file

@ -1,35 +0,0 @@
[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

View file

@ -152,14 +152,14 @@ _global_script_class_icons={
[application]
config/name="ROTA: Bend Gravity"
config/description="ROTA: Bend Gravity by Harmony Monroe
harmonymonroe.com"
config/name="ROTA"
config/description="ROTA by Harmony Honey
hhoney.net"
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/harmony-monroe-square-white.png"
boot_splash/image="res://media/image/UI/title_splash.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,6 +185,7 @@ 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"

View file

@ -1,11 +1,9 @@
# ![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
# ![icon](media/image/icon/icon48.png) ROTA
Made with [Godot Engine](https://github.com/godotengine/godot) 3.6 / Gravity Bending Puzzle Platformer
Available for Linux, Windows, Mac, Web & Android !
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) (:
Play now on [Steam](https://store.steampowered.com/app/1993830/ROTA/) or [itch.io](https://harmonyhoney.itch.io/rota) (:
![main_capsule](media/image/assets/main_capsule.png)

View file

@ -522,23 +522,6 @@ 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)
@ -546,13 +529,12 @@ 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))
@ -621,6 +603,22 @@ 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

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=37 format=2]
[gd_scene load_steps=35 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,14 +34,11 @@
[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 ), ExtResource( 36 ), ExtResource( 35 ) ]
wait_range = Vector2( 2, 5 )
ost = [ ExtResource( 21 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ) ]
[node name="Music" type="Node" parent="."]

View file

@ -23,10 +23,15 @@ 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 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
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
func show_keys(arg_arrows := true, arg_c := true, arg_x := true, arg_pause := false, arg_passby := false):
right.visible = arg_arrows
@ -35,6 +40,10 @@ 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
@ -51,6 +60,11 @@ 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

View file

@ -82,7 +82,6 @@ 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
@ -91,7 +90,6 @@ 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 )
@ -104,7 +102,6 @@ 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
@ -114,7 +111,6 @@ 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 )
@ -127,7 +123,6 @@ 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
@ -137,7 +132,6 @@ 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 )
@ -150,7 +144,6 @@ 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
@ -160,7 +153,6 @@ 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 )
@ -195,7 +187,6 @@ 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 )
@ -204,7 +195,6 @@ __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 )
@ -248,7 +238,6 @@ 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 )
@ -257,7 +246,6 @@ __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 )
@ -307,7 +295,6 @@ 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 )
@ -358,7 +345,6 @@ 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 )

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=16 format=2]
[gd_scene load_steps=15 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,7 +14,6 @@
[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"]
@ -140,7 +139,3 @@ 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

View file

@ -24,6 +24,7 @@ __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 )
@ -100,7 +101,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", "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" ]
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" ]
greeting = 0
[node name="NPC3" parent="Actors" instance=ExtResource( 5 )]

View file

@ -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/harmony-monroe-white.png" type="Texture" id=13]
[ext_resource path="res://media/image/UI/hhoney_logo.svg" 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=26]
[sub_resource type="DynamicFont" id=5]
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 = "2025.08.18"
text = "Patch 2024-12-6"
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 = 14.0
margin_top = 22.0
margin_right = 512.0
margin_bottom = 45.0
margin_bottom = 53.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 = 45.0
margin_top = 53.0
margin_right = 512.0
margin_bottom = 195.0
margin_bottom = 203.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 = 195.0
margin_top = 203.0
margin_right = 512.0
margin_bottom = 226.0
margin_bottom = 234.0
custom_fonts/font = SubResource( 6 )
text = "harmonymonroe.com "
text = "hhoney.net "
align = 2
valign = 1
[node name="Spacer" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 226.0
margin_top = 234.0
margin_right = 512.0
margin_bottom = 244.0
rect_min_size = Vector2( 0, 18 )
rect_min_size = Vector2( 0, 10 )
[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 = 474.0
rect_min_size = Vector2( 0, 18 )
margin_bottom = 466.0
rect_min_size = Vector2( 0, 10 )
[node name="HBoxContainer" type="HBoxContainer" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 474.0
margin_top = 466.0
margin_right = 512.0
margin_bottom = 524.0
margin_bottom = 516.0
custom_constants/separation = 10
alignment = 1
@ -771,30 +771,31 @@ texture = ExtResource( 27 )
expand = true
[node name="Spacer3" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 524.0
margin_top = 516.0
margin_right = 512.0
margin_bottom = 534.0
margin_bottom = 526.0
rect_min_size = Vector2( 0, 10 )
[node name="HFlowContainer" type="HFlowContainer" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 534.0
margin_top = 526.0
margin_right = 512.0
margin_bottom = 670.0
margin_bottom = 662.0
[node name="Label4" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 18.0
margin_right = 284.0
margin_left = 68.0
margin_right = 444.0
margin_bottom = 31.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "Harmony Monroe"
text = "Harmony Honey Monroe"
align = 1
valign = 1
[node name="Label8" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 325.0
margin_right = 493.0
margin_bottom = 31.0
margin_left = 37.0
margin_top = 35.0
margin_right = 205.0
margin_bottom = 66.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "Guy Unger"
@ -802,9 +803,9 @@ align = 1
valign = 1
[node name="Label6" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 20.0
margin_left = 284.0
margin_top = 35.0
margin_right = 210.0
margin_right = 474.0
margin_bottom = 66.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
@ -813,10 +814,10 @@ align = 1
valign = 1
[node name="Label5" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 255.0
margin_top = 35.0
margin_right = 491.0
margin_bottom = 66.0
margin_left = 31.0
margin_top = 70.0
margin_right = 267.0
margin_bottom = 101.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "Raffaele Picca"
@ -824,9 +825,9 @@ align = 1
valign = 1
[node name="Label7" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 32.0
margin_left = 334.0
margin_top = 70.0
margin_right = 178.0
margin_right = 480.0
margin_bottom = 101.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
@ -835,35 +836,13 @@ align = 1
valign = 1
[node name="Label9" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
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_left = 85.0
margin_top = 105.0
margin_right = 245.0
margin_right = 426.0
margin_bottom = 136.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
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"
text = "Cassidy James Blaede"
align = 1
valign = 1
@ -897,7 +876,7 @@ script = ExtResource( 3 )
[node name="Title" type="Sprite" parent="Map"]
process_priority = 1
material = SubResource( 25 )
position = Vector2( 1800, 640 )
position = Vector2( 1800, 650 )
scale = Vector2( 0.9, 0.9 )
texture = ExtResource( 19 )
@ -917,15 +896,17 @@ __meta__ = {
}
[node name="Demo" type="Label" parent="Map"]
visible = false
margin_left = 1500.0
margin_top = 690.0
margin_top = 700.0
margin_right = 2100.0
margin_bottom = 790.0
custom_colors/font_color = Color( 0.25098, 0.25098, 0.25098, 1 )
custom_fonts/font = SubResource( 26 )
text = "BEND GRAVITY"
margin_bottom = 800.0
custom_colors/font_color = Color( 0.55, 0.55, 0.55, 1 )
custom_fonts/font = SubResource( 5 )
text = "DEMO"
align = 1
valign = 1
script = ExtResource( 22 )
[node name="Details" type="Node2D" parent="Map"]

View file

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://media/image/UI/harmony-monroe-square-white.png" type="Texture" id=1]
[ext_resource path="res://media/image/UI/title_splash.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,7 +27,6 @@ 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 )

View file

@ -8,12 +8,11 @@ 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, "press")
button.connect("released", self, "release")
button.connect("pressed", self, "interact")
button.connect("released", self, "interact")
if is_instance_valid(color_node):
color_node.modulate = idle_color
@ -21,13 +20,3 @@ 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)

View file

@ -12,6 +12,8 @@ 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()

View file

@ -275,11 +275,11 @@ anchor_bottom = 1.0
margin_left = 25.0
size_flags_vertical = 6
custom_fonts/font = ExtResource( 2 )
text = "< TOGGLE >"
text = "< OFF >"
align = 2
valign = 1
[node name="X" type="Control" parent="Control/Menu/List"]
[node name="X" type="Control" parent="Control/Menu/List" groups=["touch"]]
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"]
[node name="Y" type="Control" parent="Control/Menu/List" groups=["touch"]]
margin_top = 580.0
margin_right = 640.0
margin_bottom = 650.0

View file

@ -15,8 +15,6 @@ 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()
@ -60,16 +58,6 @@ 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()