]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/plugin.cpp
unvanquished filesystem
[xonotic/netradiant.git] / radiant / plugin.cpp
index fad47ea248edd2affbcd1e4d896053f889d0f5a0..8adf4d12ea20b46cbcb9a559b087f0655918e633 100644 (file)
@@ -1,23 +1,23 @@
 /*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+   Copyright (C) 2001-2006, William Joseph.
+   All Rights Reserved.
 
-This file is part of GtkRadiant.
+   This file is part of GtkRadiant.
 
-GtkRadiant 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 2 of the License, or
-(at your option) any later version.
+   GtkRadiant 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 2 of the License, or
+   (at your option) any later version.
 
-GtkRadiant 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.
+   GtkRadiant 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 GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+   You should have received a copy of the GNU General Public License
+   along with GtkRadiant; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 
 #include "plugin.h"
 
@@ -83,276 +83,248 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "generic/callback.h"
 
-const char* GameDescription_getKeyValue(const char* key)
-{
-  return g_pGameDescription->getKeyValue(key);
+const char* GameDescription_getKeyValue( const char* key ){
+       return g_pGameDescription->getKeyValue( key );
 }
 
-const char* GameDescription_getRequiredKeyValue(const char* key)
-{
-  return g_pGameDescription->getRequiredKeyValue(key);
+const char* GameDescription_getRequiredKeyValue( const char* key ){
+       return g_pGameDescription->getRequiredKeyValue( key );
 }
 
-const char* getMapName()
-{
-  return Map_Name(g_map);
+const char* getMapName(){
+       return Map_Name( g_map );
 }
 
-scene::Node& getMapWorldEntity()
-{
-  return Map_FindOrInsertWorldspawn(g_map);
+scene::Node& getMapWorldEntity(){
+       return Map_FindOrInsertWorldspawn( g_map );
 }
 
-VIEWTYPE XYWindow_getViewType()
-{
-  return g_pParentWnd->GetXYWnd()->GetViewType();
+VIEWTYPE XYWindow_getViewType(){
+       return g_pParentWnd->GetXYWnd()->GetViewType();
 }
 
-Vector3 XYWindow_windowToWorld(const WindowVector& position)
-{
-  Vector3 result(0, 0, 0);
-  g_pParentWnd->GetXYWnd()->XY_ToPoint(static_cast<int>(position.x()), static_cast<int>(position.y()), result);
-  return result;
+Vector3 XYWindow_windowToWorld( const WindowVector& position ){
+       Vector3 result( 0, 0, 0 );
+       g_pParentWnd->GetXYWnd()->XY_ToPoint( static_cast<int>( position.x() ), static_cast<int>( position.y() ), result );
+       return result;
 }
 
-const char* TextureBrowser_getSelectedShader()
-{
-  return TextureBrowser_GetSelectedShader(GlobalTextureBrowser());
+const char* TextureBrowser_getSelectedShader(){
+       return TextureBrowser_GetSelectedShader( GlobalTextureBrowser() );
+}
+
+const char* getGameFile(){
+       return g_GamesDialog.m_sGameFile.c_str();
 }
 
 class RadiantCoreAPI
 {
-  _QERFuncTable_1 m_radiantcore;
+_QERFuncTable_1 m_radiantcore;
 public:
-  typedef _QERFuncTable_1 Type;
-  STRING_CONSTANT(Name, "*");
+typedef _QERFuncTable_1 Type;
+STRING_CONSTANT( Name, "*" );
 
-  RadiantCoreAPI()
-  {
-    m_radiantcore.getEnginePath = &EnginePath_get;
+RadiantCoreAPI(){
+       m_radiantcore.getEnginePath = &EnginePath_get;
        m_radiantcore.getLocalRcPath = &LocalRcPath_get;
-    m_radiantcore.getAppPath = &AppPath_get;
-    m_radiantcore.getGameToolsPath = &GameToolsPath_get;
-    m_radiantcore.getSettingsPath = &SettingsPath_get;
-    m_radiantcore.getMapsPath = &getMapsPath;
-
-    m_radiantcore.getGameName = &gamename_get;
-    m_radiantcore.getGameMode = &gamemode_get;
-
-    m_radiantcore.getMapName = &getMapName;
-    m_radiantcore.getMapWorldEntity = getMapWorldEntity;
-    m_radiantcore.getGridSize = GetGridSize;
-
-    m_radiantcore.getGameDescriptionKeyValue = &GameDescription_getKeyValue;
-    m_radiantcore.getRequiredGameDescriptionKeyValue = &GameDescription_getRequiredKeyValue;
-
-    m_radiantcore.attachGameToolsPathObserver = Radiant_attachGameToolsPathObserver;
-    m_radiantcore.detachGameToolsPathObserver = Radiant_detachGameToolsPathObserver;
-    m_radiantcore.attachEnginePathObserver = Radiant_attachEnginePathObserver;
-    m_radiantcore.detachEnginePathObserver = Radiant_detachEnginePathObserver;
-    m_radiantcore.attachGameNameObserver = Radiant_attachGameNameObserver;
-    m_radiantcore.detachGameNameObserver = Radiant_detachGameNameObserver;
-    m_radiantcore.attachGameModeObserver = Radiant_attachGameModeObserver;
-    m_radiantcore.detachGameModeObserver = Radiant_detachGameModeObserver;
-
-    m_radiantcore.XYWindowDestroyed_connect = XYWindowDestroyed_connect;
-    m_radiantcore.XYWindowDestroyed_disconnect = XYWindowDestroyed_disconnect;
-    m_radiantcore.XYWindowMouseDown_connect = XYWindowMouseDown_connect;
-    m_radiantcore.XYWindowMouseDown_disconnect = XYWindowMouseDown_disconnect;
-    m_radiantcore.XYWindow_getViewType = XYWindow_getViewType;
-    m_radiantcore.XYWindow_windowToWorld = XYWindow_windowToWorld;
-    m_radiantcore.TextureBrowser_getSelectedShader = TextureBrowser_getSelectedShader;
-
-    m_radiantcore.m_pfnMessageBox = &gtk_MessageBox;
-    m_radiantcore.m_pfnFileDialog = &file_dialog;
-    m_radiantcore.m_pfnColorDialog = &color_dialog;
-    m_radiantcore.m_pfnDirDialog = &dir_dialog;
-    m_radiantcore.m_pfnNewImage = &new_plugin_image;
-  }
-  _QERFuncTable_1* getTable()
-  {
-    return &m_radiantcore;
-  }
+       m_radiantcore.getAppPath = &AppPath_get;
+       m_radiantcore.getGameToolsPath = &GameToolsPath_get;
+       m_radiantcore.getSettingsPath = &SettingsPath_get;
+       m_radiantcore.getMapsPath = &getMapsPath;
+
+       m_radiantcore.getGameFile = &getGameFile;
+       m_radiantcore.getGameName = &gamename_get;
+       m_radiantcore.getGameMode = &gamemode_get;
+
+       m_radiantcore.getMapName = &getMapName;
+       m_radiantcore.getMapWorldEntity = getMapWorldEntity;
+       m_radiantcore.getGridSize = GetGridSize;
+
+       m_radiantcore.getGameDescriptionKeyValue = &GameDescription_getKeyValue;
+       m_radiantcore.getRequiredGameDescriptionKeyValue = &GameDescription_getRequiredKeyValue;
+
+       m_radiantcore.XYWindowDestroyed_connect = XYWindowDestroyed_connect;
+       m_radiantcore.XYWindowDestroyed_disconnect = XYWindowDestroyed_disconnect;
+       m_radiantcore.XYWindowMouseDown_connect = XYWindowMouseDown_connect;
+       m_radiantcore.XYWindowMouseDown_disconnect = XYWindowMouseDown_disconnect;
+       m_radiantcore.XYWindow_getViewType = XYWindow_getViewType;
+       m_radiantcore.XYWindow_windowToWorld = XYWindow_windowToWorld;
+       m_radiantcore.TextureBrowser_getSelectedShader = TextureBrowser_getSelectedShader;
+
+       m_radiantcore.m_pfnMessageBox = &gtk_MessageBox;
+       m_radiantcore.m_pfnFileDialog = &file_dialog;
+       m_radiantcore.m_pfnColorDialog = &color_dialog;
+       m_radiantcore.m_pfnDirDialog = &dir_dialog;
+       m_radiantcore.m_pfnNewImage = &new_plugin_image;
+}
+_QERFuncTable_1* getTable(){
+       return &m_radiantcore;
+}
 };
 
 typedef SingletonModule<RadiantCoreAPI> RadiantCoreModule;
 typedef Static<RadiantCoreModule> StaticRadiantCoreModule;
-StaticRegisterModule staticRegisterRadiantCore(StaticRadiantCoreModule::instance());
+StaticRegisterModule staticRegisterRadiantCore( StaticRadiantCoreModule::instance() );
 
 
 class RadiantDependencies :
-  public GlobalRadiantModuleRef,
-  public GlobalFileSystemModuleRef,
-  public GlobalEntityModuleRef,
-  public GlobalShadersModuleRef,
-  public GlobalBrushModuleRef,
-  public GlobalSceneGraphModuleRef,
-  public GlobalShaderCacheModuleRef,
-  public GlobalFiletypesModuleRef,
-  public GlobalSelectionModuleRef,
-  public GlobalReferenceModuleRef,
-  public GlobalOpenGLModuleRef,
-  public GlobalEntityClassManagerModuleRef,
-  public GlobalUndoModuleRef,
-  public GlobalScripLibModuleRef,
-  public GlobalNamespaceModuleRef
+       public GlobalRadiantModuleRef,
+       public GlobalFileSystemModuleRef,
+       public GlobalEntityModuleRef,
+       public GlobalShadersModuleRef,
+       public GlobalBrushModuleRef,
+       public GlobalSceneGraphModuleRef,
+       public GlobalShaderCacheModuleRef,
+       public GlobalFiletypesModuleRef,
+       public GlobalSelectionModuleRef,
+       public GlobalReferenceModuleRef,
+       public GlobalOpenGLModuleRef,
+       public GlobalEntityClassManagerModuleRef,
+       public GlobalUndoModuleRef,
+       public GlobalScripLibModuleRef,
+       public GlobalNamespaceModuleRef
 {
-  ImageModulesRef m_image_modules;
-  MapModulesRef m_map_modules;
-  ToolbarModulesRef m_toolbar_modules;
-  PluginModulesRef m_plugin_modules;
+ImageModulesRef m_image_modules;
+MapModulesRef m_map_modules;
+ToolbarModulesRef m_toolbar_modules;
+PluginModulesRef m_plugin_modules;
 
 public:
-  RadiantDependencies() :
-    GlobalEntityModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entities")),
-    GlobalShadersModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("shaders")),
-    GlobalBrushModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("brushtypes")),
-    GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass")),
-    m_image_modules(GlobalRadiant().getRequiredGameDescriptionKeyValue("texturetypes")),
-    m_map_modules(GlobalRadiant().getRequiredGameDescriptionKeyValue("maptypes")),
-    m_toolbar_modules("*"),
-    m_plugin_modules("*")
-  {
-  }
-
-  ImageModules& getImageModules()
-  {
-    return m_image_modules.get();
-  }
-  MapModules& getMapModules()
-  {
-    return m_map_modules.get();
-  }
-  ToolbarModules& getToolbarModules()
-  {
-    return m_toolbar_modules.get();
-  }
-  PluginModules& getPluginModules()
-  {
-    return m_plugin_modules.get();
-  }
+RadiantDependencies() :
+       GlobalEntityModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "entities" ) ),
+       GlobalShadersModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "shaders" ) ),
+       GlobalBrushModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "brushtypes" ) ),
+       GlobalEntityClassManagerModuleRef( GlobalRadiant().getRequiredGameDescriptionKeyValue( "entityclass" ) ),
+       m_image_modules( GlobalRadiant().getRequiredGameDescriptionKeyValue( "texturetypes" ) ),
+       m_map_modules( GlobalRadiant().getRequiredGameDescriptionKeyValue( "maptypes" ) ),
+       m_toolbar_modules( "*" ),
+       m_plugin_modules( "*" ){
+}
+
+ImageModules& getImageModules(){
+       return m_image_modules.get();
+}
+MapModules& getMapModules(){
+       return m_map_modules.get();
+}
+ToolbarModules& getToolbarModules(){
+       return m_toolbar_modules.get();
+}
+PluginModules& getPluginModules(){
+       return m_plugin_modules.get();
+}
 };
 
 class Radiant : public TypeSystemRef
 {
 public:
-  Radiant()
-  {
-    Preferences_Init();
-
-    GlobalFiletypes().addType("sound", "wav", filetype_t("PCM sound files", "*.wav"));
-
-    Selection_construct();
-    HomePaths_Construct();
-    VFS_Construct();
-    Grid_construct();
-    MultiMon_Construct();
-    MRU_Construct();
-    Pointfile_Construct();
-    GLWindow_Construct();
-    BuildMenu_Construct();
-    Map_Construct();
-    EntityList_Construct();
-    MainFrame_Construct();
-    GroupDialog_Construct();
-    SurfaceInspector_Construct();
-    PatchInspector_Construct();
-    CamWnd_Construct();
-    XYWindow_Construct();
-    BuildMonitor_Construct();
-    TextureBrowser_Construct();
-    Entity_Construct();
-    Autosave_Construct();
-    EntityInspector_construct();
-    FindTextureDialog_Construct();
-    NullModel_construct();
-    MapRoot_construct();
-
-    EnginePath_verify();
-    EnginePath_Realise();
-  }
-  ~Radiant()
-  {
-    EnginePath_Unrealise();
-
-    MapRoot_destroy();
-    NullModel_destroy();
-    FindTextureDialog_Destroy();
-    EntityInspector_destroy();
-    Autosave_Destroy();
-    Entity_Destroy();
-    TextureBrowser_Destroy();
-    BuildMonitor_Destroy();
-    XYWindow_Destroy();
-    CamWnd_Destroy();
-    PatchInspector_Destroy();
-    SurfaceInspector_Destroy();
-    GroupDialog_Destroy();
-    MainFrame_Destroy();
-    EntityList_Destroy();
-    Map_Destroy();
-    BuildMenu_Destroy();
-    GLWindow_Destroy();
-    Pointfile_Destroy();
-    MRU_Destroy();
-    MultiMon_Destroy();
-    Grid_destroy();
-    VFS_Destroy();
-    HomePaths_Destroy();
-    Selection_destroy();
-  }
+Radiant(){
+       Preferences_Init();
+
+       GlobalFiletypes().addType( "sound", "wav", filetype_t( "PCM sound files", "*.wav" ) );
+
+       Selection_construct();
+       HomePaths_Construct();
+       VFS_Construct();
+       Grid_construct();
+       MultiMon_Construct();
+       MRU_Construct();
+       Pointfile_Construct();
+       GLWindow_Construct();
+       BuildMenu_Construct();
+       Map_Construct();
+       EntityList_Construct();
+       MainFrame_Construct();
+       GroupDialog_Construct();
+       SurfaceInspector_Construct();
+       PatchInspector_Construct();
+       CamWnd_Construct();
+       XYWindow_Construct();
+       BuildMonitor_Construct();
+       TextureBrowser_Construct();
+       Entity_Construct();
+       Autosave_Construct();
+       EntityInspector_construct();
+       FindTextureDialog_Construct();
+       NullModel_construct();
+       MapRoot_construct();
+
+       EnginePath_verify();
+       BindMapFileObservers();
+       EnginePath_Realise();
+}
+~Radiant(){
+       EnginePath_Unrealise();
+       UnBindMapFileObservers();
+
+       MapRoot_destroy();
+       NullModel_destroy();
+       FindTextureDialog_Destroy();
+       EntityInspector_destroy();
+       Autosave_Destroy();
+       Entity_Destroy();
+       TextureBrowser_Destroy();
+       BuildMonitor_Destroy();
+       XYWindow_Destroy();
+       CamWnd_Destroy();
+       PatchInspector_Destroy();
+       SurfaceInspector_Destroy();
+       GroupDialog_Destroy();
+       MainFrame_Destroy();
+       EntityList_Destroy();
+       Map_Destroy();
+       BuildMenu_Destroy();
+       GLWindow_Destroy();
+       Pointfile_Destroy();
+       MRU_Destroy();
+       MultiMon_Destroy();
+       Grid_destroy();
+       VFS_Destroy();
+       HomePaths_Destroy();
+       Selection_destroy();
+}
 };
 
 namespace
 {
-  bool g_RadiantInitialised = false;
-  RadiantDependencies* g_RadiantDependencies;
-  Radiant* g_Radiant;
+bool g_RadiantInitialised = false;
+RadiantDependencies* g_RadiantDependencies;
+Radiant* g_Radiant;
 }
 
 
 
-bool Radiant_Construct(ModuleServer& server)
-{
-  GlobalModuleServer::instance().set(server);
-  StaticModuleRegistryList().instance().registerModules();
+bool Radiant_Construct( ModuleServer& server ){
+       GlobalModuleServer::instance().set( server );
+       StaticModuleRegistryList().instance().registerModules();
 
-  g_RadiantDependencies = new RadiantDependencies();
+       g_RadiantDependencies = new RadiantDependencies();
 
-  g_RadiantInitialised = !server.getError();
+       g_RadiantInitialised = !server.getError();
 
-  if(g_RadiantInitialised)
-  {
-    g_Radiant = new Radiant;
-  }
+       if ( g_RadiantInitialised ) {
+               g_Radiant = new Radiant;
+       }
 
-  return g_RadiantInitialised;
+       return g_RadiantInitialised;
 }
-void Radiant_Destroy()
-{
-  if(g_RadiantInitialised)
-  {
-    delete g_Radiant;
-  }
+void Radiant_Destroy(){
+       if ( g_RadiantInitialised ) {
+               delete g_Radiant;
+       }
 
-  delete g_RadiantDependencies;
+       delete g_RadiantDependencies;
 }
 
-ImageModules& Radiant_getImageModules()
-{
-  return g_RadiantDependencies->getImageModules();
+ImageModules& Radiant_getImageModules(){
+       return g_RadiantDependencies->getImageModules();
 }
-MapModules& Radiant_getMapModules()
-{
-  return g_RadiantDependencies->getMapModules();
+MapModules& Radiant_getMapModules(){
+       return g_RadiantDependencies->getMapModules();
 }
-ToolbarModules& Radiant_getToolbarModules()
-{
-  return g_RadiantDependencies->getToolbarModules();
+ToolbarModules& Radiant_getToolbarModules(){
+       return g_RadiantDependencies->getToolbarModules();
 }
-PluginModules& Radiant_getPluginModules()
-{
-  return g_RadiantDependencies->getPluginModules();
+PluginModules& Radiant_getPluginModules(){
+       return g_RadiantDependencies->getPluginModules();
 }
-
-