merged new collision detection branch back into mainline
[supertux.git] / src / scripting / serialize.cpp
index 1aee22a..79be04c 100644 (file)
@@ -16,6 +16,7 @@
 //  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  02111-1307, USA.
+#include <config.h>
 
 #include "serialize.hpp"
 
@@ -30,7 +31,7 @@
 namespace Scripting
 {
 
-void load_squirrel_table(HSQUIRRELVM vm, int table_idx, const lisp::Lisp* lisp)
+void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp* lisp)
 {
   using namespace lisp;
 
@@ -74,7 +75,7 @@ void load_squirrel_table(HSQUIRRELVM vm, int table_idx, const lisp::Lisp* lisp)
   }
 }
 
-void save_squirrel_table(HSQUIRRELVM vm, int table_idx, lisp::Writer& writer)
+void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writer)
 {
   // offset because of sq_pushnull
   if(table_idx < 0)
@@ -87,32 +88,32 @@ void save_squirrel_table(HSQUIRRELVM vm, int table_idx, lisp::Writer& writer)
       std::cerr << "Table contains non-string key\n";
       continue;
     }
-    const char* key;
+    const SQChar* key;
     sq_getstring(vm, -2, &key);
 
     switch(sq_gettype(vm, -1)) {
       case OT_INTEGER: {
-        int val;
+        SQInteger val;
         sq_getinteger(vm, -1, &val);
-        writer.write_int(key, val);
+        writer.write_int(key, static_cast<int> (val));
         break;
       }
       case OT_FLOAT: {
-        float val;
+        SQFloat val;
         sq_getfloat(vm, -1, &val);
-        writer.write_float(key, val);
+        writer.write_float(key, static_cast<float> (val));
         break;
       }
       case OT_BOOL: {
         SQBool val;
         sq_getbool(vm, -1, &val);
-        writer.write_bool(key, val);
+        writer.write_bool(key, val == SQTrue);
         break;
       }
       case OT_STRING: {
-        const char* str;
+        const SQChar* str;
         sq_getstring(vm, -1, &str);
-        writer.write_string(key, str);
+        writer.write_string(key, reinterpret_cast<const char*> (str));
         break;
       }
       case OT_TABLE: {