fix music problems, is openal faster now?
authorMatthias Braun <matze@braunis.de>
Fri, 1 Jul 2005 21:46:19 +0000 (21:46 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 1 Jul 2005 21:46:19 +0000 (21:46 +0000)
SVN-Revision: 2666

data/levels/test/default.nut
src/audio/sound_manager.cpp
src/game_session.cpp
src/scripting/functions.cpp
src/scripting/functions.hpp
src/scripting/wrapper.cpp

index 874b024..71be66e 100644 (file)
@@ -1,7 +1,2 @@
 /* Default functions for the whole levelset */
 
-function wait(time) {
-    set_wakeup_time(time);
-    suspend();
-}
-
index a1ed57e..cd9d9cd 100644 (file)
@@ -192,6 +192,13 @@ SoundManager::play_music(const std::string& filename, bool fade)
 void
 SoundManager::set_listener_position(const Vector& pos)
 {
+  static Uint32 lastticks = SDL_GetTicks();
+
+  Uint32 current_ticks = SDL_GetTicks();
+  if(current_ticks - lastticks < 300)
+    return;
+  lastticks = current_ticks;                 
+
   alListener3f(AL_POSITION, pos.x, pos.y, 0);
 }
 
@@ -204,6 +211,13 @@ SoundManager::set_listener_velocity(const Vector& vel)
 void
 SoundManager::update()
 {
+  static Uint32 lastticks = SDL_GetTicks();
+
+  Uint32 current_ticks = SDL_GetTicks();
+  if(current_ticks - lastticks < 300)
+    return;
+  lastticks = current_ticks;
+
   // check for finished sound sources
   for(SoundSources::iterator i = sources.begin(); i != sources.end(); ) {
     SoundSource* source = *i;
index fbeac4e..efbc9c5 100644 (file)
@@ -684,6 +684,7 @@ GameSession::display_info_box(const std::string& text)
       running = false;
     box->draw(*context);
     draw();
+    sound_manager->update();
   }
 
   delete box;
index 10e5f2b..2e51cad 100644 (file)
@@ -12,7 +12,7 @@
 namespace Scripting
 {
 
-void set_wakeup_time(float seconds)
+void wait(float seconds)
 {
   ScriptInterpreter::current()->set_wakeup_time(seconds);
 }
index a2c518d..debc9af 100644 (file)
@@ -6,8 +6,10 @@ namespace Scripting
 
 /** displays a text file and scrolls it over the screen */
 void display_text_file(const std::string& filename);
-/** Suspends the script execution for the specified number of seconds */
-void set_wakeup_time(float seconds);
+/** @SUSPEND@ 
+ * Suspends the script execution for the specified number of seconds
+ * */
+void wait(float seconds);
 /** translates a give text into the users language (by looking it up in the .po
  * files)
  */
index 90b39e8..2d51cdb 100644 (file)
@@ -418,14 +418,14 @@ static int display_text_file_wrapper(HSQUIRRELVM v)
   return 0;
 }
 
-static int set_wakeup_time_wrapper(HSQUIRRELVM v)
+static int wait_wrapper(HSQUIRRELVM v)
 {
   float arg0;
   sq_getfloat(v, 2, &arg0);
   
-  Scripting::set_wakeup_time(arg0);
+  Scripting::wait(arg0);
   
-  return 0;
+  return sq_suspendvm(v);
 }
 
 static int translate_wrapper(HSQUIRRELVM v)
@@ -452,7 +452,7 @@ static int import_wrapper(HSQUIRRELVM v)
 
 WrappedFunction supertux_global_functions[] = {
   { "display_text_file", &display_text_file_wrapper },
-  { "set_wakeup_time", &set_wakeup_time_wrapper },
+  { "wait", &wait_wrapper },
   { "translate", &translate_wrapper },
   { "import", &import_wrapper },
   { 0, 0 }