Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
98cf8f3
Do not send non animated png images to mod detail banner animatedsource
Shivansps Aug 24, 2025
53ae1d5
Migrate to new project model
Shivansps Oct 1, 2025
1e8b378
Delete Program.cs
Shivansps Oct 1, 2025
324f490
Inform Android OS
Shivansps Oct 1, 2025
d14d1c2
Update Knossos.NET.Desktop.csproj
Shivansps Oct 5, 2025
ce407bc
Match min android version to fsowrapper
Shivansps Oct 5, 2025
816c364
Add FSOWrapper code and additional android support
Shivansps Oct 7, 2025
9ffeb4e
Handle messagebox and windows on android
Shivansps Oct 9, 2025
af4fe55
Correct knossoswindow overlay and add modcard clicks
Shivansps Oct 10, 2025
a6e9bf4
Correct engine lib path on android
Shivansps Oct 10, 2025
e71557d
correct debug statement
Shivansps Oct 10, 2025
bdbbafc
allow to switch library folder in android
Shivansps Oct 10, 2025
61e0e55
fix included utilities location
Shivansps Oct 10, 2025
0732922
Refactor Fs2RetailInstaller to use IStorageProvider folder/files
Shivansps Oct 10, 2025
f6a8367
enable tts by default
Shivansps Oct 10, 2025
42d069b
fix issues with spaces in path to binaries (#339)
notimaginative Oct 25, 2025
b9415e9
remove touchcontrols, source moved to fsowrapper
Shivansps Nov 28, 2025
a41faac
Inform mod fetching errors during mod install
Shivansps Dec 2, 2025
cd3e4aa
Merge pull request #342 from Shivansps/mod-install-inform-fetch-error
Shivansps Dec 5, 2025
f7137c4
move to net10-android
Shivansps Dec 10, 2025
cfe3dc6
Set mod editor video list and mod description to accept returns
Shivansps Dec 13, 2025
37ca109
Update avalonia dependecy to 11.3.9
Shivansps Dec 14, 2025
3f78961
Detect builds without a file extension in linux in import builds
Shivansps Dec 14, 2025
3060a9a
Allow to hide installed mods
Shivansps Dec 15, 2025
f6a5d5c
Merge pull request #348 from Shivansps/user-hidden-mods
Shivansps Dec 16, 2025
905d83a
Merge pull request #347 from Shivansps/detect-builds-noext-linux
Shivansps Dec 16, 2025
0992f51
Merge pull request #346 from Shivansps/update-avalonia
Shivansps Dec 16, 2025
fe162c6
Merge pull request #345 from Shivansps/fix-return-mod-details-video
Shivansps Dec 16, 2025
9821ec2
fix typo
Shivansps Dec 16, 2025
71089e7
Merge pull request #335 from Shivansps/implement-apnghelper
Shivansps Dec 16, 2025
337ab93
Disable auto collapse of most scrollbars
Shivansps Dec 16, 2025
25728fa
adjust a little bit the dev panel size
Shivansps Dec 16, 2025
a789211
Warn of mod id is not in nebula when entering to the members mgr
Shivansps Dec 16, 2025
eb031e3
fix message
Shivansps Dec 16, 2025
cb458ec
Not being able to remove all youtube videos in mod editor
Shivansps Dec 17, 2025
c6c4e27
Merge pull request #350 from Shivansps/warn-id-mod-members
Shivansps Dec 17, 2025
4a92eaf
Merge pull request #349 from Shivansps/change-horizontalscroll
Shivansps Dec 17, 2025
ff88fb5
Create firewall exceptions for newly downloaded FSO executables
Shivansps Dec 17, 2025
dd6d9cb
save last settings on server creator
Shivansps Dec 20, 2025
b54401d
Delete hiddenmodid on mod delete
Shivansps Dec 20, 2025
c510b13
Merge pull request #351 from Shivansps/allow-remove-youtube
Shivansps Dec 20, 2025
fc97230
Merge pull request #352 from Shivansps/windows-fso-firewall-exceptions
Shivansps Dec 20, 2025
f805462
Merge pull request #354 from Shivansps/delete-hidden-modid
Shivansps Dec 23, 2025
7f9a89b
Merge pull request #353 from Shivansps/main
Shivansps Dec 24, 2025
33c44d3
Bump version to 1.3.2
Shivansps Dec 31, 2025
116badd
Merge pull request #355 from Shivansps/Bump-to-1.3.2
Shivansps Dec 31, 2025
886cec5
update android touchcontrols
Shivansps Jan 5, 2026
e9ad350
Migrate to new project model
Shivansps Oct 1, 2025
5f0e985
Delete Program.cs
Shivansps Oct 1, 2025
279e9ac
Inform Android OS
Shivansps Oct 1, 2025
d5f2c53
Update Knossos.NET.Desktop.csproj
Shivansps Oct 5, 2025
41d96f2
Match min android version to fsowrapper
Shivansps Oct 5, 2025
41449be
Add FSOWrapper code and additional android support
Shivansps Oct 7, 2025
30d729a
Handle messagebox and windows on android
Shivansps Oct 9, 2025
56b7562
Correct knossoswindow overlay and add modcard clicks
Shivansps Oct 10, 2025
b8d501d
Correct engine lib path on android
Shivansps Oct 10, 2025
b259996
correct debug statement
Shivansps Oct 10, 2025
b55c559
allow to switch library folder in android
Shivansps Oct 10, 2025
2c000c1
fix included utilities location
Shivansps Oct 10, 2025
5db0b76
Refactor Fs2RetailInstaller to use IStorageProvider folder/files
Shivansps Oct 10, 2025
db240f0
enable tts by default
Shivansps Oct 10, 2025
0e2c705
remove touchcontrols, source moved to fsowrapper
Shivansps Nov 28, 2025
ce88108
move to net10-android
Shivansps Dec 10, 2025
adbb787
update android touchcontrols
Shivansps Jan 5, 2026
bac4007
Merge branch 'project-migration' of https://github.com/Shivansps/Knos…
Shivansps Feb 11, 2026
7eba44d
upd packages
Shivansps Feb 11, 2026
efaf67e
fix compile
Shivansps Feb 11, 2026
0c26136
fix scroll on mod install
Shivansps Feb 11, 2026
c5cea03
enable/disble modcard button on android
Shivansps Feb 11, 2026
278d311
screen screen on and fullscreen
Shivansps Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project>
<!-- https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management -->
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
</PropertyGroup>
<ItemGroup>
<!-- Avalonia packages -->
<!-- Important: keep version in sync! -->
<PackageVersion Include="Avalonia" Version="11.3.11" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="11.3.11" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="11.3.11" />
<PackageVersion Include="Avalonia.Diagnostics" Version="11.3.11" />
<PackageVersion Include="Avalonia.Desktop" Version="11.3.11" />
<PackageVersion Include="Avalonia.iOS" Version="11.3.6" />
<PackageVersion Include="Avalonia.Browser" Version="11.3.6" />
<PackageVersion Include="Avalonia.Android" Version="11.3.11" />
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageVersion Include="Xamarin.AndroidX.Core.SplashScreen" Version="1.2.0.1" />
<PackageVersion Include="AnimatedImage.Avalonia" Version="1.0.7" />
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.3.11" />
<PackageVersion Include="Avalonia.HtmlRenderer" Version="11.2.0" />
<PackageVersion Include="Avalonia.Markup.Xaml.Loader" Version="11.3.11" />
<PackageVersion Include="ini-parser-netstandard" Version="2.5.3" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.3" />
<PackageVersion Include="ObservableCollections" Version="3.3.4" />
<PackageVersion Include="SharpCompress" Version="0.39.0" />
<PackageVersion Include="WindowsShortcutFactory" Version="1.2.0" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion IonKiwi.lz4/IonKiwi.lz4.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net60</TargetFrameworks>
<TargetFrameworks>net6.0;net8.0;net10.0-android</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<PackageId>IonKiwi.lz4.managed</PackageId>
<Version>1.0.7</Version>
Expand Down
Binary file added Knossos.NET.Android/Icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
53 changes: 53 additions & 0 deletions Knossos.NET.Android/Knossos.NET.Android.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0-android</TargetFramework>
<SupportedOSPlatformVersion>28</SupportedOSPlatformVersion>
<Nullable>enable</Nullable>
<AndroidPackageFormat>apk</AndroidPackageFormat>
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateApplicationManifest>true</GenerateApplicationManifest>

<ApplicationId>com.knossosnet.knossosnet</ApplicationId>
<ApplicationVersion>2</ApplicationVersion>
<AndroidVersionCode>2</AndroidVersionCode>
<ApplicationDisplayVersion>1.3.2</ApplicationDisplayVersion>
<AndroidUseAapt2>true</AndroidUseAapt2>
<RunAOTCompilation>false</RunAOTCompilation>
</PropertyGroup>

<ItemGroup>
<AndroidNativeLibrary Include="natives\arm64-v8a\*.so" Abi="arm64-v8a" />
<AndroidNativeLibrary Include="natives\armeabi-v7a\*.so" Abi="armeabi-v7a"/>
<AndroidNativeLibrary Include="natives\x86\*.so" Abi="x86" />
<AndroidNativeLibrary Include="natives\x86_64\*.so" Abi="x86_64"/>
</ItemGroup>

<ItemGroup>
<AndroidJavaSource Include="java\**\*.java" />
</ItemGroup>

<ItemGroup Condition="'$(Configuration)' != 'Release'">
<AvaloniaResource Include="Assets\**" />
</ItemGroup>

<ItemGroup>
<AndroidResource Include="Icon.png">
<Link>Resources\drawable\Icon.png</Link>
</AndroidResource>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Avalonia.Android" />
<PackageReference Include="Xamarin.AndroidX.Core.SplashScreen" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Knossos.NET\Knossos.NET.csproj" />
</ItemGroup>

<ItemGroup>
<Folder Include="natives\arm64-v8a\" />
</ItemGroup>
</Project>
31 changes: 31 additions & 0 deletions Knossos.NET.Android/MainActivity.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Android.Content.PM;
using Android.Views;
using Avalonia;
using Avalonia.Android;

namespace Knossos.NET.Android;

[Activity(
Label = "Knossos.NET",
Theme = "@style/MyTheme.NoActionBar",
Icon = "@drawable/icon",
MainLauncher = true,
ConfigurationChanges = ConfigChanges.Orientation
| ConfigChanges.ScreenSize
| ConfigChanges.UiMode,
ScreenOrientation = ScreenOrientation.SensorLandscape)]
public class MainActivity : AvaloniaMainActivity<App>
{
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
{
return base.CustomizeAppBuilder(builder)
.WithInterFont();
}

protected override void OnCreate(Bundle? savedInstanceState)
{
Window?.AddFlags(WindowManagerFlags.KeepScreenOn);
Window?.AddFlags(WindowManagerFlags.Fullscreen);
base.OnCreate(savedInstanceState);
}
}
40 changes: 40 additions & 0 deletions Knossos.NET.Android/Properties/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="com.knossosnet.knossosnet">
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:glEsVersion="0x00030002" android:required="true" />
<!-- Touchscreen support -->
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

<!-- Game controller support -->
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.gamepad" android:required="false" />
<uses-feature android:name="android.hardware.usb.host" android:required="false" />

<!-- External mouse input events -->
<uses-feature android:name="android.hardware.type.pc" android:required="false" />

<uses-permission android:name="android.permission.VIBRATE" />

<!-- Allow access to Bluetooth devices -->
<!-- Currently this is just for Steam Controller support and requires setting SDL_HINT_JOYSTICK_HIDAPI_STEAM -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

<application android:label="Knossos.NET"
android:icon="@drawable/Icon"
android:hardwareAccelerated="true"
android:isGame="true"
android:supportsRtl="true"
android:extractNativeLibs="true">

<activity
android:name=".GameActivity"
android:exported="false"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="sensorLandscape"
android:immersive="true"
android:process=":game"
android:launchMode="singleTask">
</activity>
</application>
</manifest>
44 changes: 44 additions & 0 deletions Knossos.NET.Android/Resources/AboutResources.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Images, layout descriptions, binary blobs and string dictionaries can be included
in your application as resource files. Various Android APIs are designed to
operate on the resource IDs instead of dealing with images, strings or binary blobs
directly.

For example, a sample Android app that contains a user interface layout (main.axml),
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
would keep its resources in the "Resources" directory of the application:

Resources/
drawable/
icon.png

layout/
main.axml

values/
strings.xml

In order to get the build system to recognize Android resources, set the build action to
"AndroidResource". The native Android APIs do not operate directly with filenames, but
instead operate on resource IDs. When you compile an Android application that uses resources,
the build system will package the resources for distribution and generate a class called "R"
(this is an Android convention) that contains the tokens for each one of the resources
included. For example, for the above Resources layout, this is what the R class would expose:

public class R {
public class drawable {
public const int icon = 0x123;
}

public class layout {
public const int main = 0x456;
}

public class strings {
public const int first_string = 0xabc;
public const int second_string = 0xbcd;
}
}

You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
to reference the layout/main.axml file, or R.strings.first_string to reference the first
string in the dictionary file values/strings.xml.
66 changes: 66 additions & 0 deletions Knossos.NET.Android/Resources/drawable-night-v31/avalonia_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="vector"
android:width="128dp"
android:height="128dp"
android:viewportWidth="128"
android:viewportHeight="128">
<group
android:name="wrapper"
android:translateX="21"
android:translateY="21">
<group android:name="group">
<path
android:name="path"
android:pathData="M 74.853 85.823 L 75.368 85.823 C 80.735 85.823 85.144 81.803 85.761 76.602 L 85.836 41.76 C 85.225 18.593 66.254 0 42.939 0 C 19.24 0 0.028 19.212 0.028 42.912 C 0.028 66.357 18.831 85.418 42.18 85.823 L 74.853 85.823 Z"
android:strokeWidth="1"/>
<path
android:name="path_1"
android:pathData="M 43.059 14.614 C 29.551 14.614 18.256 24.082 15.445 36.743 C 18.136 37.498 20.109 39.968 20.109 42.899 C 20.109 45.831 18.136 48.301 15.445 49.055 C 18.256 61.716 29.551 71.184 43.059 71.184 C 47.975 71.184 52.599 69.93 56.628 67.723 L 56.628 70.993 L 71.344 70.993 L 71.344 44.072 C 71.357 43.714 71.344 43.26 71.344 42.899 C 71.344 27.278 58.68 14.614 43.059 14.614 Z M 29.51 42.899 C 29.51 35.416 35.576 29.35 43.059 29.35 C 50.541 29.35 56.607 35.416 56.607 42.899 C 56.607 50.382 50.541 56.448 43.059 56.448 C 35.576 56.448 29.51 50.382 29.51 42.899 Z"
android:strokeWidth="1"
android:fillType="evenOdd"/>
<path
android:name="path_2"
android:pathData="M 18.105 42.88 C 18.105 45.38 16.078 47.407 13.579 47.407 C 11.079 47.407 9.052 45.38 9.052 42.88 C 9.052 40.381 11.079 38.354 13.579 38.354 C 16.078 38.354 18.105 40.381 18.105 42.88 Z"
android:strokeWidth="1"/>
</group>
</group>
</vector>
</aapt:attr>
<target android:name="path">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:duration="1000"
android:valueFrom="#00ffffff"
android:valueTo="#161c2d"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
<target android:name="path_1">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:duration="1000"
android:valueFrom="#00ffffff"
android:valueTo="#f9f9fb"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
<target android:name="path_2">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:duration="1000"
android:valueFrom="#00ffffff"
android:valueTo="#f9f9fb"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
</animated-vector>
71 changes: 71 additions & 0 deletions Knossos.NET.Android/Resources/drawable-v31/avalonia_anim.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<animated-vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
<vector
android:name="vector"
android:width="128dp"
android:height="128dp"
android:viewportWidth="128"
android:viewportHeight="128">
<group
android:name="wrapper"
android:translateX="21"
android:translateY="21">
<group android:name="group">
<path
android:name="path"
android:pathData="M 74.853 85.823 L 75.368 85.823 C 80.735 85.823 85.144 81.803 85.761 76.602 L 85.836 41.76 C 85.225 18.593 66.254 0 42.939 0 C 19.24 0 0.028 19.212 0.028 42.912 C 0.028 66.357 18.831 85.418 42.18 85.823 L 74.853 85.823 Z"
android:fillColor="#00ffffff"
android:strokeWidth="1"/>
<path
android:name="path_1"
android:pathData="M 43.059 14.614 C 29.551 14.614 18.256 24.082 15.445 36.743 C 18.136 37.498 20.109 39.968 20.109 42.899 C 20.109 45.831 18.136 48.301 15.445 49.055 C 18.256 61.716 29.551 71.184 43.059 71.184 C 47.975 71.184 52.599 69.93 56.628 67.723 L 56.628 70.993 L 71.344 70.993 L 71.344 44.072 C 71.357 43.714 71.344 43.26 71.344 42.899 C 71.344 27.278 58.68 14.614 43.059 14.614 Z M 29.51 42.899 C 29.51 35.416 35.576 29.35 43.059 29.35 C 50.541 29.35 56.607 35.416 56.607 42.899 C 56.607 50.382 50.541 56.448 43.059 56.448 C 35.576 56.448 29.51 50.382 29.51 42.899 Z"
android:fillColor="#00ffffff"
android:strokeWidth="1"
android:fillType="evenOdd"/>
<path
android:name="path_2"
android:pathData="M 18.105 42.88 C 18.105 45.38 16.078 47.407 13.579 47.407 C 11.079 47.407 9.052 45.38 9.052 42.88 C 9.052 40.381 11.079 38.354 13.579 38.354 C 16.078 38.354 18.105 40.381 18.105 42.88 Z"
android:fillColor="#00ffffff"
android:strokeWidth="1"/>
</group>
</group>
</vector>
</aapt:attr>
<target android:name="path_2">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:startOffset="100"
android:duration="900"
android:valueFrom="#00ffffff"
android:valueTo="#161c2d"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
<target android:name="path">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:duration="500"
android:valueFrom="#00ffffff"
android:valueTo="#f9f9fb"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
<target android:name="path_1">
<aapt:attr name="android:animation">
<objectAnimator
android:propertyName="fillColor"
android:startOffset="100"
android:duration="900"
android:valueFrom="#00ffffff"
android:valueTo="#161c2d"
android:valueType="colorType"
android:interpolator="@android:interpolator/fast_out_slow_in"/>
</aapt:attr>
</target>
</animated-vector>
13 changes: 13 additions & 0 deletions Knossos.NET.Android/Resources/drawable/splash_screen.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
<color android:color="@color/splash_background"/>
</item>

<item android:drawable="@drawable/icon"
android:width="120dp"
android:height="120dp"
android:gravity="center" />

</layer-list>
Loading