From 35400851ca1a515828341b7d23136c01c28bf078 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Fri, 10 Aug 2018 23:39:59 +0300 Subject: [PATCH] XMoto: added submodule and project file, it does not compile yet --- .gitmodules | 4 + .../application/xmoto/AndroidAppSettings.cfg | 316 ++++++++++++++++++ project/jni/application/xmoto/icon.png | Bin 0 -> 24007 bytes project/jni/application/xmoto/src | 1 + 4 files changed, 321 insertions(+) create mode 100644 project/jni/application/xmoto/AndroidAppSettings.cfg create mode 100644 project/jni/application/xmoto/icon.png create mode 160000 project/jni/application/xmoto/src diff --git a/.gitmodules b/.gitmodules index 23fb5e31d..7e061520d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -76,3 +76,7 @@ path = project/jni/application/openlierox/src url = https://github.com/albertz/openlierox.git branch = half-assed-android-port +[submodule "project/jni/application/xmoto/src"] + path = project/jni/application/xmoto/src + url = https://github.com/pelya/xmoto.git + branch = android diff --git a/project/jni/application/xmoto/AndroidAppSettings.cfg b/project/jni/application/xmoto/AndroidAppSettings.cfg new file mode 100644 index 000000000..6096d1006 --- /dev/null +++ b/project/jni/application/xmoto/AndroidAppSettings.cfg @@ -0,0 +1,316 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="XMoto" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=openlierox.net + +# Application version code (integer) +AppVersionCode=051201 + +# Application user-visible version name (string) +AppVersionName="0.5.12-01" + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# You can specify Google Play expansion files in the form 'obb:main.12345' or 'obb:patch.12345' where 12345 is the app version, first associated with the file +AppDataDownloadUrl="!!Game data|xmoto.zip.xz" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='This game is best played with a gamepad. Two-player mode requires two gamepads. Tap the screen to dig.^tv:' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) +VideoDepthBpp=24 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) +NeedStencilBuffer=n + +# Use GLES 2.x context +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles2=n + +# Use GLES 3.x context +# you need this option only if you're developing 3-d app (y) or (n) +NeedGles3=n + +# Use gl4es library for provide OpenGL 1.x functionality to OpenGL ES accelerated cards (y) or (n) +UseGl4es= + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) +SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) +SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) +SdlVideoResizeKeepAspect=n + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) +CompatibilityHacksForceScreenUpdate=n + +# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) - +# force screen update by moving mouse cursor a little after each click (y) or (n) +CompatibilityHacksForceScreenUpdateMouseClick=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Built-in text input keyboards with custom layouts for emulators, requires CompatibilityHacksTextInputEmulatesHwKeyboard=y +# 0 or empty - standard Android keyboard +# 1 - Simple QWERTY keyboard, no function keys, no arrow keys +# 2 - Commodore 64 keyboard +# 3 - Amiga keyboard +# 4 - Atari800 keyboard +TextInputKeyboard= + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=n + +# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=y + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) +AppNeedsTwoButtonMouse=n + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress=n + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Screen follows mouse cursor, when it's covered by soft keyboard, this works only in software video mode (y) or (n) +ScreenFollowsMouse=n + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents=n + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Show on-screen dpad/joystick, that will act as arrow keys (y) or (n) +AppNeedsArrowKeys=y + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick=n + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +# This will disable AppNeedsArrowKeys option +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses orientation sensor (y) or (n), reported as joystick 1 axes 8-10 +AppUsesOrientationSensor=n + +# Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting +MoveMouseWithGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application needs to access SD card. Always disable it, unless you want to access user photos and downloads. (y) / (n) +AccessSdCard=n + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet=y + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode=y + +# Hide Android system mouse cursor image when USB mouse is attached (y) or (n) - the app must draw it's own mouse cursor +HideSystemMousePointer=y + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state +NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA +RedefinedKeys="SPACE RETURN NO_REMAP NO_REMAP" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=4 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="KP5 KP8 SPACE TAB" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="Drive Brake Direction Inspect" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with cross joystick) +# 1 = Simple Theme by Beholder (white, with cross joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +# 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch +TouchscreenKeysTheme=3 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y L1 R1 L2 R2 LThumb RThumb Start Select Up Down Left Right +RedefinedKeysGamepad="KP5 KP8 SPACE TAB KP5 KP8 KP5 KP8 RETURN RETURN ESCAPE ESCAPE UP DOWN LEFT RIGHT UP DOWN LEFT RIGHT UP DOWN LEFT RIGHT" + +# Redefine keys for the second gamepad, same as the first gamepad if not set: +RedefinedKeysSecondGamepad="" + +# Redefine keys for the third gamepad, same as the first gamepad if not set: +RedefinedKeysThirdGamepad="" + +# Redefine keys for the fourth gamepad, same as the first gamepad if not set: +RedefinedKeysFourthGamepad="" + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=1000 + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.CommandlineConfig SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout SettingsMenuKeyboard.ScreenKeyboardAdvanced +FirstStartMenuOptions='SettingsMenuMisc.ShowReadme' + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=0 + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Android platform version. +# android-9 = Android 2.3, the earliest supported version. +# android-18 = Android 4.3, the first version supporting GLES3. +# android-21 = Android 5.1, the first version with SO_REUSEPORT defined. +APP_PLATFORM=android-21 + +# Specify architectures to compile, 'all' or 'y' to compile for all architectures. +# Available architectures: armeabi armeabi-v7a x86 mips arm64-v8a +MultiABI='armeabi-v7a' # arm64-v8a x86 x86_64 + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="sdl_image sdl_mixer sdl_net sdl_ttf lua freetype curl xml2 sqlite3 intl jpeg png vorbis ogg lzma" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=n + +# Aditional CFLAGS for application +AppCflags='-O3 -Werror=format -fpermissive -DALLOW_DEV=0 -DCONFIGURE_DEFAULT_THEME=\\"Modern\\" -DDEFAULT_ASIAN_TTF_FILE=\\"xmoto/Textures/Fonts/bkai00mp.ttf\\" -DHAVE_SETENV=1 -DMS_MKDIR=0 -DSVN_REV=\\"git\\" -DUSE_GETTEXT=1 -DUSE_OPENGL=1 -DUSE_SDLGFX=0 -DdDOUBLE' + +# Aditional C++-specific compiler flags for application, added after AppCflags +AppCppflags='-O3 -Werror=format -fpermissive -std=gnu++11 -fexceptions -frtti -DALLOW_DEV=0 -DCONFIGURE_DEFAULT_THEME=\\"Modern\\" -DDEFAULT_ASIAN_TTF_FILE=\\"xmoto/Textures/Fonts/bkai00mp.ttf\\" -DHAVE_SETENV=1 -DMS_MKDIR=0 -DSVN_REV=\\"git\\" -DUSE_GETTEXT=1 -DUSE_OPENGL=1 -DUSE_SDLGFX=0 -DdDOUBLE' + +# Additional LDFLAGS for application +AppLdflags='-O3' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders=n + +# Build only following subdirs (empty will build all dirs, ignored with custom script) +AppSubdirsBuild='src/src/* src/vendor/bzip2 src/vendor/chipmunk src/vendor/libccd/* src/vendor/md5sum/* src/vendor/ode/* src/vendor/xdgbasedir/*' + +# Exclude these files from build +AppBuildExclude='src/src/helpers/HighPrecisionTimerWin32.cpp' + +# Application command line parameters, including app name as 0-th param +AppCmdline='' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=n + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/FULL_BANNER/LEADERBOARD/MEDIUM_RECTANGLE/SMART_BANNER/WIDE_SKYSCRAPER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +GooglePlayGameServicesId= + +# The app will open files with following extension, file path will be added to commandline params +AppOpenFileExtension='' + diff --git a/project/jni/application/xmoto/icon.png b/project/jni/application/xmoto/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd773da173a03cce9ded0898b4987423b798c74 GIT binary patch literal 24007 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 XpI4NBsp;oZ1`zOc^>bP0l+XkK$`>Vl literal 0 HcmV?d00001 diff --git a/project/jni/application/xmoto/src b/project/jni/application/xmoto/src new file mode 160000 index 000000000..b6e269dbf --- /dev/null +++ b/project/jni/application/xmoto/src @@ -0,0 +1 @@ +Subproject commit b6e269dbf454e1a50f9b74b2c4596ae1325372d8