Compare commits

...

51 commits

Author SHA1 Message Date
Cassidy James Blaede
f9b6174af0
linux: Update license in MetaInfo
See: f1c9ba8ec2
2025-08-25 11:11:24 -06:00
Cassidy James Blaede
f1aa77f2bd
linux: Update release notes for 2025.08.18 2025-08-25 11:09:40 -06:00
Harmony Honey Monroe
a52cda5670 update android icon ! 2025-08-22 00:06:53 -04:00
Harmony Honey Monroe
f1bcdd88ed
Update readme.md 2025-08-18 15:39:11 -04:00
Harmony Honey Monroe
397913601c
Merge pull request #38 from HarmonyHoney/2025.07.12.harmony
2025.07.12.harmony
2025-08-18 15:36:57 -04:00
Harmony Honey Monroe
a9dec586c6 rename butler_push username 2025-08-18 15:35:14 -04:00
Harmony Honey Monroe
9d6e6820f1 patch date 2025-08-18 14:57:24 -04:00
Harmony Honey Monroe
11d5191f93 Touch Screen, ALWAYS or TOGGLE
using last input to check, similar to Tiny Crate
2025-08-18 14:51:36 -04:00
Harmony Honey Monroe
3645cbb682 add zoom sign to 1-5, touch screen now using dual input actions. TODO: touch screen always enabled, or TOGGLE, using last input to decide. 2025-08-11 02:06:04 -04:00
Harmony Honey Monroe
f1c9ba8ec2 update to MIT License 2025-08-07 02:19:03 -04:00
Harmony Honey Monroe
6f419cd374
Update readme.md 2025-07-17 02:41:16 -04:00
Harmony Honey Monroe
2af7b9b03c
Update FUNDING.yml 2025-07-17 02:20:28 -04:00
Harmony Honey Monroe
d53f2b928b
Update FUNDING.yml 2025-07-17 02:15:38 -04:00
Harmony Honey Monroe
487b8d04c8 upgrade to 3.6.1 2025-07-12 15:52:16 -04:00
Harmony Honey Monroe
04c2d5fe88 update credits and patch number 2025-07-12 01:42:52 -04:00
Harmony Honey Monroe
a33c1676a3 add 2 more songs and re-order animations
blink and stretch now happen during every other anim
2025-07-12 01:27:19 -04:00
Cassidy James Blaede
5e2ace8d5d
Workflows: improve filenames of CI artifacts (#34)
- Changes the export name to `rota-ci` to make it clear the artifacts are generated in CI
- Appends the release tag to artifacts for releases resulting in e.g. `rota-ci-2025.04.29.pck`

Equivalent of https://github.com/HarmonyHoney/tiny_crate/pull/13 but for ROTA. :)
2025-04-30 15:48:45 -06:00
Cassidy James Blaede
ffdde6e933
MetaInfo: move releases to their own file (#33)
* Linux: Ignore linux directory from Godot imports

* MetaInfo: move releases to their own file

* editorconfig: set sensible defaults

* Linux: install release info in manifest
2025-04-30 15:40:34 -06:00
Harmony Honey Monroe
1b8e867465 project description 2025-04-29 21:42:33 -04:00
Harmony Honey Monroe
8f6332ebf1 include typo fix from Cassidy:
Hub: fix typo in NPC2 dialog

"I'ts nice to catch a break and relax" → "It's nice to catch a break and relax"
2025-04-29 21:12:01 -04:00
Harmony Honey Monroe
288969f734 update logos and branding, credits 2025-04-29 21:10:26 -04:00
Cassidy James Blaede
716cb59afc
Workflows: Switch to upstream Flatpak Builder (#30)
See: https://github.com/flathub-infra/flatpak-github-actions/issues/17
2025-04-22 13:31:14 -06:00
Harmony Honey Monroe
a2fd023985 point butler to rota from rota-open 2025-04-08 00:04:41 -04:00
Cassidy James Blaede
3951547802
Linux: Correct Flatpak CI container 2025-02-23 17:52:04 -07:00
Cassidy James Blaede
b9b2eaaa9c
Linux: add new icons, brand colors, and CI (#29)
* Linux: add new icons to Flatpak manifest

Follow-up to #28

* MetaInfo: Update brand colors, add release notes

* GitHub Actions: Add Flatpak action

Help make sure any Linux changes don't break the Flatpak build.
2025-02-23 17:49:06 -07:00
Harmony Honey Monroe
231c49d3d8
Merge pull request #28 from micahilbery/gnome-icon
add gnome/flathub style icon
2025-02-20 11:29:00 -08:00
Micah Ilbery
3930acecdf add gnome/flathub style icon 2025-02-19 22:26:10 -07:00
Harmony Honey Monroe
998dbd67f8 new itch butler_push script (:
re-add steam_clean
2025-02-17 23:24:47 -05:00
Cassidy James Blaede
309484dcb7
Merge pull request #26 from cassidyjames/linux
linux: Move to linux folder, update manifest
2025-01-15 16:52:26 -07:00
Cassidy James Blaede
590a4136ad linux: Move to linux folder, update manifest
More closely aligns with the other games and their Flathub setups. Also
updates the workflow to not upload a tarball.
2025-01-15 16:49:06 -07:00
Cassidy James Blaede
555a69a33d
Merge pull request #25 from cassidyjames/metainfo
Flatpak: update MetaInfo releases
2025-01-15 16:33:07 -07:00
Cassidy James Blaede
dfd393d685 Flatpak: update MetaInfo releases 2025-01-15 16:29:56 -07:00
Harmony Honey Monroe
ab822f518a
Update readme.md 2025-01-14 02:28:15 -05:00
Harmony Honey Monroe
78c4db9157
Update readme.md 2025-01-14 02:27:47 -05:00
Harmony Honey Monroe
f5500dc7ff
Update readme.md 2025-01-14 02:27:35 -05:00
Harmony Honey Monroe
017d89c567
Update readme.md 2025-01-14 01:50:27 -05:00
Harmony Honey Monroe
b4ea640170 remove steam & itch scripts (-: 2025-01-14 01:47:47 -05:00
Harmony Honey Monroe
946f86d21b
Merge pull request #12 from wjt/patch-1
Flatpak: add supported input devices to metainfo
2024-12-10 16:05:42 -05:00
Harmony Honey Monroe
e139b7911c saving and loading is_touch option!
start game with touch controls on or off from last session
2024-12-06 16:10:51 -05:00
Will Thompson
3f13d9f81f
Flatpak: add supported input devices to metainfo
https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-control

I have always found this spec confusing but I think this change correctly encodes that either keyboard or gamepad is recommended, but if you have neither touchscreen input is supported (though it happens to be off by default).
2024-12-06 08:46:05 +00:00
Harmony Honey Monroe
be542fa244 credits + new title_splash & hhoney_logo.svg (: 2024-12-04 19:47:20 -05:00
Harmony Honey Monroe
143c2efb96
Merge pull request #7 from cassidyjames/flatpak
Flatpak
2024-12-04 14:19:07 -05:00
Harmony Honey Monroe
a1341698a0
Merge pull request #5 from cassidyjames/linux-ci
Add CI to build Linux binaries
2024-12-04 14:18:48 -05:00
Cassidy James Blaede
7b828c70cd Flatpak: Update manifest to point to direct link again 2024-12-04 01:51:30 -07:00
Cassidy James Blaede
717602441f
Workflows: upload both tarball and pck 2024-12-04 01:40:37 -07:00
Cassidy James Blaede
0fbf374f7e Flatpak: Add manifest, launcher, metainfo 2024-12-04 01:17:23 -07:00
Cassidy James Blaede
bf01714b88
Workflows: yaml is the worst 2024-12-04 00:34:23 -07:00
Cassidy James Blaede
83d4668b81
Workflows: Export only the pack, tar it 2024-12-04 00:28:47 -07:00
Cassidy James Blaede
3b4e860f34 Project: Default to include window borders
Borderless is unexpected on Linux, and explicitly discouraged by the
[Flathub Quality Guidelines][1]. This can still be toggled off from the
in-game options if players prefer.

[1]:
https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines/#include-window-shadow-and-rounded-corners
2024-12-03 19:56:20 -07:00
Cassidy James Blaede
42e13acd4f Workflows: Add CI to export Linux build
This adds CI to publish Linux builds. How it works:

- Export ROTA from source using Godot Engine
- Upload that export as a build artifact
- On GitHub releases, attach that build artifact to the release

Eventually this could be expanded to build a Flatpak, a prerequisite to
getting it onto Flathub.

I intended to use the [godot-ci GitHub
Action](https://github.com/marketplace/actions/godot-ci) for CI, but it
doesn't currently support Godot 3.6 (see: abarichello/godot-ci#155). So
for now, I'm using
[docker.io/smks/godot-ci](https://hub.docker.com/r/smks/godot-ci) which
is a container image forked from the former and just updated for 3.6.
2024-12-03 19:52:22 -07:00
Cassidy James Blaede
fa1693b0d5
Create FUNDING.yml
Point people upstream
2024-12-03 15:04:41 -07:00
53 changed files with 4137 additions and 147 deletions

13
.editorconfig Normal file
View file

@ -0,0 +1,13 @@
# 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 Normal file
View file

@ -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

24
.github/workflows/flatpak.yml vendored Normal file
View file

@ -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 }}"

57
.github/workflows/godot.yml vendored Normal file
View file

@ -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 }}'

1
.gitignore vendored
View file

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

25
LICENSE
View file

@ -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 <http://unlicense.org/>
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.

View file

@ -1,6 +1,6 @@
butler push win harmonyhoney/rota:win
butler push linux harmonyhoney/rota:linux
butler push mac harmonyhoney/rota:mac
butler push web harmonyhoney/rota:web
butler push android harmonyhoney/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

View file

@ -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

0
linux/.gdignore Normal file
View file

View file

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

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 185 KiB

View file

@ -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;

View file

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

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

59
linux/net.hhoney.rota.svg Normal file
View file

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

After

Width:  |  Height:  |  Size: 7 KiB

31
linux/net.hhoney.rota.yml Normal file
View file

@ -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

BIN
media/audio/music/ost5.mp3 Normal file

Binary file not shown.

View file

@ -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

BIN
media/audio/music/ost6.mp3 Normal file

Binary file not shown.

View file

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -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

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 3554 1092" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-657,-790)">
<g id="LOGO" transform="matrix(1.50708,0,0,1.50708,-177.367,-347.91)">
<g transform="matrix(1.39202,0,0,1.39202,-702.428,-301.281)">
<path d="M1367.29,1081.12L1362.32,843.937L1410.37,838.974L1406.03,910.872L1481.65,910.872L1481.03,838.353L1516.67,837.112L1516.67,1087.33L1478.55,1077.4L1476.68,964.503L1404.79,954.576L1405.41,1077.4L1367.29,1081.12Z" style="fill:white;fill-rule:nonzero;"/>
<g transform="matrix(1,0,0,1,0,-21.5486)">
<path d="M1589.15,824.837L1582.94,1054.71L1627.89,1056.57L1629.75,982.811L1698.55,982.191L1694.2,1057.81L1743.49,1059.05L1740.5,818.907L1697.21,821.823L1697.93,937.866L1627.42,928.87L1627.89,822.356L1589.15,824.837Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<path d="M1912.37,1012.83L1916.72,802.39L1847.92,813.558L1841.72,1015.94L1912.37,1012.83ZM1959.64,1053.6L1802.35,1061.74L1806.97,779.16L1962.57,762.49L1959.64,1053.6Z" style="fill:white;fill-rule:nonzero;"/>
<g transform="matrix(1,0,0,1,0,-21.5486)">
<path d="M2019.43,1084.07L2015.55,834.689L2160.62,848.649L2170.2,1079.41L2131.93,1079.41L2127.27,879.169L2056.93,879.169L2059.25,1079.41L2019.43,1084.07Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<path d="M2230.7,1053.24L2227.32,842.912L2374.99,843.414L2387.4,883.24L2267.14,876.26L2272.57,925.313L2378.87,924.538L2370.34,961.262L2271.02,963.589L2279.55,1011.09L2379.64,1010.31L2393.61,1048.59L2230.7,1053.24Z" style="fill:white;fill-rule:nonzero;"/>
<g transform="matrix(1,0,0,1,0,21.5542)">
<path d="M2467.18,1046.94L2488.12,931L2415.58,798.402L2460.84,765.054L2499.67,881.804L2548.24,762.727L2591.17,779.013L2536.28,912.841L2534.15,1054.69L2467.18,1046.94Z" style="fill:white;fill-rule:nonzero;"/>
</g>
</g>
<g transform="matrix(1.37749,0,0,1.37749,-682.57,-285.171)">
<g transform="matrix(1,0,0,1,0,21.8604)">
<path d="M1368.55,1232.81L1375.44,1206L1449.6,1182.32L1361.65,1170.6L1366.67,1131.62L1475.56,1083.53L1490.83,1124.95L1399.12,1146.74L1482.46,1155.77L1494.34,1198.68L1368.55,1232.81Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<path d="M1606.44,1215.4L1609.58,1136.86L1555.33,1139.37L1553.45,1221.04L1606.44,1215.4ZM1530.01,1256.81L1524.49,1105.39L1634.13,1111.43L1631.97,1241.51L1530.01,1256.81Z" style="fill:white;fill-rule:nonzero;"/>
<g transform="matrix(1,0,0,1,0,21.8604)">
<path d="M1685.37,1242.21L1677.84,1101.27L1796.36,1108.8L1791.35,1135.61L1716.57,1136.23L1717.19,1163.04L1790.09,1166.17L1799.5,1194.24L1717.82,1197.37L1715.94,1247.85L1685.37,1242.21Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<path d="M1865.26,1249.73L1869.02,1141.88L1839.08,1143.76L1834.06,1108.17L1937.68,1106.29L1932.67,1144.38L1903.98,1141.25L1907.74,1250.99L1865.26,1249.73Z" style="fill:white;fill-rule:nonzero;"/>
<g transform="matrix(1,0,0,1,0,-21.6971)">
<path d="M1985.11,1238.97L1973,1116.32L1997.55,1111.81L2009.09,1220.04L2029.12,1231.08L2032.13,1111.31L2051.67,1111.31L2058.69,1231.08L2082.24,1223.55L2088.26,1111.81L2115.32,1114.82L2105.51,1249.11L2041.17,1269.73L1985.11,1238.97Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<path d="M2243.81,1164.48L2215.31,1116.48L2193.37,1164.33L2243.81,1164.48ZM2160.01,1244.43L2163.48,1160.75L2196.99,1088.83L2235.91,1093.53L2271.61,1161.48L2278.49,1245.97L2242.69,1254.62L2240.46,1196.49L2192.86,1197L2188.35,1252.12L2160.01,1244.43Z" style="fill:white;fill-rule:nonzero;"/>
<path d="M2466.83,1270.02L2470.84,1109.25L2585.52,1123.29L2570.27,1151.76L2496.52,1152.96L2497.32,1180.62L2559.03,1183.03L2574.68,1207.48L2501.33,1207.08L2496.52,1232.73L2583.11,1237.55L2568.26,1264.4L2466.83,1270.02Z" style="fill:white;fill-rule:nonzero;"/>
</g>
<g transform="matrix(-5.01767,-2.89695,-2.89695,5.01767,6636.96,1047.73)">
<g transform="matrix(1.1547,0,0,1.20651,-182.476,-166.574)">
<path d="M869.181,557.113L887.931,567.473L886.785,589.166L869.914,596.954L849.246,586.915L850.431,567.473L869.181,557.113Z" style="fill:white;"/>
</g>
<g transform="matrix(1.1547,0,0,1.20651,-130.515,-166.574)">
<path d="M871.811,555.88L892.681,565.584L891.807,585.822L869.079,596.214L851.672,587.487L852.002,565.834L871.811,555.88Z" style="fill:white;"/>
</g>
<g transform="matrix(1.1547,0,0,1.20651,-156.495,-211.574)">
<path d="M867.557,555.268L888.041,563.912L888.041,584.633L869.291,594.994L849.535,585.682L850.541,563.912L867.557,555.268Z" style="fill:white;"/>
</g>
</g>
<path d="M2679.49,1278.37L2667.61,1325.63L2574.31,1317.71L2560.97,1343.62L2587.78,1457.75L2540.01,1472.18L2504.66,1324.55L2536.16,1270.25L2679.49,1278.37Z" style="fill:white;"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/hhoney_logo.svg-29a9142ec4509b73dd095f13be472d71.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://media/image/UI/hhoney_logo.svg"
dest_files=[ "res://.import/hhoney_logo.svg-29a9142ec4509b73dd095f13be472d71.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: 30 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -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

View file

@ -59,17 +59,17 @@ _global_script_classes=[ {
"language": "GDScript",
"path": "res://src/menu/options/scroll/Scroll.gd"
}, {
"base": "Reference",
"base": "",
"class": "SteamAPI",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_api.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamCallback",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_callback.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamFriends",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_friends.gdns"
@ -84,42 +84,42 @@ _global_script_classes=[ {
"language": "NativeScript",
"path": "res://addons/steam_api/steam_id.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboard",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_leaderboard.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboardEntries",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_leaderboard_entries.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboardEntry",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_leaderboard_entry.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboardFindResult",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_find_leaderboard_result.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboardScoreUploaded",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_leaderboard_uploaded.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamLeaderboardScoresDownloaded",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_leaderboard_scores_downloaded.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamUser",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_user.gdns"
}, {
"base": "Reference",
"base": "",
"class": "SteamUserStats",
"language": "NativeScript",
"path": "res://addons/steam_api/steam_user_stats.gdns"
@ -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"

View file

@ -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)

View file

@ -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

View file

@ -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="."]

View file

@ -706,6 +706,7 @@ func save_options():
o["clock_show"] = int(clock_show)
o["clock_alpha"] = float(clock_alpha)
o["clock_decimals"] = int(clock_decimals)
o["is_touch"] = int(is_touch)
file_save_json("user://options.json", o)
@ -752,6 +753,8 @@ func load_options():
clock_alpha = float(d["clock_alpha"])
if d.has("clock_decimals"):
clock_decimals = int(d["clock_decimals"])
if d.has("is_touch"):
is_touch = bool(d["is_touch"])
func save_keys(path := "user://keys.tres"):
var s_keys = SaveDict.new()

View file

@ -16,11 +16,17 @@ onready var btns := $Control/HBoxLeft/DPad/Buttons.get_children()
onready var actions := InputMap.get_actions()
func _ready():
set_game(true)
set_game(false)
visible = false
yield(Shared, "scene_changed")
visible = (OS.has_touchscreen_ui_hint() and OS.get_name() == "HTML5") or OS.get_name() == "Android"
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
func show_keys(arg_arrows := true, arg_c := true, arg_x := true, arg_pause := false, arg_passby := false):
right.visible = arg_arrows
@ -29,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
@ -49,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

View file

@ -10,16 +10,16 @@
[ext_resource path="res://src/class/shape/Circle.gd" type="Script" id=8]
[ext_resource path="res://media/image/UI/boot.png" type="Texture" id=9]
[sub_resource type="ConvexPolygonShape2D" id=7]
[sub_resource type="ConvexPolygonShape2D" id=13]
points = PoolVector2Array( 7.07107, 7.07107, 9.2388, 3.82683, 10, 0, 9.2388, -3.82683, 7.07107, -7.07107, 353.553, -353.553, 461.94, -191.342, 500, 0, 461.94, 191.342, 353.553, 353.553 )
[sub_resource type="ConvexPolygonShape2D" id=8]
[sub_resource type="ConvexPolygonShape2D" id=14]
points = PoolVector2Array( -7.07107, 7.07107, -3.82683, 9.2388, -4.37114e-07, 10, 3.82683, 9.2388, 7.07107, 7.07107, 353.553, 353.553, 191.342, 461.94, -2.18557e-05, 500, -191.342, 461.94, -353.553, 353.553 )
[sub_resource type="ConvexPolygonShape2D" id=9]
[sub_resource type="ConvexPolygonShape2D" id=15]
points = PoolVector2Array( -7.07107, -7.07107, -9.2388, -3.82683, -10, -8.74228e-07, -9.2388, 3.82683, -7.07107, 7.07107, -353.553, 353.553, -461.94, 191.342, -500, -4.37114e-05, -461.94, -191.342, -353.553, -353.553 )
[sub_resource type="ConvexPolygonShape2D" id=10]
[sub_resource type="ConvexPolygonShape2D" id=16]
points = PoolVector2Array( 7.07107, -7.07107, 3.82684, -9.23879, 1.19249e-07, -10, -3.82684, -9.2388, -7.07107, -7.07107, -353.553, -353.553, -191.342, -461.94, 5.96244e-06, -500, 191.342, -461.94, 353.553, -353.553 )
[sub_resource type="CircleShape2D" id=3]
@ -80,8 +80,9 @@ margin_right = 150.0
margin_bottom = 150.0
[node name="0" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"]
shape = SubResource( 7 )
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 )
@ -100,8 +102,9 @@ button_path = NodePath("..")
idle_color = Color( 1, 1, 1, 0.501961 )
[node name="1" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"]
shape = SubResource( 8 )
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 )
@ -121,8 +125,9 @@ button_path = NodePath("..")
idle_color = Color( 1, 1, 1, 0.501961 )
[node name="2" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"]
shape = SubResource( 9 )
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 )
@ -142,8 +148,9 @@ button_path = NodePath("..")
idle_color = Color( 1, 1, 1, 0.501961 )
[node name="3" type="TouchScreenButton" parent="Control/HBoxLeft/DPad/Buttons"]
shape = SubResource( 10 )
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 )

View file

@ -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

View file

@ -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 )]

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/HarmonyHoneyLogo.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 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 = 42.0
margin_top = 14.0
margin_right = 512.0
margin_bottom = 73.0
margin_bottom = 45.0
custom_fonts/font = SubResource( 6 )
text = " a game by"
valign = 1
@ -652,34 +652,39 @@ __meta__ = {
"_edit_use_anchors_": false
}
[node name="TextureRect" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 73.0
[node name="Control" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 45.0
margin_right = 512.0
margin_bottom = 223.0
margin_bottom = 195.0
rect_min_size = Vector2( 0, 150 )
[node name="TextureRect" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List/Control"]
anchor_top = 0.1
anchor_right = 1.0
anchor_bottom = 0.9
texture = ExtResource( 13 )
expand = true
stretch_mode = 6
[node name="Suffix" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 223.0
margin_top = 195.0
margin_right = 512.0
margin_bottom = 254.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 = 254.0
margin_top = 226.0
margin_right = 512.0
margin_bottom = 274.0
rect_min_size = Vector2( 0, 20 )
margin_bottom = 244.0
rect_min_size = Vector2( 0, 18 )
[node name="Prefix2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 274.0
margin_top = 244.0
margin_right = 512.0
margin_bottom = 305.0
margin_bottom = 275.0
custom_fonts/font = SubResource( 6 )
text = " made with"
valign = 1
@ -688,9 +693,9 @@ __meta__ = {
}
[node name="TextureRect2" type="TextureRect" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 305.0
margin_top = 275.0
margin_right = 512.0
margin_bottom = 455.0
margin_bottom = 425.0
rect_min_size = Vector2( 0, 150 )
texture = ExtResource( 23 )
expand = true
@ -712,24 +717,24 @@ __meta__ = {
}
[node name="Suffix2" type="Label" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 455.0
margin_top = 425.0
margin_right = 512.0
margin_bottom = 486.0
margin_bottom = 456.0
custom_fonts/font = SubResource( 6 )
text = "godotengine.org "
align = 2
valign = 1
[node name="Spacer2" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 486.0
margin_top = 456.0
margin_right = 512.0
margin_bottom = 516.0
rect_min_size = Vector2( 0, 30 )
margin_bottom = 474.0
rect_min_size = Vector2( 0, 18 )
[node name="HBoxContainer" type="HBoxContainer" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 516.0
margin_top = 474.0
margin_right = 512.0
margin_bottom = 566.0
margin_bottom = 524.0
custom_constants/separation = 10
alignment = 1
@ -766,19 +771,29 @@ texture = ExtResource( 27 )
expand = true
[node name="Spacer3" type="Control" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 566.0
margin_top = 524.0
margin_right = 512.0
margin_bottom = 576.0
margin_bottom = 534.0
rect_min_size = Vector2( 0, 10 )
[node name="HFlowContainer" type="HFlowContainer" parent="Canvas/CenterContainer/Control/Credits/List"]
margin_top = 576.0
margin_top = 534.0
margin_right = 512.0
margin_bottom = 642.0
margin_bottom = 670.0
[node name="Label4" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 37.0
margin_right = 205.0
margin_left = 18.0
margin_right = 284.0
margin_bottom = 31.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "Harmony 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
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
@ -787,9 +802,10 @@ align = 1
valign = 1
[node name="Label6" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 284.0
margin_right = 474.0
margin_bottom = 31.0
margin_left = 20.0
margin_top = 35.0
margin_right = 210.0
margin_bottom = 66.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "Sam Murray"
@ -797,9 +813,9 @@ align = 1
valign = 1
[node name="Label5" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 31.0
margin_left = 255.0
margin_top = 35.0
margin_right = 267.0
margin_right = 491.0
margin_bottom = 66.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
@ -808,16 +824,49 @@ align = 1
valign = 1
[node name="Label7" type="Label" parent="Canvas/CenterContainer/Control/Credits/List/HFlowContainer"]
margin_left = 334.0
margin_top = 35.0
margin_right = 480.0
margin_bottom = 66.0
margin_left = 32.0
margin_top = 70.0
margin_right = 178.0
margin_bottom = 101.0
size_flags_horizontal = 6
custom_fonts/font = SubResource( 6 )
text = "neropatti"
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_top = 105.0
margin_right = 245.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"
align = 1
valign = 1
[node name="Back" type="ColorRect" parent="Canvas/CenterContainer/Control"]
visible = false
anchor_right = 1.0
@ -848,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 )
@ -868,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"]

View file

@ -1,11 +1,11 @@
[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]
[node name="Control" type="CanvasLayer"]
layer = 5
layer = 50
script = ExtResource( 2 )
[node name="ColorRect" type="ColorRect" parent="."]
@ -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 )

View file

@ -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)

View file

@ -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()

View file

@ -256,6 +256,7 @@ script = ExtResource( 24 )
__meta__ = {
"_edit_use_anchors_": false
}
list = PoolStringArray( "TOGGLE", "ALWAYS" )
is_refill = true
var_name = "is_touch"
@ -274,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
@ -311,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

View file

@ -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()