X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmain.cpp;h=08d3d86feab69adcd95695af19337e4c4cbf1673;hb=4967684276df2b7fe4c948451edd49e558328dca;hp=1e102031f8738d522b143652d01a57a8e2f391ec;hpb=99cf62c2d44b4555e9761f1c8f1b10cf880c33fb;p=supertux.git diff --git a/src/main.cpp b/src/main.cpp index 1e102031f..08d3d86fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,9 +30,9 @@ #include #include #include -//#include +#include #include -//#include +#include #ifdef MACOSX namespace supertux_apple { @@ -40,15 +40,12 @@ namespace supertux_apple { } #endif -#include -#include - #include "gameconfig.hpp" #include "resources.hpp" #include "gettext.hpp" #include "audio/sound_manager.hpp" #include "video/surface.hpp" -//#include "video/texture_manager.hpp" +#include "video/texture_manager.hpp" #include "video/drawing_context.hpp" #include "video/glutil.hpp" #include "control/joystickkeyboardcontroller.hpp" @@ -95,118 +92,6 @@ static void init_tinygettext() static void init_physfs(const char* argv0) { - Unison::VFS::FileSystem &fs = Unison::VFS::FileSystem::get(); - std::string application = "supertux2"; - std::string userdir = fs.get_user_dir(); - std::string dirsep = fs.get_dir_sep(); - std::string writedir = userdir + "." + application; - fs.set_write_dir(writedir); - fs.mount(writedir, "/", true); - - // Search for archives and add them to the search path - const char* archiveExt = ".zip"; - std::vector rc = fs.ls("/"); - for(std::vector::iterator iter = rc.begin(); iter != rc.end(); ++iter) - { - std::string ext = iter->substr(iter->length() - 4); - if(strcasecmp(ext.c_str(), archiveExt) == 0) - { - std::string dir = fs.get_real_dir(*iter); - fs.mount(dir + fs.get_dir_sep() + *iter, "/", true); - } - } - - // when started from source dir... - std::string dir = fs.get_base_dir(); - dir += "/data"; - std::string testfname = dir; - testfname += "/credits.txt"; - bool sourcedir = false; - FILE* f = fopen(testfname.c_str(), "r"); - if(f) { - fclose(f); - fs.mount(dir, "/", true); - sourcedir = true; - /*if(!PHYSFS_addToSearchPath(dir.c_str(), 1)) { - log_warning << "Couldn't add '" << dir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl; - } else { - sourcedir = true; - }*/ - } - -#ifdef MACOSX - // when started from Application file on Mac OS X... - char path[PATH_MAX]; - CFBundleRef mainBundle = CFBundleGetMainBundle(); - assert(mainBundle != 0); - CFURLRef mainBundleURL = CFBundleCopyBundleURL(mainBundle); - assert(mainBundleURL != 0); - CFStringRef pathStr = CFUrlCopyFileSystemPath(mainBundleURL, kCFURLPOSIXPathStyle); - assert(pathStr != 0); - CFStringGetCString(pathStr, path, PATH_MAX, kCFStringEncodingUTF8); - CFRelease(mainBundleURL); - CFRelease(pathStr); - - dir = std::string(path) + "/Contents/Resources/data"; - testfname = dir + "/credits.txt"; - sourcedir = false; - f = fopen(testfname.c_str(), "r"); - if(f) { - fclose(f); - fs.mount(dir, "/", true); - sourcedir = true; - /*if(!PHYSFS_addToSearchPath(dir.c_str(), 1)) { - log_warning << "Couldn't add '" << dir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl; - } else { - sourcedir = true; - }*/ - } -#endif - -#ifdef _WIN32 - fs.mount(".\\data", "/", true); - //PHYSFS_addToSearchPath(".\\data", 1); -#endif - - if(!sourcedir) { -#if defined(APPDATADIR) || defined(ENABLE_BINRELOC) - std::string datadir; -#ifdef ENABLE_BINRELOC - - char* dir; - br_init (NULL); - dir = br_find_data_dir(APPDATADIR); - datadir = dir; - free(dir); - -#else - datadir = APPDATADIR; -#endif - datadir += "/"; - datadir += application; - fs.mount(datadir, "/", true); - /*if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) { - log_warning << "Couldn't add '" << datadir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl; - }*/ -#endif - } - - // allow symbolic links - //PHYSFS_permitSymbolicLinks(1); - //fs.follow_sym_links(true); - - //show search Path - std::vector searchpath = fs.get_search_path(); - for(std::vector::iterator iter = searchpath.begin(); iter != searchpath.end(); ++iter) - log_info << "[" << *iter << "] is in the search path" << std::endl; - /* - char** searchpath = PHYSFS_getSearchPath(); - for(char** i = searchpath; *i != NULL; i++) - log_info << "[" << *i << "] is in the search path" << std::endl; - PHYSFS_freeList(searchpath); - */ - -#if 0 if(!PHYSFS_init(argv0)) { std::stringstream msg; msg << "Couldn't initialize physfs: " << PHYSFS_getLastError(); @@ -333,8 +218,6 @@ static void init_physfs(const char* argv0) #else datadir = APPDATADIR; #endif - datadir += "/"; - datadir += application; if(!PHYSFS_addToSearchPath(datadir.c_str(), 1)) { log_warning << "Couldn't add '" << datadir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl; } @@ -349,7 +232,6 @@ static void init_physfs(const char* argv0) for(char** i = searchpath; *i != NULL; i++) log_info << "[" << *i << "] is in the search path" << std::endl; PHYSFS_freeList(searchpath); -#endif } static void print_usage(const char* argv0) @@ -543,24 +425,24 @@ void init_video() context_pointer->init_renderer(); screen = SDL_GetVideoSurface(); - Unison::Video::Window::get().set_title(PACKAGE_NAME " " PACKAGE_VERSION); - Unison::Video::Window::get().set_icon(Unison::Video::Surface("images/engine/icons/supertux.xpm")); - //SDL_WM_SetCaption(PACKAGE_NAME " " PACKAGE_VERSION, 0); + SDL_WM_SetCaption(PACKAGE_NAME " " PACKAGE_VERSION, 0); // set icon - /* - SDL_Surface* icon = IMG_Load_RW( - get_physfs_SDLRWops("images/engine/icons/supertux.xpm"), true); + #ifdef MACOSX + const char* icon_fname = "images/engine/icons/supertux-256x256.png"; + #else + const char* icon_fname = "images/engine/icons/supertux.xpm"; + #endif + SDL_Surface* icon = IMG_Load_RW(get_physfs_SDLRWops(icon_fname), true); if(icon != 0) { SDL_WM_SetIcon(icon, 0); SDL_FreeSurface(icon); } #ifdef DEBUG else { - log_warning << "Couldn't find icon 'images/engine/icons/supertux.xpm'" << std::endl; + log_warning << "Couldn't find icon '" << icon_fname << "'" << std::endl; } #endif - */ SDL_ShowCursor(0); @@ -686,8 +568,7 @@ int main(int argc, char** argv) // we have a normal path specified at commandline not physfs paths. // So we simply mount that path here... std::string dir = FileSystem::dirname(config->start_level); - Unison::VFS::FileSystem::get().mount(dir, "/", true); - //PHYSFS_addToSearchPath(dir.c_str(), true); + PHYSFS_addToSearchPath(dir.c_str(), true); if(config->start_level.size() > 4 && config->start_level.compare(config->start_level.size() - 5, 5, ".stwm") == 0) { @@ -742,10 +623,10 @@ int main(int argc, char** argv) delete Console::instance; Console::instance = NULL; Scripting::exit_squirrel(); - //delete texture_manager; - //texture_manager = NULL; + delete texture_manager; + texture_manager = NULL; SDL_Quit(); - //PHYSFS_deinit(); + PHYSFS_deinit(); return result; }