--- a/lib/warmux/net/network.cpp +++ b/lib/warmux/net/network.cpp @@ -19,6 +19,7 @@ * Network layer for warmux. *****************************************************************************/ +#include #include #include --- a/lib/warmux/tools/file_tools.cpp +++ b/lib/warmux/tools/file_tools.cpp @@ -88,7 +88,7 @@ if (subdir.size() != 0) { // Create the directory if it doesn't exist - if (MKDIR(subdir.c_str()) != 0 && errno != EEXIST) + if (!DoesFolderExist(subdir.c_str()) && MKDIR(subdir.c_str()) != 0 && errno != EEXIST) return false; } pos = dir.find("/", pos+1); @@ -277,6 +277,8 @@ struct dirent *file; #ifdef __SYMBIAN32__ std::string dname; +#elif __HAIKU__ + struct stat st; #endif }; @@ -302,6 +304,9 @@ #ifdef __SYMBIAN32__ if (f->file->d_namlen && DoesFolderExist(f->dname+"/"+std::string(f->file->d_name))) { +#elif __HAIKU__ + stat(f->file->d_name, &f->st); + if (S_ISDIR(f->st.st_mode)) { #else if (f->file->d_type == DT_DIR) { #endif @@ -318,6 +323,8 @@ // This is a file and we do search for file #ifdef __SYMBIAN32__ if (f->file->d_namlen && DoesFileExist(f->dname+"/"+std::string(f->file->d_name))) { +#elif __HAIKU__ + if (S_ISREG(f->st.st_mode)) { #else if (f->file->d_type == DT_REG) { #endif --- a/src/game/config.cpp +++ b/src/game/config.cpp @@ -37,6 +37,11 @@ # include #endif +#ifdef __HAIKU__ +# include +# include +#endif + #include #include @@ -201,7 +206,24 @@ personal_config_dir = GetHome() + PATH_SEPARATOR "Warmux" PATH_SEPARATOR; personal_data_dir = personal_config_dir; -#else //Neither WIN32, ANDROID or __APPLE__ +#elif __HAIKU__ + char path[B_PATH_NAME_LENGTH]; + find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_DATA_DIRECTORY, "warmux/", path, B_PATH_NAME_LENGTH); + data_dir = path; + +# ifdef ENABLE_NLS + find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_DATA_DIRECTORY, "locale/", path, B_PATH_NAME_LENGTH); + locale_dir = path; +# endif + + font_dir = data_dir + "font/"; + ttf_filename = font_dir + basename(FONT_FILE); + + find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, path, B_PATH_NAME_LENGTH); + personal_config_dir = std::string(path) + "/warmux/"; + personal_data_dir = data_dir; + +#else //Neither WIN32, ANDROID, __APPLE__ or __HAIKU__ data_dir = GetEnv(Constants::ENV_DATADIR, INSTALL_DATADIR); # ifdef ENABLE_NLS locale_dir = GetEnv(Constants::ENV_LOCALEDIR, INSTALL_LOCALEDIR); @@ -393,6 +415,8 @@ m_default_config = GetDataDir() + "warmux_default_maemo_config.xml"; #elif __SYMBIAN32__ m_default_config = GetDataDir() + "warmux_default_symbian_config.xml"; +#elif __HAIKU__ + m_default_config = personal_data_dir + "warmux_default_config.xml"; #else m_default_config = GetDataDir() + "warmux_default_config.xml"; #endif --- a/src/graphic/surface.cpp +++ b/src/graphic/surface.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "graphic/surface.h" #include "tool/math_tools.h" --- a/src/interface/weapon_menu.cpp +++ b/src/interface/weapon_menu.cpp @@ -391,7 +391,7 @@ Weapon * WeaponsMenu::UpdateCurrentOverflyItem(const Polygon * poly) { if (!show) - return false; + return NULL; const std::vector& items = poly->GetItem(); WeaponMenuItem * tmp; Interface::GetInstance()->SetCurrentOverflyWeapon(NULL); --- a/src/menu/network_teams_selection_box.cpp +++ b/src/menu/network_teams_selection_box.cpp @@ -114,6 +114,8 @@ result = "Android"; #elif defined(__SYMBIAN32__) result = "Symbian"; +#elif defined(__HAIKU__) + result = "Haiku"; #else result = getenv("USER"); #endif