Spiky, Snowball and Poison Ivy can move again
[supertux.git] / src / main.cpp
index fe54abb..0520a31 100644 (file)
@@ -1,7 +1,7 @@
 //  $Id$
-// 
+//
 //  SuperTux
-//  Copyright (C) 2005 Matthias Braun <matze@braunis.de>
+//  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
@@ -12,7 +12,7 @@
 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 //  GNU General Public License for more details.
-// 
+//
 //  You should have received a copy of the GNU General Public License
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
@@ -154,6 +154,23 @@ static void init_physfs(const char* argv0)
     }
   }
 
+#ifdef MACOSX
+  // when started from Application file on Mac OS X...
+  dir = PHYSFS_getBaseDir();
+  dir += "SuperTux.app/Contents/Resources/data";
+  testfname = dir + "/credits.txt";
+  sourcedir = false;
+  f = fopen(testfname.c_str(), "r");
+  if(f) {
+    fclose(f);
+    if(!PHYSFS_addToSearchPath(dir.c_str(), 1)) {
+      msg_warning << "Couldn't add '" << dir << "' to physfs searchpath: " << PHYSFS_getLastError() << std::endl;
+    } else {
+      sourcedir = true;
+    }
+  }
+#endif
+
   if(!sourcedir) {
 #if defined(APPDATADIR) || defined(ENABLE_BINRELOC)
     std::string datadir;
@@ -294,9 +311,11 @@ static void check_gl_error()
       case GL_OUT_OF_MEMORY:
         errormsg = "out of memory";
         break;
+#ifdef GL_TABLE_TOO_LARGE
       case GL_TABLE_TOO_LARGE:
         errormsg = "table too large";
         break;
+#endif
       default:
         errormsg = "unknown error number";
         break;
@@ -521,8 +540,6 @@ int main(int argc, char** argv)
   main_loop = NULL;
 
   free_menu();
-  delete ScriptManager::instance;
-  ScriptManager::instance = NULL;
   unload_shared();
   quit_audio();
 
@@ -534,6 +551,8 @@ int main(int argc, char** argv)
   main_controller = NULL;
   delete Console::instance;
   Console::instance = NULL;
+  delete ScriptManager::instance;
+  ScriptManager::instance = NULL; 
   delete texture_manager;
   texture_manager = NULL;
   SDL_Quit();