Added ja2-stracciatella build files
This commit is contained in:
262
project/jni/application/ja2/AndroidAppSettings.cfg
Normal file
262
project/jni/application/ja2/AndroidAppSettings.cfg
Normal file
@@ -0,0 +1,262 @@
|
||||
# The application settings for Android libSDL port
|
||||
|
||||
# Specify application name (e.x. My Application)
|
||||
AppName="JaggedAlliance2"
|
||||
|
||||
# Specify reversed site name of application (e.x. com.mysite.myapp)
|
||||
AppFullName=com.opensourced.ja2
|
||||
|
||||
# Application version code (integer)
|
||||
AppVersionCode=2347
|
||||
|
||||
# Application user-visible version name (string)
|
||||
AppVersionName="0.12.10"
|
||||
|
||||
# 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
|
||||
# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS
|
||||
AppDataDownloadUrl="!!JaggedAllianceData|ja2.zip"
|
||||
|
||||
# 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=""
|
||||
|
||||
# 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=''
|
||||
|
||||
# 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=16
|
||||
|
||||
# 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
|
||||
|
||||
# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device
|
||||
# you need this option only if you're developing 3-d app (y) or (n)
|
||||
NeedGles2=n
|
||||
|
||||
# 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=y
|
||||
|
||||
# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
|
||||
CompatibilityHacksStaticInit=
|
||||
|
||||
# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n)
|
||||
CompatibilityHacksTextInputEmulatesHwKeyboard=
|
||||
|
||||
# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)
|
||||
CompatibilityHacksPreventAudioChopping=
|
||||
|
||||
# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)
|
||||
CompatibilityHacksAppIgnoresAudioBufferSize=
|
||||
|
||||
# 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=
|
||||
|
||||
# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL
|
||||
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=
|
||||
|
||||
# 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=y
|
||||
|
||||
# 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=
|
||||
|
||||
# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)
|
||||
ShowMouseCursor=
|
||||
|
||||
# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n)
|
||||
GenerateSubframeTouchEvents=
|
||||
|
||||
# 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=
|
||||
|
||||
# Application needs text input (y) or (n), enables button for text input on screen
|
||||
AppNeedsTextInput=y
|
||||
|
||||
# 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=
|
||||
|
||||
# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7
|
||||
AppUsesAccelerometer=
|
||||
|
||||
# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4
|
||||
AppUsesGyroscope=
|
||||
|
||||
# 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=
|
||||
|
||||
# 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=
|
||||
|
||||
# Application needs to access SD card. If your data files are bigger than 5 Mb, enable it. (y) / (n)
|
||||
AccessSdCard=
|
||||
|
||||
# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n)
|
||||
AccessInternet=
|
||||
|
||||
# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n)
|
||||
ImmersiveMode=
|
||||
|
||||
# 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="LCTRL RETURN KP_PLUS KP_MINUS LCTRL"
|
||||
|
||||
# Number of virtual keyboard keys (currently 6 is maximum)
|
||||
AppTouchscreenKeyboardKeysAmount=5
|
||||
|
||||
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
||||
RedefinedKeysScreenKb="LCTRL RETURN KP_PLUS KP_MINUS LCTRL"
|
||||
|
||||
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
||||
RedefinedKeysScreenKbNames=""
|
||||
|
||||
# On-screen keys theme
|
||||
# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
|
||||
# 1 = Simple Theme by Beholder (white, with gamepad joystick)
|
||||
# 2 = Sun by Sirea (yellow, with round joystick)
|
||||
# 3 = Keen by Gerstrong (multicolor, with round joystick)
|
||||
TouchscreenKeysTheme=2
|
||||
|
||||
# Redefine gamepad keys to SDL keysyms, button order is:
|
||||
# A B X Y L1 R1 L2 R2 LThumb RThumb
|
||||
RedefinedKeysGamepad=""
|
||||
|
||||
# How long to show startup menu button, in msec, 0 to disable startup menu
|
||||
StartupMenuButtonTimeout=3000
|
||||
|
||||
# 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.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'
|
||||
|
||||
# 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.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=''
|
||||
|
||||
# Specify architectures to compile, 'all' or 'y' to compile for all architectures.
|
||||
# Available architectures: armeabi armeabi-v7a armeabi-v7a-hard x86 mips
|
||||
MultiABI='armeabi-v7a'
|
||||
|
||||
# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower
|
||||
AppMinimumRAM=0
|
||||
|
||||
# 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="jpeg png boost_filesystem boost_system"
|
||||
|
||||
# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
|
||||
CustomBuildScript=y
|
||||
|
||||
# Aditional CFLAGS for application
|
||||
AppCflags=''
|
||||
|
||||
# Additional LDFLAGS for application
|
||||
AppLdflags=''
|
||||
|
||||
# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
|
||||
AppOverlapsSystemHeaders=
|
||||
|
||||
# Build only following subdirs (empty will build all dirs, ignored with custom script)
|
||||
AppSubdirsBuild=''
|
||||
|
||||
# Exclude these files from build
|
||||
AppBuildExclude=''
|
||||
|
||||
# Application command line parameters, including app name as 0-th param
|
||||
AppCmdline='ja2 -resversion ENGLISH'
|
||||
|
||||
# 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=
|
||||
|
||||
# Your AdMob Publisher ID, (n) if you don't want advertisements
|
||||
AdmobPublisherId=
|
||||
|
||||
# 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=
|
||||
|
||||
8
project/jni/application/ja2/AndroidBuild.sh
Executable file
8
project/jni/application/ja2/AndroidBuild.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -e src-$1 ] || {
|
||||
git clone --depth 1 https://bitbucket.org/gennady/ja2-stracciatella.git src-$1 || exit 1
|
||||
patch -p1 -d src-$1 < ja2.patch || exit 1
|
||||
} || exit 1
|
||||
|
||||
../setEnvironment-$1.sh sh -c "make -j4 -C src-$1 WITH_LPTHREAD=0" && cp -f src-$1/ja2 libapplication-$1.so
|
||||
BIN
project/jni/application/ja2/AndroidData/ja2.zip
Normal file
BIN
project/jni/application/ja2/AndroidData/ja2.zip
Normal file
Binary file not shown.
BIN
project/jni/application/ja2/icon.png
Normal file
BIN
project/jni/application/ja2/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
516
project/jni/application/ja2/ja2.patch
Normal file
516
project/jni/application/ja2/ja2.patch
Normal file
@@ -0,0 +1,516 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index a21c6b5..8a65a69 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -55,7 +55,7 @@ endif
|
||||
endif
|
||||
|
||||
CFLAGS += $(CFLAGS_SDL)
|
||||
-LDFLAGS += $(LDFLAGS_SDL)
|
||||
+LDFLAGS += $(LDFLAGS_SDL) -lboost_filesystem -lboost_system
|
||||
|
||||
############################################################
|
||||
# MinGW settings for building on Windows and for
|
||||
@@ -98,7 +98,8 @@ CFLAGS += -I Build/Utils
|
||||
CFLAGS += -I sgp
|
||||
CFLAGS += -I src
|
||||
CFLAGS += -I _build/lib-MicroIni/include
|
||||
-CFLAGS += -I _build/lib-boost
|
||||
+#CFLAGS += -I _build/lib-boost
|
||||
+CFLAGS += -I ../../../boost/include
|
||||
CFLAGS += -I _build/lib-rapidjson
|
||||
CFLAGS += -I _build/lib-slog
|
||||
CFLAGS += -I _build/lib-smacker/libsmacker
|
||||
@@ -522,15 +523,15 @@ SRCS += _build/lib-MicroIni/src/MicroIni/Line.cpp
|
||||
SRCS += _build/lib-MicroIni/src/MicroIni/Section.cpp
|
||||
SRCS += _build/lib-MicroIni/src/MicroIni/Value.cpp
|
||||
|
||||
-SRCS += _build/lib-boost/libs/system/src/error_code.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/codecvt_error_category.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/operations.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/path.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/path_traits.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/portability.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/unique_path.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/utf8_codecvt_facet.cpp
|
||||
-SRCS += _build/lib-boost/libs/filesystem/src/windows_file_codecvt.cpp
|
||||
+#SRCS += _build/lib-boost/libs/system/src/error_code.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/codecvt_error_category.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/operations.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/path.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/path_traits.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/portability.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/unique_path.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/utf8_codecvt_facet.cpp
|
||||
+#SRCS += _build/lib-boost/libs/filesystem/src/windows_file_codecvt.cpp
|
||||
|
||||
SRCS += _build/lib-slog/slog/slog.c
|
||||
|
||||
diff --git a/_build/lib-slog/slog/slog.c b/_build/lib-slog/slog/slog.c
|
||||
index 87ceb53..3799dbc 100644
|
||||
--- a/_build/lib-slog/slog/slog.c
|
||||
+++ b/_build/lib-slog/slog/slog.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
+#include <android/log.h>
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
/* Visual Studio */
|
||||
@@ -152,6 +153,8 @@ void SLOG_LogMessage(SLOGLevel level, const char *tag, const char *format, ...)
|
||||
|
||||
buf[size] = 0;
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_INFO, "JA2", "%s", buf);
|
||||
+
|
||||
if(logToConsole)
|
||||
{
|
||||
write(s_consoleFD, buf, size);
|
||||
diff --git a/ja2config.h b/ja2config.h
|
||||
index cb3f1f9..d2659ec 100644
|
||||
--- a/ja2config.h
|
||||
+++ b/ja2config.h
|
||||
@@ -1,3 +1,3 @@
|
||||
/* location of externalized data, mods, unittests files, etc */
|
||||
/* when empty - the same directory as ja2 binary */
|
||||
-#define EXTRA_DATA_DIR ""
|
||||
+#define EXTRA_DATA_DIR "."
|
||||
diff --git a/sgp/Debug.cc b/sgp/Debug.cc
|
||||
index 3ce95c3..c9c00f1 100644
|
||||
--- a/sgp/Debug.cc
|
||||
+++ b/sgp/Debug.cc
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "Debug.h"
|
||||
+#include "Logger.h"
|
||||
|
||||
#if defined ( SGP_DEBUG ) || defined ( FORCE_ASSERTS_ON )
|
||||
|
||||
@@ -38,8 +39,9 @@ BOOLEAN InitializeDebugManager(void)
|
||||
|
||||
void DebugMsg(TopicID uiTopicId, DebugLevel uiDebugLevel, const char* strMessage)
|
||||
{
|
||||
- fprintf(stderr, "%s\n", strMessage);
|
||||
+ printf("%s\n", strMessage);
|
||||
|
||||
+/*
|
||||
//add _NO_DEBUG_TXT to your SGP preprocessor definitions to avoid this f**king huge file from
|
||||
//slowly growing behind the scenes!!!!
|
||||
#ifndef _NO_DEBUG_TXT
|
||||
@@ -50,6 +52,7 @@ void DebugMsg(TopicID uiTopicId, DebugLevel uiDebugLevel, const char* strMessage
|
||||
fclose(OutFile);
|
||||
}
|
||||
#endif
|
||||
+*/
|
||||
}
|
||||
|
||||
|
||||
@@ -67,9 +70,8 @@ static void _DebugRecordToDebugger(BOOLEAN gfState)
|
||||
|
||||
void _DebugMessage(const char* pString, UINT32 uiLineNum, const char* pSourceFile)
|
||||
{
|
||||
- char ubOutputString[512];
|
||||
- sprintf(ubOutputString, "{ %ld } %s [Line %d in %s]\n", GetClock(), pString, uiLineNum, pSourceFile);
|
||||
-
|
||||
+ printf("{ %ld } %s [Line %d in %s]\n", GetClock(), pString, uiLineNum, pSourceFile);
|
||||
+/*
|
||||
if (gfRecordToDebugger)
|
||||
{
|
||||
fputs(ubOutputString, stderr);
|
||||
@@ -86,17 +88,17 @@ void _DebugMessage(const char* pString, UINT32 uiLineNum, const char* pSourceFil
|
||||
}
|
||||
}
|
||||
#endif
|
||||
+*/
|
||||
}
|
||||
|
||||
|
||||
void _FailMessage(const char *pString, UINT32 uiLineNum, const char *pSourceFile)
|
||||
{
|
||||
- char ubOutputString[512];
|
||||
if (pString != NULL)
|
||||
- sprintf(ubOutputString, "{ %ld } Assertion Failure [Line %d in %s]: %s\n", GetClock(), uiLineNum, pSourceFile, pString);
|
||||
+ printf("{ %ld } Assertion Failure [Line %d in %s]: %s\n", GetClock(), uiLineNum, pSourceFile, pString);
|
||||
else
|
||||
- sprintf(ubOutputString, "{ %ld } Assertion Failure [Line %d in %s]\n", GetClock(), uiLineNum, pSourceFile);
|
||||
-
|
||||
+ printf("{ %ld } Assertion Failure [Line %d in %s]\n", GetClock(), uiLineNum, pSourceFile);
|
||||
+/*
|
||||
//Output to debugger
|
||||
if (gfRecordToDebugger)
|
||||
fputs(ubOutputString, stderr);
|
||||
@@ -113,7 +115,7 @@ void _FailMessage(const char *pString, UINT32 uiLineNum, const char *pSourceFile
|
||||
}
|
||||
}
|
||||
#endif
|
||||
-
|
||||
+*/
|
||||
SDL_Quit();
|
||||
abort();
|
||||
}
|
||||
diff --git a/sgp/Debug.h b/sgp/Debug.h
|
||||
index 05717f9..6285a33 100644
|
||||
--- a/sgp/Debug.h
|
||||
+++ b/sgp/Debug.h
|
||||
@@ -9,6 +9,7 @@
|
||||
#define DEBUG_PRINT_GAME_CYCLE_TIME (0) /**< Flag telling to print how much time every game cycle takes. */
|
||||
|
||||
|
||||
+#define SGP_DEBUG 1
|
||||
#if defined ( SGP_DEBUG ) || defined ( FORCE_ASSERTS_ON )
|
||||
|
||||
// If DEBUG_ is defined, we need to initialize all the debug macros. Otherwise all the
|
||||
diff --git a/sgp/FileMan.cc b/sgp/FileMan.cc
|
||||
index 38d8b36..a5de49f 100644
|
||||
--- a/sgp/FileMan.cc
|
||||
+++ b/sgp/FileMan.cc
|
||||
@@ -104,6 +104,7 @@ std::string FileMan::findConfigFolderAndSwitchIntoIt()
|
||||
}
|
||||
#else
|
||||
const char* home = getenv("HOME");
|
||||
+ return home; // Do not create extra dirs on Android
|
||||
if (home == NULL)
|
||||
{
|
||||
const struct passwd* const passwd = getpwuid(getuid());
|
||||
@@ -152,6 +153,7 @@ std::string FileMan::findConfigFolderAndSwitchIntoIt()
|
||||
int FileMan::openFileCaseInsensitive(const std::string &folderPath, const char *filename, int mode)
|
||||
{
|
||||
std::string path = FileMan::joinPaths(folderPath, filename);
|
||||
+ SLOGD(TAG, "%s: open file %s\n", __func__, path.c_str());
|
||||
int d = open(path.c_str(), mode);
|
||||
if (d < 0)
|
||||
{
|
||||
diff --git a/sgp/FileMan.h b/sgp/FileMan.h
|
||||
index a7f96cb..6d7a64f 100644
|
||||
--- a/sgp/FileMan.h
|
||||
+++ b/sgp/FileMan.h
|
||||
@@ -11,7 +11,7 @@
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# include <windows.h>
|
||||
#else
|
||||
-# include <glob.h>
|
||||
+//# include <glob.h>
|
||||
#endif
|
||||
|
||||
/* Delete the file at path. Returns true iff deleting the file succeeded or
|
||||
diff --git a/sgp/LibraryDataBase.cc b/sgp/LibraryDataBase.cc
|
||||
index 2205166..039a202 100644
|
||||
--- a/sgp/LibraryDataBase.cc
|
||||
+++ b/sgp/LibraryDataBase.cc
|
||||
@@ -1,5 +1,8 @@
|
||||
#include <cstdlib>
|
||||
#include <stdexcept>
|
||||
+#ifdef WITH_UNITTESTS
|
||||
+#include "gtest/gtest.h"
|
||||
+#endif
|
||||
|
||||
#include "Types.h"
|
||||
#include "FileMan.h"
|
||||
diff --git a/sgp/Logger.h b/sgp/Logger.h
|
||||
index 771e515..d7995d3 100644
|
||||
--- a/sgp/Logger.h
|
||||
+++ b/sgp/Logger.h
|
||||
@@ -6,6 +6,7 @@
|
||||
* General logging
|
||||
***********************************************************/
|
||||
|
||||
+#include "../../../android_debug.h"
|
||||
/** Available log levels. */
|
||||
enum
|
||||
{
|
||||
@@ -16,7 +17,7 @@ enum
|
||||
};
|
||||
|
||||
/** Current log level. */
|
||||
-#define LOG_LEVEL (LOGLEVEL_INFO)
|
||||
+#define LOG_LEVEL (LOGLEVEL_DEBUG)
|
||||
|
||||
#if LOG_LEVEL >= LOGLEVEL_ERROR
|
||||
#define LOG_ERROR printf
|
||||
diff --git a/sgp/Platform.h b/sgp/Platform.h
|
||||
index 263f9b1..57d377c 100644
|
||||
--- a/sgp/Platform.h
|
||||
+++ b/sgp/Platform.h
|
||||
@@ -12,7 +12,7 @@
|
||||
#define PATH_SEPARATOR '\\'
|
||||
#define PATH_SEPARATOR_STR "\\"
|
||||
#else
|
||||
-#define CASE_SENSITIVE_FS 1
|
||||
+#define CASE_SENSITIVE_FS 0 // SD card on Android is case-insensitive
|
||||
#define PATH_SEPARATOR '/'
|
||||
#define PATH_SEPARATOR_STR "/"
|
||||
#endif
|
||||
diff --git a/sgp/SGP.cc b/sgp/SGP.cc
|
||||
index d156d73..66d7cf0 100644
|
||||
--- a/sgp/SGP.cc
|
||||
+++ b/sgp/SGP.cc
|
||||
@@ -13,6 +13,9 @@
|
||||
|
||||
#include <exception>
|
||||
#include <new>
|
||||
+#ifdef WITH_UNITTESTS
|
||||
+#include "gtest/gtest.h"
|
||||
+#endif
|
||||
|
||||
#include "Button_System.h"
|
||||
#include "Debug.h"
|
||||
@@ -49,9 +52,6 @@
|
||||
#include "slog/slog.h"
|
||||
#define TAG "SGP"
|
||||
|
||||
-#ifdef WITH_UNITTESTS
|
||||
-#include "gtest/gtest.h"
|
||||
-#endif
|
||||
|
||||
#if defined _WIN32
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
@@ -318,7 +318,7 @@ static BOOLEAN ParseParameters(int argc, char* const argv[],
|
||||
int main(int argc, char* argv[])
|
||||
try
|
||||
{
|
||||
- std::string exeFolder = FileMan::getParentPath(argv[0], true);
|
||||
+ //std::string exeFolder = FileMan::getParentPath(argv[0], true);
|
||||
|
||||
#if defined BROKEN_SWPRINTF
|
||||
if (setlocale(LC_CTYPE, "UTF-8") == NULL)
|
||||
@@ -361,10 +361,12 @@ try
|
||||
setGameVersion(version);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
+ SLOGD(TAG, "Starting %s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
SDL_Init(SDL_INIT_VIDEO);
|
||||
SDL_EnableUNICODE(SDL_ENABLE);
|
||||
|
||||
+ SLOGD(TAG, "Starting %s:%d\n", __FILE__,__LINE__);
|
||||
#ifdef __APPLE__
|
||||
// Enable 3-button mouse support if the user haven't instructed
|
||||
// otherwise
|
||||
@@ -380,6 +382,7 @@ try
|
||||
freopen("CON", "w", stderr);
|
||||
#endif
|
||||
|
||||
+ SLOGD(TAG, "Starting %s:%d\n", __FILE__,__LINE__);
|
||||
#ifdef SGP_DEBUG
|
||||
// Initialize the Debug Manager - success doesn't matter
|
||||
InitializeDebugManager();
|
||||
@@ -398,7 +401,7 @@ try
|
||||
if(extraDataDir.empty())
|
||||
{
|
||||
// use location of the exe file
|
||||
- extraDataDir = exeFolder;
|
||||
+ //extraDataDir = exeFolder;
|
||||
}
|
||||
|
||||
std::string externalizedDataPath = FileMan::joinPaths(extraDataDir, "externalized");
|
||||
@@ -428,6 +431,7 @@ try
|
||||
else
|
||||
#endif
|
||||
{
|
||||
+ SLOGD(TAG, "Starting %s:%d\n", __FILE__,__LINE__);
|
||||
cm = new DefaultContentManager(version,
|
||||
configFolderPath,
|
||||
gameResRootPath, externalizedDataPath);
|
||||
@@ -775,7 +779,7 @@ static void WriteDefaultConfigFile(const char* ConfigFile)
|
||||
#ifdef _WIN32
|
||||
fprintf(IniFile, "data_dir = C:\\Program Files\\Jagged Alliance 2");
|
||||
#else
|
||||
- fprintf(IniFile, "data_dir = /some/place/where/the/data/is");
|
||||
+ fprintf(IniFile, "data_dir = .");
|
||||
#endif
|
||||
fclose(IniFile);
|
||||
fprintf(stderr, "Please edit \"%s\" to point to the binary data.\n", ConfigFile);
|
||||
diff --git a/src/DefaultContentManager.cc b/src/DefaultContentManager.cc
|
||||
index b7e4971..25bec4b 100644
|
||||
--- a/src/DefaultContentManager.cc
|
||||
+++ b/src/DefaultContentManager.cc
|
||||
@@ -602,8 +602,10 @@ const AmmoTypeModel* DefaultContentManager::getAmmoType(uint8_t index)
|
||||
|
||||
bool DefaultContentManager::loadWeapons()
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
AutoSGPFile f(openGameResForReading("weapons.json"));
|
||||
std::string jsonData = FileMan::fileReadText(f);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
rapidjson::Document document;
|
||||
if (document.Parse<0>(jsonData.c_str()).HasParseError())
|
||||
@@ -613,6 +615,7 @@ bool DefaultContentManager::loadWeapons()
|
||||
}
|
||||
else
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
if(document.IsArray()) {
|
||||
const rapidjson::Value& a = document;
|
||||
for (rapidjson::SizeType i = 0; i < a.Size(); i++)
|
||||
@@ -632,6 +635,7 @@ bool DefaultContentManager::loadWeapons()
|
||||
}
|
||||
}
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -675,8 +679,11 @@ bool DefaultContentManager::loadMagazines()
|
||||
|
||||
bool DefaultContentManager::loadCalibres()
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
AutoSGPFile f(openGameResForReading("calibres.json"));
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
std::string jsonData = FileMan::fileReadText(f);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
rapidjson::Document document;
|
||||
if (document.Parse<0>(jsonData.c_str()).HasParseError())
|
||||
@@ -686,6 +693,7 @@ bool DefaultContentManager::loadCalibres()
|
||||
}
|
||||
else
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
if(document.IsArray()) {
|
||||
const rapidjson::Value& a = document;
|
||||
for (rapidjson::SizeType i = 0; i < a.Size(); i++)
|
||||
@@ -703,19 +711,23 @@ bool DefaultContentManager::loadCalibres()
|
||||
}
|
||||
}
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
BOOST_FOREACH(const CalibreModel* calibre, m_calibres)
|
||||
{
|
||||
m_calibreMap.insert(std::make_pair(std::string(calibre->internalName), calibre));
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DefaultContentManager::loadAmmoTypes()
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
AutoSGPFile f(openGameResForReading("ammo_types.json"));
|
||||
std::string jsonData = FileMan::fileReadText(f);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
rapidjson::Document document;
|
||||
if (document.Parse<0>(jsonData.c_str()).HasParseError())
|
||||
@@ -725,6 +737,7 @@ bool DefaultContentManager::loadAmmoTypes()
|
||||
}
|
||||
else
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
if(document.IsArray()) {
|
||||
const rapidjson::Value& a = document;
|
||||
for (rapidjson::SizeType i = 0; i < a.Size(); i++)
|
||||
@@ -742,12 +755,14 @@ bool DefaultContentManager::loadAmmoTypes()
|
||||
}
|
||||
}
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
BOOST_FOREACH(const AmmoTypeModel* ammoType, m_ammoTypes)
|
||||
{
|
||||
m_ammoTypeMap.insert(std::make_pair(std::string(ammoType->internalName), ammoType));
|
||||
}
|
||||
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -755,8 +770,10 @@ bool DefaultContentManager::readWeaponTable(
|
||||
const char *fileName,
|
||||
std::vector<std::vector<const WeaponModel*> > & weaponTable)
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
AutoSGPFile f(openGameResForReading(fileName));
|
||||
std::string jsonData = FileMan::fileReadText(f);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
rapidjson::Document document;
|
||||
if (document.Parse<0>(jsonData.c_str()).HasParseError())
|
||||
@@ -764,6 +781,7 @@ bool DefaultContentManager::readWeaponTable(
|
||||
SLOGE(TAG, "Failed to parse %s", fileName);
|
||||
return false;
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
if(document.IsArray())
|
||||
{
|
||||
@@ -780,6 +798,7 @@ bool DefaultContentManager::readWeaponTable(
|
||||
}
|
||||
}
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -796,12 +815,14 @@ const std::vector<std::vector<const WeaponModel*> > & DefaultContentManager::get
|
||||
|
||||
bool DefaultContentManager::loadArmyGunChoice()
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
return readWeaponTable("army-gun-choice-normal.json", mNormalGunChoice)
|
||||
&& readWeaponTable("army-gun-choice-extended.json", mExtendedGunChoice);
|
||||
}
|
||||
|
||||
void DefaultContentManager::loadStringRes(const char *name, std::vector<const UTF8String*> &strings) const
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
std::string fullName(name);
|
||||
|
||||
switch(m_gameVersion)
|
||||
@@ -819,6 +840,7 @@ void DefaultContentManager::loadStringRes(const char *name, std::vector<const UT
|
||||
throw std::runtime_error(FormattedString("unknown game version %d", m_gameVersion));
|
||||
}
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
fullName += ".json";
|
||||
boost::shared_ptr<rapidjson::Document> json(readJsonDataFile(fullName.c_str()));
|
||||
@@ -828,12 +850,15 @@ void DefaultContentManager::loadStringRes(const char *name, std::vector<const UT
|
||||
{
|
||||
strings.push_back(new UTF8String(str.c_str()));
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
}
|
||||
|
||||
/** Load the game data. */
|
||||
bool DefaultContentManager::loadGameData()
|
||||
{
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
createAllHardcodedItemModels(m_items);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
bool result = loadCalibres()
|
||||
&& loadAmmoTypes()
|
||||
@@ -841,23 +866,29 @@ bool DefaultContentManager::loadGameData()
|
||||
&& loadWeapons()
|
||||
&& loadArmyGunChoice();
|
||||
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
BOOST_FOREACH(const ItemModel *item, m_items)
|
||||
{
|
||||
m_itemMap.insert(std::make_pair(item->getInternalName(), item));
|
||||
}
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
loadAllDealersInventory();
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
boost::shared_ptr<rapidjson::Document> game_json(readJsonDataFile("game.json"));
|
||||
m_gamePolicy = new DefaultGamePolicy(game_json.get());
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
boost::shared_ptr<rapidjson::Document> imp_json(readJsonDataFile("imp.json"));
|
||||
m_impPolicy = new DefaultIMPPolicy(imp_json.get(), this);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
loadStringRes("strings/ammo-calibre", m_calibreNames);
|
||||
loadStringRes("strings/ammo-calibre-bobbyray", m_calibreNamesBobbyRay);
|
||||
|
||||
loadStringRes("strings/new-strings", m_newStrings);
|
||||
+ SLOGD(TAG, "%s:%d\n", __FILE__,__LINE__);
|
||||
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user