Merge branch 'transfilterfix' into 'master'
[xonotic/netradiant.git] / plugins / vfspk3 / vfspk3.cpp
1 /*
2    Copyright (C) 2001-2006, William Joseph.
3    All Rights Reserved.
4
5    This file is part of GtkRadiant.
6
7    GtkRadiant is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    GtkRadiant is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GtkRadiant; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 #include "qerplugin.h"
23 #include "iarchive.h"
24 #include "ifilesystem.h"
25
26 #include "modulesystem/singletonmodule.h"
27 #include "modulesystem/modulesmap.h"
28
29 #include "vfs.h"
30
31 class FileSystemDependencies : public GlobalRadiantModuleRef {
32     ArchiveModulesRef m_archive_modules;
33 public:
34     FileSystemDependencies() :
35             m_archive_modules(GlobalRadiant().getRequiredGameDescriptionKeyValue("archivetypes"))
36     {
37     }
38
39     ArchiveModules &getArchiveModules()
40     {
41         return m_archive_modules.get();
42     }
43 };
44
45 class FileSystemQ3API {
46     VirtualFileSystem *m_filesystemq3;
47 public:
48     typedef VirtualFileSystem Type;
49
50     STRING_CONSTANT(Name, "*");
51
52     FileSystemQ3API()
53     {
54         FileSystem_Init();
55         m_filesystemq3 = &GetFileSystem();
56     }
57
58     ~FileSystemQ3API()
59     {
60         FileSystem_Shutdown();
61     }
62
63     VirtualFileSystem *getTable()
64     {
65         return m_filesystemq3;
66     }
67 };
68
69 typedef SingletonModule<FileSystemQ3API, FileSystemDependencies> FileSystemQ3Module;
70
71 FileSystemQ3Module g_FileSystemQ3Module;
72
73 ArchiveModules &FileSystemQ3API_getArchiveModules()
74 {
75     return g_FileSystemQ3Module.getDependencies().getArchiveModules();
76 }
77
78
79 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer &server)
80 {
81     initialiseModule(server);
82
83     g_FileSystemQ3Module.selfRegister();
84 }