From 899a60d3afa61793c959ddaf34b3298f10c1faa9 Mon Sep 17 00:00:00 2001 From: grumbel Date: Wed, 18 Nov 2009 21:01:38 +0000 Subject: [PATCH] Updated to tinygettext r174 git-svn-id: http://supertux.lethargik.org/svn/supertux/trunk/supertux@6034 837edb03-e0f3-0310-88ca-d4d4e8b29345 --- src/physfs/physfs_file_system.cpp | 46 +++++++++++++++++++++++++++++++++++++++ src/physfs/physfs_file_system.hpp | 34 +++++++++++++++++++++++++++++ src/supertux/main.cpp | 11 ++-------- 3 files changed, 82 insertions(+), 9 deletions(-) create mode 100644 src/physfs/physfs_file_system.cpp create mode 100644 src/physfs/physfs_file_system.hpp diff --git a/src/physfs/physfs_file_system.cpp b/src/physfs/physfs_file_system.cpp new file mode 100644 index 000000000..1575da0d4 --- /dev/null +++ b/src/physfs/physfs_file_system.cpp @@ -0,0 +1,46 @@ +// SuperTux +// Copyright (C) 2009 Ingo Ruhnke +// +// 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 . + +#include "physfs/physfs_file_system.hpp" + +#include "physfs/ifile_stream.hpp" + +PhysFSFileSystem::PhysFSFileSystem() +{ +} + +std::vector +PhysFSFileSystem::open_directory(const std::string& pathname) +{ + std::vector 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 +PhysFSFileSystem::open_file(const std::string& filename) +{ + return std::auto_ptr(new IFileStream(filename)); +} + +/* EOF */ diff --git a/src/physfs/physfs_file_system.hpp b/src/physfs/physfs_file_system.hpp new file mode 100644 index 000000000..2fd6e34ea --- /dev/null +++ b/src/physfs/physfs_file_system.hpp @@ -0,0 +1,34 @@ +// SuperTux +// Copyright (C) 2009 Ingo Ruhnke +// +// 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 . + +#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 open_directory(const std::string& pathname); + std::auto_ptr open_file(const std::string& filename); +}; + +#endif + +/* EOF */ + diff --git a/src/supertux/main.cpp b/src/supertux/main.cpp index b7219f538..6bab73244 100644 --- a/src/supertux/main.cpp +++ b/src/supertux/main.cpp @@ -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(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(); -- 2.11.0