Adjust gamma with set_gamma(float) scripting function. Must be fullscreen.
authorRyan Flegel <rflegel@gmail.com>
Mon, 16 Jun 2008 03:07:34 +0000 (03:07 +0000)
committerRyan Flegel <rflegel@gmail.com>
Mon, 16 Jun 2008 03:07:34 +0000 (03:07 +0000)
SVN-Revision: 5575

src/scripting/functions.cpp
src/scripting/functions.hpp
src/scripting/wrapper.cpp

index 4840ac9..95d8607 100644 (file)
@@ -277,6 +277,10 @@ void camera()
   log_info << "Camera is at " << Sector::current()->camera->get_translation().x << "," << Sector::current()->camera->get_translation().y << std::endl;
 }
 
+void set_gamma(float gamma) {
+  SDL_SetGamma(gamma, gamma, gamma);
+}
+
 void quit()
 {
   main_loop->quit();
index 34e5df9..b535c73 100644 (file)
@@ -186,6 +186,11 @@ void gotoend();
 void camera();
 
 /**
+ * adjust gamma
+ */
+void set_gamma(float gamma);
+
+/**
  * exit the game
  */
 void quit();
index d3c8cf1..f50fa6c 100644 (file)
@@ -3740,6 +3740,29 @@ static SQInteger camera_wrapper(HSQUIRRELVM vm)
 
 }
 
+static SQInteger set_gamma_wrapper(HSQUIRRELVM vm)
+{
+  SQFloat arg0;
+  if(SQ_FAILED(sq_getfloat(vm, 2, &arg0))) {
+    sq_throwerror(vm, _SC("Argument 1 not a float"));
+    return SQ_ERROR;
+  }
+
+  try {
+    Scripting::set_gamma(static_cast<float> (arg0));
+
+    return 0;
+
+  } catch(std::exception& e) {
+    sq_throwerror(vm, e.what());
+    return SQ_ERROR;
+  } catch(...) {
+    sq_throwerror(vm, _SC("Unexpected exception while executing function 'set_gamma'"));
+    return SQ_ERROR;
+  }
+
+}
+
 static SQInteger quit_wrapper(HSQUIRRELVM vm)
 {
   (void) vm;
@@ -4433,6 +4456,12 @@ void register_supertux_wrapper(HSQUIRRELVM v)
     throw SquirrelError(v, "Couldn't register function 'camera'");
   }
 
+  sq_pushstring(v, "set_gamma", -1);
+  sq_newclosure(v, &set_gamma_wrapper, 0);
+  if(SQ_FAILED(sq_createslot(v, -3))) {
+    throw SquirrelError(v, "Couldn't register function 'set_gamma'");
+  }
+
   sq_pushstring(v, "quit", -1);
   sq_newclosure(v, &quit_wrapper, 0);
   if(SQ_FAILED(sq_createslot(v, -3))) {