Updated to tinygettext r174
authorIngo Ruhnke <grumbel@gmx.de>
Wed, 18 Nov 2009 21:01:38 +0000 (21:01 +0000)
committerIngo Ruhnke <grumbel@gmx.de>
Wed, 18 Nov 2009 21:01:38 +0000 (21:01 +0000)
SVN-Revision: 6034

src/physfs/physfs_file_system.cpp [new file with mode: 0644]
src/physfs/physfs_file_system.hpp [new file with mode: 0644]
src/supertux/main.cpp

diff --git a/src/physfs/physfs_file_system.cpp b/src/physfs/physfs_file_system.cpp
new file mode 100644 (file)
index 0000000..1575da0
--- /dev/null
@@ -0,0 +1,46 @@
+//  SuperTux
+//  Copyright (C) 2009 Ingo Ruhnke <grumbel@gmx.de>
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  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, see <http://www.gnu.org/licenses/>.
+
+#include "physfs/physfs_file_system.hpp"
+
+#include "physfs/ifile_stream.hpp"
+
+PhysFSFileSystem::PhysFSFileSystem()
+{
+}
+
+std::vector<std::string>
+PhysFSFileSystem::open_directory(const std::string& pathname)
+{
+  std::vector<std::string> files;
+
+  char** directory = PHYSFS_enumerateFiles(pathname.c_str());
+  for(char** i = directory; *i != 0; ++i)
+  {
+    files.push_back(*i);
+  }
+  PHYSFS_freeList(directory);
+
+  return files;
+}
+
+std::auto_ptr<std::istream>
+PhysFSFileSystem::open_file(const std::string& filename)
+{
+  return std::auto_ptr<std::istream>(new IFileStream(filename));
+}
+
+/* EOF */
diff --git a/src/physfs/physfs_file_system.hpp b/src/physfs/physfs_file_system.hpp
new file mode 100644 (file)
index 0000000..2fd6e34
--- /dev/null
@@ -0,0 +1,34 @@
+//  SuperTux
+//  Copyright (C) 2009 Ingo Ruhnke <grumbel@gmx.de>
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  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, see <http://www.gnu.org/licenses/>.
+
+#ifndef HEADER_SUPERTUX_PHYSFS_FILE_SYSTEM_HPP
+#define HEADER_SUPERTUX_PHYSFS_FILE_SYSTEM_HPP
+
+#include "tinygettext/file_system.hpp"
+
+class PhysFSFileSystem : public tinygettext::FileSystem
+{
+public:
+  PhysFSFileSystem();
+
+  std::vector<std::string>    open_directory(const std::string& pathname);
+  std::auto_ptr<std::istream> open_file(const std::string& filename);
+};
+
+#endif
+
+/* EOF */
+
index b7219f5..6bab732 100644 (file)
@@ -34,6 +34,7 @@ namespace supertux_apple {
 #include "math/random_generator.hpp"
 #include "physfs/ifile_stream.hpp"
 #include "physfs/physfs_sdl.hpp"
+#include "physfs/physfs_file_system.hpp"
 #include "scripting/squirrel_util.hpp"
 #include "supertux/gameconfig.hpp"
 #include "supertux/globals.hpp"
@@ -536,17 +537,9 @@ int supertux_main(int argc, char** argv)
 
     Console::instance = new Console();
     init_physfs(argv[0]);
+    dictionary_manager.set_filesystem(std::auto_ptr<tinygettext::FileSystem>(new PhysFSFileSystem));
     init_sdl();
 
-    { // Let tinygettext use PhysFS
-      tinygettext::DirOp dir_op;
-      dir_op.enumerate_files = &PHYSFS_enumerateFiles;
-      dir_op.free_list       = &physfs_free_list;
-      dir_op.open_file       = &physfs_open_file;
-      
-      dictionary_manager.set_dir_op(dir_op);
-    }
-
     timelog("controller");
     g_main_controller = new JoystickKeyboardController();