Compare commits

..

4 Commits

Author SHA1 Message Date
Florian Piesche
19096c10a6 Merge a2272d8a2e into e3b481093a 2024-09-06 20:27:18 +01:00
Florian Piesche
a2272d8a2e Split release info into separate releases.xml and add branding colours for Flathub 2024-09-06 20:26:56 +01:00
Florian Piesche
ef272fca8b Edit icon/logo canvas to be square 2024-09-06 20:22:21 +01:00
Florian Piesche
cd27a65d33 Add FreeDesktop metadata 2024-09-06 14:50:32 +01:00
6 changed files with 159 additions and 93 deletions

View File

@@ -734,15 +734,3 @@ install(TARGETS "${EXECNAME}" COMPONENT Executable)
install(FILES ${DATA_FILES} DESTINATION lib/aerofoil/Packaged COMPONENT Resources) install(FILES ${DATA_FILES} DESTINATION lib/aerofoil/Packaged COMPONENT Resources)
install(FILES ${HOUSE_FILES} DESTINATION lib/aerofoil/Packaged/Houses COMPONENT Resources) install(FILES ${HOUSE_FILES} DESTINATION lib/aerofoil/Packaged/Houses COMPONENT Resources)
install(TARGETS ${TOOL_EXES} DESTINATION lib/aerofoil/tools COMPONENT Tools) install(TARGETS ${TOOL_EXES} DESTINATION lib/aerofoil/tools COMPONENT Tools)
if (UNIX AND NOT APPLE)
install(FILES Resources/Linux/io.github.elasota.aerofoil.metainfo.xml
DESTINATION share/appdata
PERMISSIONS WORLD_READ GROUP_READ GROUP_EXECUTE OWNER_READ OWNER_WRITE)
install(FILES Resources/Linux/io.github.elasota.aerofoil.desktop
DESTINATION share/applications
PERMISSIONS WORLD_EXECUTE WORLD_READ GROUP_READ GROUP_EXECUTE OWNER_READ OWNER_WRITE OWNER_EXECUTE)
install(FILES Resources/Linux/io.github.elasota.aerofoil.svg
DESTINATION share/icons/hicolor/scalable/apps
PERMISSIONS WORLD_READ GROUP_READ GROUP_EXECUTE OWNER_READ OWNER_WRITE)
endif()

View File

@@ -5,61 +5,38 @@ files, if necessary, to the "Houses" directory inside of the "Aerofoil"
directory in your "Documents" directory, then restart Aerofoil. directory in your "Documents" directory, then restart Aerofoil.
IMPORTING EXISTING COMMUNITY CONTENT TO AEROFOIL IMPORTING EXISTING COMMUNITY CONTENT TO AEROFOIL
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
If you want to import an existing third-party Glider PRO house to Aerofoil, If you want to import an existing third-party Glider PRO house to Aerofoil,
a few steps are required. All Aerofoil import tools are currently command-line a few steps are required.
only, so you will need to use a command prompt to use them. Launch the tool
programs without any arguments and they will give instructions for usage.
You need to convert the file into Aerofoil's "triplet" format, which consists
of a metadata file (extension .gpf), and file forks (.gpd for data, .gpr for
resources). How you get these depends on the input format:
- For MacBinary files (.bin), use the "bin2gp" utility
- For BinHex files (.hqx), use the "hqx2gp" utility
- For StuffIt (.sit) and Compact Pro (.cpt) archives, use the "unpacktool"
utility to extract the contents in triplet format. The "unpacktool"
utility should support most vintage StuffIt archives made with StuffIt
Deluxe 6 or lower.
Some history: On most modern operating systems, files are a single stream of (NOTE: ".sea" files are self-extracting archives, typically StuffIt or Compact
data, and the file type is represented by an extension at the end of the file Pro archives with the self-extractor program in the resources. These will
name. On classic Macintosh systems, files have 2 streams: The data fork and always be distributed in a fork-grouping container like MacBinary or BinHex.
resource fork, and the file type (among other things) is stored in a metadata For cases like these, you need to split the self-extracting archive using
block that is separate from the file data itself. "bin2gp" or "hqx2gp" and then pass the ".sea.gpd" file (which contains the
archive data) to "unpacktool" to decompress it.)
Macintosh Glider PRO house files use the data fork to store the level data and Once you've done that, if the house has custom resources (i.e. a .gpr file),
the resource fork to store custom features like sounds. you need to convert it to an Aerofoil resource archive, which you can do using
the "gpr2gpa" tool.
However, most server software only supports transmitting files as a single data
stream, so Macintosh files were shared in formats that bundle the 3 types of
data into a single data stream, and were converted into the full Macintosh
format files using conversion software on a Macintosh machine.
Aerofoil's unpack tools will always extract Macintosh files as a triplet of 3
files:
- The resource fork will be split to a file with a ".gpr" extension
- The data fork will be split to a file with a ".gpa" extension
- The metadata will be split to a file with a ".gpf" extension
Some file types you may encounter in the wild:
- MacBinary files (.bin): These encode a single file. Use the "bin2gp"
utility to unpack it.
- BinHex files (.hqx): These encode a single file. Use the "hqx2gp" utility
to unpack it.
- Compact Pro (.cpt) and StuffIt (.sit) archives encode multiple files.
Use the "unpacktool" utility to extract it.
- Self-extracting archives (.sea) are programs that contain archive data,
usually in StuffIt or Compact Pro format, in the data fork, and a
decompression program in the resource fork. Typically you will encounter
these as ".sea.hqx" or similar. For these, you need to extract the .sea
file from its original encoding, and then pass the data fork file (.gpd)
to the "unpacktool" utility.
Once you've unpacked the data for the house, you may need to convert the
resources (.gpr file) to Aerofoil's resource format. Aerofoil can not read .gpr
files directly.
To convert resources for a house, use the "gpr2gpa" utility. Note that
gpr2gpa's PICT converter may not support all PICT encodings. If you find a gpr2gpa's PICT converter may not support all PICT encodings. If you find a
house with custom PICT resources that isn't supported, please submit a sample house with custom PICT resources that isn't supported, please submit a sample
to Aerofoil's issue tracker. to Aerofoil's issue tracker.
Once you've done this, you should have a .gpf, .gpa, and .gpd file for the
house. Put them in the Houses directory to add the house to Aerofoil.
IMPORTING TV QUICKTIME MOVIES IMPORTING TV QUICKTIME MOVIES
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@@ -102,9 +79,12 @@ with an asterisk (*) and omit the output filename.
SECURITY CONSIDERATIONS SECURITY CONSIDERATIONS
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
Glider PRO didn't really do any validation of houses. Aerofoil 1.1 has a Glider PRO didn't really do any validation of houses. Currently, Aerofoil
significantly stricter validator, which will reject data that seems doesn't do any additional validation either, and it's possible that invalid
excessively large or invalid. house data may lead to crashes or even remote code execution.
Aerofoil 1.1 has a significantly stricter validator, which will reject data
that seems excessively large or invalid.
Also, Glider PRO houses were able to take advantage of a resource overlaying Also, Glider PRO houses were able to take advantage of a resource overlaying
feature of the Macintosh operating system, where a resource being present in feature of the Macintosh operating system, where a resource being present in

View File

@@ -9,6 +9,6 @@ To play:
Windows, macOS: Windows, macOS:
Download from the Releases page, or from https://galeforcegames.itch.io/aerofoil Download from the Releases page, or from https://galeforcegames.itch.io/aerofoil
Browser (HTML5): Visit https://galeforcegames.itch.io/aerofoil Android: Download from Google Play Store: https://play.google.com/store/apps/details?id=org.thecodedeposit.aerofoil from itch.io: https://galeforcegames.itch.io/aerofoil, or from the Releases page
Android: Unfortunately, the Android version has been discontinued due to high maintenance requirements. The Google Play Store listing will be retired in August, 2025. You can try downloading an APK from the Releases page, but it may not work on newer devices. Browser (HTML5): Visit https://galeforcegames.itch.io/aerofoil

View File

@@ -3,7 +3,7 @@
<id>io.github.elasota.aerofoil</id> <id>io.github.elasota.aerofoil</id>
<name>Aerofoil</name> <name>Aerofoil</name>
<developer id="io.github.elasota.aerofoil"> <developer id="io.github.elasota.aerofoil">
<name>John Calhoun, Eric Lasota, Aerofoil Contributors</name> <name>Aerofoil Contributors</name>
<url>https://github.com/elasota/Aerofoil/graphs/contributors</url> <url>https://github.com/elasota/Aerofoil/graphs/contributors</url>
</developer> </developer>
<branding> <branding>
@@ -24,41 +24,18 @@
</description> </description>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<image type="source">https://cdn.jsdelivr.net/gh/elasota/elasota.github.io@refs/heads/master/aerofoil/titlescreen.png</image> <image type="source">https://play-lh.googleusercontent.com/9AWQ8tfXjjavos7xLahHolliczMrLNnCz8erMzrMu1dRr-ZRpbNnQc-kn_0GFjfTxBs=w2560-h1440</image>
<caption>The classic title screen with the custom menu GUI</caption> <caption>How to tip the grease...</caption>
</screenshot> </screenshot>
<screenshot> <screenshot>
<image type="source">https://cdn.jsdelivr.net/gh/elasota/elasota.github.io@refs/heads/master/aerofoil/demomode.png</image> <image type="source">https://play-lh.googleusercontent.com/rkBnqvdYw_H02E3Xue0wd6WS44SZdMm6orNy-gRCFyauH7sdu6N-h-2G12NHF74b6zI=w2560-h1440</image>
<caption>Demo mode</caption> <caption>Koo-koo</caption>
</screenshot>
<screenshot>
<image type="source">https://cdn.jsdelivr.net/gh/elasota/elasota.github.io@refs/heads/master/aerofoil/winscreen.png</image>
<caption>You won!</caption>
</screenshot>
<screenshot>
<image type="source">https://cdn.jsdelivr.net/gh/elasota/elasota.github.io@refs/heads/master/aerofoil/nemosmarket.png</image>
<caption>One of the included houses</caption>
</screenshot>
<screenshot>
<image type="source">https://cdn.jsdelivr.net/gh/elasota/elasota.github.io@refs/heads/master/aerofoil/editor.png</image>
<caption>Level editor included!</caption>
</screenshot> </screenshot>
</screenshots> </screenshots>
<recommends>
<input>keyboard</input>
</recommends>
<categories> <categories>
<category>Game</category> <category>Game</category>
</categories> </categories>
<releases> <releases type="external" />
<release version="1.1.2" date="2021-11-10">
<url>https://github.com/elasota/Aerofoil/releases/tag/1.1.2</url>
<description>
<p>Added gamepad support to Android and fixed gamepads not working
on other platforms.</p>
<p>Split off comand-line import tools to a separate package.</p>
</description>
</release>
</releases>
<content_rating type="oars-1.1"></content_rating> <content_rating type="oars-1.1"></content_rating>
<update_contact>https://github.com/elasota</update_contact>
</component> </component>

View File

@@ -0,0 +1,10 @@
<releases>
<release version="1.1.2" date="2021-11-10">
<url>https://github.com/elasota/Aerofoil/releases/tag/1.1.2</url>
<description>
<p>Added gamepad support to Android and fixed gamepads not working
on other platforms.</p>
<p>Split off comand-line import tools to a separate package.</p>
</description>
</release>
</releases>

View File

@@ -1,2 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="512pt" height="512pt" version="1.1" viewBox="0 0 682.67 682.67" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="linearGradient2" x1="79.399" x2="79.399" y1="176.02" y2="120.3" gradientTransform="matrix(2.3332,0,0,2.3332,-111.25,-195.69)" gradientUnits="userSpaceOnUse"><stop stop-color="#d00" offset="0"/><stop stop-color="#f63" offset=".32649"/><stop stop-color="#fc9" offset=".71632"/><stop stop-color="#ff0" offset="1"/></linearGradient></defs><g transform="matrix(3.4895 0 0 3.4895 -98.192 -304.23)"><g transform="matrix(1.1519,0,0,1.1519,4.4555,12.215)"><path d="m170 150a65 65 0 01-64.743 64.999 65 65 0 01-65.255-64.486 65 65 0 0164.227-65.509 65 65 0 0165.763 63.968" fill="url(#linearGradient2)"/><path d="m30 130h26.25l3.75-10h45l20 20 4.8276-5h25.172l5 5h5l15 20h-20l-10 10h-71.128l-3.8724-10h-30z" fill="none" stroke="#336" stroke-linecap="square" stroke-width="5" style="paint-order:normal"/><path d="m30 130h26.25l3.75-10h45l15 15 5.0862 4.9108 4.7414-4.9108h25.172l5 5h5l15 20h-20l-10 10h-71.128l-3.8724-10h-30z" fill="#555"/><path d="m30 130h26.25l3.75-10h45l5 5 15.086 14.911 4.9138-4.9108h25l5 5h5l1.9297 6.5285-4.2904 6.9963-2.6393 6.4752 11.106-11.859-11.106 11.859-10 10h-11.166l-15.198-21.859h-34.614l-10.149 11.859h-7.4876l-11.385-32.431-11.853 32.431h-3.1472z" fill="#888"/><path d="m95.996 148.14h6.2852l-19.119 21.859h-4.2904z" fill="#444" stroke-linecap="square" stroke-width="5"/><path d="m30 130h26.25l3.75-10h45l20 20h40l15 20h-16.197l8.697-10-1.3943-1.8591-11.106 11.859-10 10h-7.5632l-17.437-25h-25l-21.128 25-18.872-50-15 40z" fill="#fff"/></g></g></svg> <!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="180mm"
height="180mm"
viewBox="0 0 179.99999 180"
version="1.1"
id="svg1"
xml:space="preserve"
sodipodi:docname="io.github.elasota.aerofoil.svg"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.30992466"
inkscape:cx="608.21233"
inkscape:cy="554.97359"
inkscape:window-width="1366"
inkscape:window-height="696"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:grid
id="grid4"
units="mm"
originx="-25.954912"
originy="-85.000008"
spacingx="0.99999998"
spacingy="1"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="5"
dotted="false"
gridanglex="30"
gridanglez="30"
visible="false" /></sodipodi:namedview><defs
id="defs1"><linearGradient
id="linearGradient1"
inkscape:collect="always"><stop
style="stop-color:#dd0000;stop-opacity:1;"
offset="0"
id="stop1" /><stop
style="stop-color:#ff6633;stop-opacity:1;"
offset="0.32649031"
id="stop3" /><stop
style="stop-color:#ffcc99;stop-opacity:1;"
offset="0.71631855"
id="stop4" /><stop
style="stop-color:#ffff00;stop-opacity:1;"
offset="1"
id="stop2" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1"
id="linearGradient2"
x1="79.3993"
y1="176.01854"
x2="79.3993"
y2="120.30114"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.3332031,0,0,2.3332031,-111.24523,-195.68701)" /></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-25.954913,-85.000005)"><g
id="g6"
transform="translate(10.477456,23.156336)"><path
style="fill:url(#linearGradient2);stroke:none;stroke-width:0.699961;stroke-linecap:round"
id="path1"
sodipodi:type="arc"
sodipodi:cx="105"
sodipodi:cy="150"
sodipodi:rx="65"
sodipodi:ry="65"
sodipodi:start="0"
sodipodi:end="6.2673744"
sodipodi:open="true"
sodipodi:arc-type="arc"
d="m 170,150 a 65,65 0 0 1 -64.74307,64.99949 65,65 0 0 1 -65.254899,-64.48564 65,65 0 0 1 64.227209,-65.50928 65,65 0 0 1 65.76264,63.96776" /><path
id="rect5-2"
style="fill:none;fill-opacity:1;stroke:#333366;stroke-width:5;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 29.999999,130 h 26.249999 l 3.75,-10 H 105 l 5,5 15,15 4.82755,-5 H 155 l 5,5 h 5 l 15,20 h -20 l -10,10 H 78.872355 L 74.999999,160 H 44.999998 Z"
sodipodi:nodetypes="ccccccccccccccccc" /><path
id="rect5"
style="fill:#555555;fill-opacity:1;stroke:none;stroke-width:80;stroke-linecap:round;stroke-dasharray:none"
d="m 30.000002,130 h 26.249999 l 3.75,-10 H 105 l 5,5 10,10 5.08617,4.91075 L 129.82755,135 H 155 l 5,5 h 5 l 15,20 h -20 l -10,10 H 78.872355 L 75.000002,160 H 45.000001 Z"
sodipodi:nodetypes="cccccccccccccccccc" /><path
id="rect5-6-3"
style="fill:#888888;fill-opacity:1;stroke:none;stroke-linecap:round"
d="m 30.000002,130 h 26.25 l 3.75,-10 v 0 H 105 l 5,5 15.08617,14.91075 L 130,135 h 25 l 5,5 h 5 l 1.92971,6.52853 -4.29045,6.99628 L 160,160 171.10569,148.14092 v 0 L 160,160 150,170 H 138.83367 L 123.63566,148.14092 H 89.021511 L 78.872353,160 H 75.000002 71.384761 L 60.000002,127.5687 48.14717,160 h -3.147169 z"
sodipodi:nodetypes="cccccccccccccccccccccccccccc" /><path
id="rect6"
style="opacity:1;fill:#444444;stroke-width:5;stroke-linecap:square"
d="m 95.996386,148.14092 h 6.285194 L 83.162805,170 h -4.29045 z"
sodipodi:nodetypes="ccccc" /><path
id="rect5-6"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-linecap:round"
d="m 30.000002,130 h 26.249999 l 3.75,-10 v 0 H 105 l 5,5 10,10 5,5 h 30 5 5 l 15,20 H 163.80303 L 172.5,150 171.10569,148.14092 160,160 150,170 h -7.56325 L 125,145 h -25 l -21.127645,25 -18.872354,-50 -15,40 z"
sodipodi:nodetypes="cccccccccccccccccccccccc" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB