mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ad3f98ee6 | ||
|
|
d11c66eea9 | ||
|
|
d6c503f0e9 | ||
|
|
e9a5064e59 | ||
|
|
821dd700ff | ||
|
|
ef7780ffaa | ||
|
|
4ee3f23df8 | ||
|
|
cb1378429f |
@@ -0,0 +1,74 @@
|
|||||||
|
name: generate-android-apk
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate-2ship-otr:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y ninja-build cmake g++ gcc libzip-dev zipcmp zipmerge ziptool
|
||||||
|
- name: Install latest SDL
|
||||||
|
run: |
|
||||||
|
if [ ! -d "SDL2-2.28.5" ]; then
|
||||||
|
wget https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-2.28.5.tar.gz
|
||||||
|
tar -xzf SDL2-2.28.5.tar.gz
|
||||||
|
fi
|
||||||
|
cd SDL2-2.28.5
|
||||||
|
./configure --enable-hidapi-libusb
|
||||||
|
make -j 10
|
||||||
|
sudo make install
|
||||||
|
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
|
||||||
|
- name: Install latest tinyxml2
|
||||||
|
run: |
|
||||||
|
sudo apt-get remove libtinyxml2-dev
|
||||||
|
if [ ! -d "tinyxml2-10.0.0" ]; then
|
||||||
|
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
|
||||||
|
tar -xzf 10.0.0.tar.gz
|
||||||
|
fi
|
||||||
|
cd tinyxml2-10.0.0
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
sudo make install
|
||||||
|
- name: Generate 2ship.o2r
|
||||||
|
run: |
|
||||||
|
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
|
||||||
|
cmake --build build-cmake --config Release --target Generate2ShipOtr -j3
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: 2ship.o2r
|
||||||
|
path: 2ship.o2r
|
||||||
|
retention-days: 1
|
||||||
|
|
||||||
|
build-android:
|
||||||
|
needs: generate-2ship-otr
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Install dependencies
|
||||||
|
run: sudo apt-get install -y ninja-build
|
||||||
|
- name: Download 2ship.o2r
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: 2ship.o2r
|
||||||
|
path: Android/app/src/main/assets
|
||||||
|
- name: Build 2Ship APK
|
||||||
|
run: |
|
||||||
|
cd Android/
|
||||||
|
./gradlew assembleDebug -P elfBuildType=RelWithDebInfo
|
||||||
|
mv app/build/outputs/apk/debug/app-debug.apk ../2ship.apk
|
||||||
|
- name: Upload APK artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: 2ship-apk
|
||||||
|
path: 2ship.apk
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
name: generate-builds
|
name: generate-builds
|
||||||
on:
|
on:
|
||||||
push:
|
# push:
|
||||||
pull_request:
|
# pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
@@ -380,3 +381,29 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: 2ship-windows
|
name: 2ship-windows
|
||||||
path: 2ship-windows
|
path: 2ship-windows
|
||||||
|
|
||||||
|
build-android:
|
||||||
|
needs: generate-2ship-otr
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Install dependencies
|
||||||
|
run: sudo apt-get install -y ninja-build
|
||||||
|
- name: Download 2ship.o2r
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: 2ship.o2r
|
||||||
|
path: Android/app/src/main/assets
|
||||||
|
- name: Build 2Ship
|
||||||
|
run: |
|
||||||
|
cd Android/
|
||||||
|
./gradlew assembleDebug -P elfBuildType=RelWithDebInfo
|
||||||
|
mv app/build/outputs/apk/debug/app-debug.apk ../2ship.apk
|
||||||
|
- name: Create release
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
with:
|
||||||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
tag: ${{ github.ref }}
|
||||||
|
file: 2ship.apk
|
||||||
|
|||||||
@@ -67,3 +67,6 @@ _packages/
|
|||||||
/mm/src/boot/build.c
|
/mm/src/boot/build.c
|
||||||
/mm/windows/properties.h
|
/mm/windows/properties.h
|
||||||
/clang-format.exe
|
/clang-format.exe
|
||||||
|
|
||||||
|
# IntelliJ / Android Studio
|
||||||
|
.idea
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[submodule "libultraship"]
|
[submodule "libultraship"]
|
||||||
path = libultraship
|
path = libultraship
|
||||||
url = https://github.com/Waterdish/libultraship.git
|
url = https://github.com/robertkirkman/libultraship.git
|
||||||
[submodule "OTRExporter"]
|
[submodule "OTRExporter"]
|
||||||
path = OTRExporter
|
path = OTRExporter
|
||||||
url = https://github.com/Waterdish/OTRExporter.git
|
url = https://github.com/Waterdish/OTRExporter.git
|
||||||
|
|||||||
+23
-25
@@ -1,4 +1,4 @@
|
|||||||
def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY');
|
def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY')
|
||||||
def buildAsApplication = !buildAsLibrary
|
def buildAsApplication = !buildAsLibrary
|
||||||
if (buildAsApplication) {
|
if (buildAsApplication) {
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
@@ -8,25 +8,21 @@ else {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
ndkPath "/home/waterdish/Android/Sdk/ndk/26.0.10792818" // Point to your own NDK
|
ndkVersion '27.2.12479018'
|
||||||
compileSdkVersion 31
|
compileSdkVersion 34
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
if (buildAsApplication) {
|
if (buildAsApplication) {
|
||||||
applicationId "com.dishii.mm"
|
applicationId "com.dishii.mm"
|
||||||
}
|
}
|
||||||
minSdkVersion 24
|
minSdkVersion 21
|
||||||
targetSdkVersion 31
|
//noinspection OldTargetApi
|
||||||
|
targetSdkVersion 34
|
||||||
versionCode 4
|
versionCode 4
|
||||||
versionName "1.1.1"
|
versionName "1.1.1"
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
//ndkBuild {
|
|
||||||
// arguments "APP_PLATFORM=android-23"
|
|
||||||
// abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
|
||||||
//}
|
|
||||||
cmake {
|
cmake {
|
||||||
arguments "-DSDL_SHARED=ON", "-DANDROID_STL=c++_static", "-DHAVE_LD_VERSION_SCRIPT=OFF",'-DUSE_OPENGLES=ON'
|
arguments "-DANDROID_APPNAME=${applicationId}", "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DHAVE_LD_VERSION_SCRIPT=OFF", "-DUSE_OPENGLES=ON", "-DCMAKE_BUILD_TYPE=$elfBuildType"
|
||||||
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
||||||
//abiFilters 'arm64-v8a'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,9 +30,17 @@ android {
|
|||||||
release {
|
release {
|
||||||
minifyEnabled false
|
minifyEnabled false
|
||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
|
signingConfig signingConfigs.debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
applicationVariants.all { variant ->
|
buildFeatures {
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
namespace 'com.dishii.mm'
|
||||||
|
lint {
|
||||||
|
abortOnError false
|
||||||
|
}
|
||||||
|
applicationVariants.configureEach { variant ->
|
||||||
tasks["merge${variant.name.capitalize()}Assets"]
|
tasks["merge${variant.name.capitalize()}Assets"]
|
||||||
.dependsOn("externalNativeBuild${variant.name.capitalize()}")
|
.dependsOn("externalNativeBuild${variant.name.capitalize()}")
|
||||||
}
|
}
|
||||||
@@ -45,26 +49,20 @@ android {
|
|||||||
jniLibs.srcDir 'libs'
|
jniLibs.srcDir 'libs'
|
||||||
}
|
}
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
//ndkBuild {
|
|
||||||
// path 'jni/Android.mk'
|
|
||||||
//}
|
|
||||||
cmake {
|
cmake {
|
||||||
path '../../CMakeLists.txt'
|
path '../../CMakeLists.txt'
|
||||||
version "3.25.1"
|
version "3.31.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
lintOptions {
|
|
||||||
abortOnError false
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buildAsLibrary) {
|
if (buildAsLibrary) {
|
||||||
libraryVariants.all { variant ->
|
libraryVariants.all { variant ->
|
||||||
variant.outputs.each { output ->
|
variant.outputs.each { output ->
|
||||||
def outputFile = output.outputFile
|
def outputFile = output.outputFile
|
||||||
if (outputFile != null && outputFile.name.endsWith(".aar")) {
|
if (outputFile != null && outputFile.name.endsWith(".aar")) {
|
||||||
def fileName = "org.libsdl.app.aar";
|
def fileName = "com.dishii.mm.aar"
|
||||||
output.outputFile = new File(outputFile.parent, fileName);
|
output.outputFile = new File(outputFile.parent, fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,13 +72,13 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
implementation 'androidx.core:core:1.7.0' // Use the latest version
|
implementation 'androidx.core:core:1.13.1'
|
||||||
|
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
task wrapper(type: Wrapper) {
|
tasks.register('wrapper', Wrapper) {
|
||||||
gradleVersion = '7.0.3'
|
gradleVersion = '8.10.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
task prepareKotlinBuildScriptModel {
|
tasks.register('prepareKotlinBuildScriptModel') {
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Binary file not shown.
@@ -1,5 +0,0 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
com.gamemaker.game
|
com.gamemaker.game
|
||||||
-->
|
-->
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.dishii.mm"
|
|
||||||
android:versionCode="4"
|
android:versionCode="4"
|
||||||
android:versionName="1.1.1"
|
android:versionName="1.1.1"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
@@ -54,8 +53,8 @@
|
|||||||
<!-- Allow access to the vibrator -->
|
<!-- Allow access to the vibrator -->
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||||
|
|
||||||
<!-- if you want to capture audio, uncomment this. -->
|
<!-- if you want to capture audio, uncomment this. -->
|
||||||
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
|
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
|
||||||
@@ -73,7 +72,8 @@
|
|||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:appCategory="game" >
|
android:appCategory="game"
|
||||||
|
android:requestLegacyExternalStorage="true">
|
||||||
|
|
||||||
|
|
||||||
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
<!-- Example of setting SDL hints from AndroidManifest.xml:
|
||||||
@@ -84,7 +84,6 @@
|
|||||||
|
|
||||||
|
|
||||||
<activity android:name="MainActivity"
|
<activity android:name="MainActivity"
|
||||||
android:label="@string/app_name"
|
|
||||||
android:alwaysRetainTaskState="true"
|
android:alwaysRetainTaskState="true"
|
||||||
android:launchMode="singleInstance"
|
android:launchMode="singleInstance"
|
||||||
android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
|
android:configChanges="layoutDirection|locale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
# Extractor Assets Copied by CMake during buildtime
|
# Extractor Assets Copied by CMake during buildtime
|
||||||
assets/
|
assets/
|
||||||
|
mods/
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.dishii.mm;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.AssetManager;
|
import android.content.res.AssetManager;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -9,53 +11,70 @@ import java.io.InputStream;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
public class AssetCopyUtil {
|
public class AssetCopyUtil {
|
||||||
|
// based on https://stackoverflow.com/a/8366081/11708026
|
||||||
public static void copyAssetsToExternal(Context context, String assetsFolderPath, String externalFolderPath) throws IOException {
|
// This is desirable because it bulk copies all assets indiscriminately, simplifying the code in MainActivity
|
||||||
AssetManager assetManager = context.getAssets();
|
// the side effect is that, some people will see strange, unidentifiable files appearing in their destination folder.
|
||||||
String[] assetFiles = assetManager.list(assetsFolderPath);
|
// those extra files do not come from the app itself. They originate from something inside the Android ROM
|
||||||
|
// of the device they are using, and can be observed to vary between different models of devices.
|
||||||
for (String assetFile : assetFiles) {
|
public static void copyAssetsToExternal(Context context, String externalFolderPath) {
|
||||||
String assetPath = assetsFolderPath + File.separator + assetFile;
|
externalFolderPath = externalFolderPath + "/";
|
||||||
String externalPath = externalFolderPath + File.separator + assetFile;
|
copyFileOrDir(context, "", externalFolderPath); // copy all files in assets folder to the destination
|
||||||
|
|
||||||
if (assetManager.list(assetPath).length > 0) {
|
|
||||||
// It's a directory
|
|
||||||
// Check if the directory exists in the external storage
|
|
||||||
File externalDir = new File(externalPath);
|
|
||||||
if (!externalDir.exists()) {
|
|
||||||
externalDir.mkdirs(); // Create the directory if it doesn't exist
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recursively copy contents of the directory
|
private static void copyFileOrDir(Context context, String srcpath, String destpath) {
|
||||||
copyAssetsToExternal(context, assetPath, externalPath);
|
AssetManager assetManager = context.getAssets();
|
||||||
|
String assets[] = null;
|
||||||
|
String tag = "AssetCopyUtil";
|
||||||
|
try {
|
||||||
|
Log.i(tag, "copyFileOrDir() " + srcpath);
|
||||||
|
assets = assetManager.list(srcpath);
|
||||||
|
if (assets.length == 0) {
|
||||||
|
copyFile(context, srcpath, destpath);
|
||||||
} else {
|
} else {
|
||||||
// It's a file
|
String fullPath = destpath + srcpath;
|
||||||
File externalFile = new File(externalPath);
|
Log.i(tag, "path=" + fullPath);
|
||||||
if (!externalFile.exists()) {
|
File dir = new File(fullPath);
|
||||||
// Check if the file exists in the external storage
|
if (!dir.exists())
|
||||||
|
if (!dir.mkdirs())
|
||||||
|
Log.i(tag, "could not create dir " + fullPath);
|
||||||
|
for (int i = 0; i < assets.length; ++i) {
|
||||||
|
String p;
|
||||||
|
if (srcpath.isEmpty())
|
||||||
|
p = "";
|
||||||
|
else
|
||||||
|
p = srcpath + "/";
|
||||||
|
copyFileOrDir(context,p + assets[i], destpath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException ex) {
|
||||||
|
Log.e(tag, "I/O Exception", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void copyFile(Context context, String filename, String destpath) {
|
||||||
|
AssetManager assetManager = context.getAssets();
|
||||||
InputStream in = null;
|
InputStream in = null;
|
||||||
OutputStream out = null;
|
OutputStream out = null;
|
||||||
|
String newFileName = null;
|
||||||
|
String tag = "AssetCopyUtil";
|
||||||
try {
|
try {
|
||||||
in = assetManager.open(assetPath);
|
Log.i(tag, "copyFile() " + filename);
|
||||||
out = new FileOutputStream(externalPath);
|
in = assetManager.open(filename);
|
||||||
|
newFileName = destpath + filename;
|
||||||
|
out = new FileOutputStream(newFileName);
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
int read;
|
int read;
|
||||||
while ((read = in.read(buffer)) != -1) {
|
while ((read = in.read(buffer)) != -1) {
|
||||||
out.write(buffer, 0, read);
|
out.write(buffer, 0, read);
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
|
||||||
if (in != null) {
|
|
||||||
in.close();
|
in.close();
|
||||||
}
|
in = null;
|
||||||
if (out != null) {
|
out.flush();
|
||||||
out.close();
|
out.close();
|
||||||
}
|
out = null;
|
||||||
}
|
} catch (Exception e) {
|
||||||
}
|
Log.e(tag, "Exception in copyFile() of " + newFileName);
|
||||||
}
|
Log.e(tag, "Exception in copyFile() " + e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.dishii.mm;
|
||||||
|
|
||||||
|
public class ControllerButtons {
|
||||||
|
// Xbox Buttons
|
||||||
|
public static final int BUTTON_A = 0;
|
||||||
|
public static final int BUTTON_B = 1;
|
||||||
|
public static final int BUTTON_X = 2;
|
||||||
|
public static final int BUTTON_Y = 3;
|
||||||
|
public static final int BUTTON_LB = 9; // Left Bumper
|
||||||
|
public static final int BUTTON_RB = -5; // Right Bumper
|
||||||
|
public static final int BUTTON_BACK = 4;
|
||||||
|
public static final int BUTTON_START = 6;
|
||||||
|
public static final int BUTTON_DPAD_UP = 11;
|
||||||
|
public static final int BUTTON_DPAD_DOWN = 12;
|
||||||
|
public static final int BUTTON_DPAD_LEFT = 13;
|
||||||
|
public static final int BUTTON_DPAD_RIGHT = 14;
|
||||||
|
|
||||||
|
// Xbox Axis (Joysticks and Triggers)
|
||||||
|
public static final int AXIS_LX = 0; // Left stick X
|
||||||
|
public static final int AXIS_LY = 1; // Left stick Y
|
||||||
|
public static final int AXIS_RX = 2; // Right stick X
|
||||||
|
public static final int AXIS_RY = 3; // Right stick Y
|
||||||
|
public static final int AXIS_LT = -2; // Left Trigger (negative axis)
|
||||||
|
public static final int AXIS_RT = -4; // Right Trigger (negative axis)
|
||||||
|
}
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -60,8 +60,8 @@ import java.util.Locale;
|
|||||||
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
|
||||||
private static final String TAG = "SDL";
|
private static final String TAG = "SDL";
|
||||||
private static final int SDL_MAJOR_VERSION = 2;
|
private static final int SDL_MAJOR_VERSION = 2;
|
||||||
private static final int SDL_MINOR_VERSION = 30;
|
private static final int SDL_MINOR_VERSION = 32;
|
||||||
private static final int SDL_MICRO_VERSION = 5;
|
private static final int SDL_MICRO_VERSION = 0;
|
||||||
/*
|
/*
|
||||||
// Display InputType.SOURCE/CLASS of events and devices
|
// Display InputType.SOURCE/CLASS of events and devices
|
||||||
//
|
//
|
||||||
@@ -89,7 +89,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
| InputDevice.SOURCE_CLASS_POSITION
|
| InputDevice.SOURCE_CLASS_POSITION
|
||||||
| InputDevice.SOURCE_CLASS_TRACKBALL);
|
| InputDevice.SOURCE_CLASS_TRACKBALL);
|
||||||
|
|
||||||
if (s2 != 0) cls += "Some_Unkown";
|
if (s2 != 0) cls += "Some_Unknown";
|
||||||
|
|
||||||
s2 = s_copy & InputDevice.SOURCE_ANY; // keep source only, no class;
|
s2 = s_copy & InputDevice.SOURCE_ANY; // keep source only, no class;
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
if (s == FLAG_TAINTED) src += " FLAG_TAINTED";
|
if (s == FLAG_TAINTED) src += " FLAG_TAINTED";
|
||||||
s2 &= ~FLAG_TAINTED;
|
s2 &= ~FLAG_TAINTED;
|
||||||
|
|
||||||
if (s2 != 0) src += " Some_Unkown";
|
if (s2 != 0) src += " Some_Unknown";
|
||||||
|
|
||||||
Log.v(TAG, prefix + "int=" + s_copy + " CLASS={" + cls + " } source(s):" + src);
|
Log.v(TAG, prefix + "int=" + s_copy + " CLASS={" + cls + " } source(s):" + src);
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
// "SDL2_mixer",
|
// "SDL2_mixer",
|
||||||
// "SDL2_net",
|
// "SDL2_net",
|
||||||
// "SDL2_ttf",
|
// "SDL2_ttf",
|
||||||
"2ship"
|
"main"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -790,6 +790,9 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
SDLActivity.mFullscreenModeActive = false;
|
SDLActivity.mFullscreenModeActive = false;
|
||||||
}
|
}
|
||||||
|
if (Build.VERSION.SDK_INT >= 28 /* Android 9 (Pie) */) {
|
||||||
|
window.getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "error handling message, getContext() returned no Activity");
|
Log.e(TAG, "error handling message, getContext() returned no Activity");
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- Pressed state -->
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape android:shape="oval">
|
||||||
|
<solid android:color="#10FFFFFF" /> <!-- Darker color when pressed -->
|
||||||
|
<stroke
|
||||||
|
android:width="2.5dp"
|
||||||
|
android:color="#20FFFFFF" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Default state -->
|
||||||
|
<item>
|
||||||
|
<shape android:shape="oval">
|
||||||
|
<solid android:color="#20FFFFFF" />
|
||||||
|
<stroke
|
||||||
|
android:width="2.5dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<vector android:alpha="1.0" android:height="221.78dp"
|
||||||
|
android:viewportHeight="221.78" android:viewportWidth="221.78"
|
||||||
|
android:width="221.78dp"
|
||||||
|
xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillAlpha="1.0"
|
||||||
|
android:fillColor="#20FFFFFF"
|
||||||
|
android:pathData="M221.78,87.07v47.64a11.53,11.53 0,0 1,-11.5 11.5H151.62a5.42,5.42 0,0 0,-5.41 5.41v58.66a11.53,11.53 0,0 1,-11.5 11.5H87.07a11.53,11.53 0,0 1,-11.5 -11.5V151.61a5.41,5.41 0,0 0,-5.41 -5.41H11.5A11.53,11.53 0,0 1,0 134.7V87.05a11.53,11.53 0,0 1,11.5 -11.5H70.16a5.41,5.41 0,0 0,5.41 -5.41V11.5A11.53,11.53 0,0 1,87.07 0h47.64a11.53,11.53 0,0 1,11.5 11.5V70.16a5.41,5.41 0,0 0,5.41 5.41h58.66A11.53,11.53 0,0 1,221.78 87.07Z"
|
||||||
|
android:strokeWidth="2.5"
|
||||||
|
android:strokeColor="#25FFFFFF"
|
||||||
|
android:strokeAlpha="1.0" />
|
||||||
|
<path android:fillColor="#25FFFFFF" android:fillAlpha="1.0"
|
||||||
|
android:pathData="M195.47,110.32l-16.26,-9.38a0.65,0.65 0,0 0,-1 0.56v18.78a0.66,0.66 0,0 0,1 0.57l16.26,-9.39A0.66,0.66 0,0 0,195.47 110.32Z" />
|
||||||
|
<path android:fillColor="#25FFFFFF" android:fillAlpha="1.0"
|
||||||
|
android:pathData="M26.31,110.32l16.26,-9.38a0.65,0.65 0,0 1,1 0.56v18.78a0.66,0.66 0,0 1,-1 0.57l-16.26,-9.39A0.66,0.66 0,0 1,26.31 110.32Z" />
|
||||||
|
<path android:fillColor="#25FFFFFF" android:fillAlpha="1.0"
|
||||||
|
android:pathData="M110.32,26.31l-9.38,16.26a0.65,0.65 0,0 0,0.56 1h18.78a0.66,0.66 0,0 0,0.57 -1l-9.39,-16.26A0.66,0.66 0,0 0,110.32 26.31Z" />
|
||||||
|
<path android:fillColor="#25FFFFFF" android:fillAlpha="1.0"
|
||||||
|
android:pathData="M110.32,195.47l-9.38,-16.26a0.65,0.65 0,0 1,0.56 -1h18.78a0.66,0.66 0,0 1,0.57 1l-9.39,16.26A0.66,0.66 0,0 1,110.32 195.47Z" />
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- Pressed state -->
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#10FFFFFF" /> <!-- Darker color when pressed -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners android:radius="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Default state -->
|
||||||
|
<item>
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#20FFFFFF" /> <!-- Default color -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners android:radius="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<path
|
||||||
|
android:fillColor="#20FFFFFF"
|
||||||
|
android:pathData="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" />
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item>
|
||||||
|
<shape android:shape="oval">
|
||||||
|
<solid android:color="#10FFFFFF" />
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<padding
|
||||||
|
android:bottom="10dp"
|
||||||
|
android:left="10dp"
|
||||||
|
android:right="10dp"
|
||||||
|
android:top="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="oval">
|
||||||
|
<solid android:color="#30000000" />
|
||||||
|
<size
|
||||||
|
android:width="30dp"
|
||||||
|
android:height="30dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- Pressed state -->
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#10FFFFFF" /> <!-- Darker color when pressed -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="10dp"
|
||||||
|
android:bottomRightRadius="10dp"
|
||||||
|
android:topLeftRadius="50dp"
|
||||||
|
android:topRightRadius="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Default state -->
|
||||||
|
<item>
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#20FFFFFF" /> <!-- Default color -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="10dp"
|
||||||
|
android:bottomRightRadius="10dp"
|
||||||
|
android:topLeftRadius="50dp"
|
||||||
|
android:topRightRadius="10dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- Pressed state -->
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#10FFFFFF" /> <!-- Darker color when pressed -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="10dp"
|
||||||
|
android:bottomRightRadius="10dp"
|
||||||
|
android:topLeftRadius="10dp"
|
||||||
|
android:topRightRadius="50dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<!-- Default state -->
|
||||||
|
<item>
|
||||||
|
<layer-list>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#20FFFFFF" /> <!-- Default color -->
|
||||||
|
<stroke
|
||||||
|
android:width="2dp"
|
||||||
|
android:color="#25FFFFFF" />
|
||||||
|
<size
|
||||||
|
android:width="25dp"
|
||||||
|
android:height="25dp" />
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="10dp"
|
||||||
|
android:bottomRightRadius="10dp"
|
||||||
|
android:topLeftRadius="10dp"
|
||||||
|
android:topRightRadius="50dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user