Added ja2-stracciatella build files

This commit is contained in:
Sergii Pylypenko
2014-10-11 07:38:21 +03:00
parent 2cba3a0ddb
commit 30981d1e34
5 changed files with 786 additions and 0 deletions

View 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=

View 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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View 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;
}