supertux/main, control/haptic_manager: Add SDL 1.2 compatibility code.
[supertux.git] / src / supertux / main.cpp
index a544fd6..1a05161 100644 (file)
@@ -17,6 +17,7 @@
 #include <config.h>
 #include <version.h>
 
+#include <SDL.h>
 #include <SDL_image.h>
 #include <physfs.h>
 #include <iostream>
@@ -34,6 +35,7 @@ namespace supertux_apple {
 #include "addon/addon_manager.hpp"
 #include "audio/sound_manager.hpp"
 #include "control/joystickkeyboardcontroller.hpp"
+#include "control/haptic_manager.hpp"
 #include "math/random_generator.hpp"
 #include "physfs/ifile_stream.hpp"
 #include "physfs/physfs_sdl.hpp"
@@ -93,17 +95,40 @@ Main::init_physfs(const char* argv0)
   PHYSFS_permitSymbolicLinks(1);
 
   // Initialize physfs (this is a slightly modified version of
-  // PHYSFS_setSaneConfig
+  // PHYSFS_setSaneConfig)
   const char* application = PACKAGE_NAME;
   const char* userdir = PHYSFS_getUserDir();
-  char* writedir = new char[strlen(userdir) + strlen(application) + 2];
+
+  char* writedir = new char[strlen(userdir) + strlen(application) + 
+#ifndef _WIN32
+                                                                    2];
+#else
+                                                                    1];
+#endif
 
   // Set configuration directory
-  sprintf(writedir, "%s.%s", userdir, application);
+  sprintf(writedir, 
+#ifndef _WIN32
+                    "%s.%s",
+#else
+                    "%s%s",
+#endif
+                             userdir, application);
   if(!PHYSFS_setWriteDir(writedir)) {
     // try to create the directory
-    char* mkdir = new char[strlen(application) + 2];
-    sprintf(mkdir, ".%s", application);
+    char* mkdir = new char[strlen(application) +
+#ifndef _WIN32
+                                                 2];
+#else
+                                                 1];
+#endif
+    sprintf(mkdir,
+#ifndef _WIN32
+                   ".%s",
+#else
+                   "%s",
+#endif
+                          application);
     if(!PHYSFS_setWriteDir(userdir) || !PHYSFS_mkdir(mkdir)) {
       std::ostringstream msg;
       msg << "Failed creating configuration directory '"
@@ -376,7 +401,14 @@ Main::parse_commandline(int argc, char** argv)
 void
 Main::init_sdl()
 {
-  if(SDL_Init(SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) {
+  int init_flags;
+
+  init_flags = SDL_INIT_TIMER | SDL_INIT_VIDEO | SDL_INIT_JOYSTICK;
+#ifdef SDL_INIT_HAPTIC
+  init_flags |= SDL_INIT_HAPTIC;
+#endif
+
+  if(SDL_Init(init_flags) < 0) {
     std::stringstream msg;
     msg << "Couldn't initialize SDL: " << SDL_GetError();
     throw std::runtime_error(msg.str());
@@ -432,11 +464,9 @@ Main::init_video()
     SDL_WM_SetIcon(icon, 0);
     SDL_FreeSurface(icon);
   }
-#ifndef NDEBUG
   else {
     log_warning << "Couldn't load icon '" << icon_fname << "'" << std::endl;
   }
-#endif
 
   SDL_ShowCursor(0);
 
@@ -505,7 +535,6 @@ Main::wait_for_event(float min_delay, float max_delay)
   }
 }
 
-#ifndef NDEBUG
 static Uint32 last_timelog_ticks = 0;
 static const char* last_timelog_component = 0;
 
@@ -520,11 +549,6 @@ static inline void timelog(const char* component)
   last_timelog_ticks = current_ticks;
   last_timelog_component = component;
 }
-#else
-static inline void timelog(const char* )
-{
-}
-#endif
 
 int
 Main::run(int argc, char** argv)
@@ -540,6 +564,9 @@ Main::run(int argc, char** argv)
     init_physfs(argv[0]);
     init_sdl();
 
+    timelog("haptic");
+    g_haptic_manager = new HapticManager();
+
     timelog("controller");
     g_main_controller = new JoystickKeyboardController();