clean up toggleProjection code
authorRudolf Polzer <divverent@alientrap.org>
Sun, 10 Oct 2010 11:53:40 +0000 (13:53 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sun, 10 Oct 2010 11:53:40 +0000 (13:53 +0200)
radiant/brushmodule.cpp
radiant/brushmodule.h
radiant/map.cpp

index d5853f0..da508c0 100644 (file)
@@ -91,25 +91,25 @@ void Brush_registerPreferencesPage()
 }
 
 void Brush_unlatchPreferences()
+{
+       Brush_toggleProjection(0);
+}
+
+void Brush_toggleProjection(int i)
 {
        if(g_showAlternativeTextureProjectionOption)
        {
-               g_useAlternativeTextureProjection.useLatched();
-               globalErrorStream() << "Unlatched g_useAlternativeTextureProjection (" << g_useAlternativeTextureProjection.m_value << ")\n";
+               g_useAlternativeTextureProjection.m_value = g_useAlternativeTextureProjection.m_latched ^ i;
                Brush::destroyStatic();
                Brush::constructStatic(g_useAlternativeTextureProjection.m_value ? eBrushTypeQuake3BP : eBrushTypeQuake3);
        }
 }
 
-void Brush_toggleProjection()
+int Brush_toggleProjectionCount()
 {
        if(g_showAlternativeTextureProjectionOption)
-       {
-               g_useAlternativeTextureProjection.m_value = !g_useAlternativeTextureProjection.m_value;
-               globalErrorStream() << "Toggled g_useAlternativeTextureProjection (" << g_useAlternativeTextureProjection.m_value << ")\n";
-               Brush::destroyStatic();
-               Brush::constructStatic(g_useAlternativeTextureProjection.m_value ? eBrushTypeQuake3BP : eBrushTypeQuake3);
-       }
+               return 2;
+       return 1;
 }
 
 void Brush_Construct(EBrushType type)
index efb808a..4a0e40e 100644 (file)
@@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 void Brush_clipperColourChanged();
 void Brush_unlatchPreferences();
-void Brush_toggleProjection();
+int Brush_toggleProjectionCount();
+void Brush_toggleProjection(int i);
 
 #endif
index 339de05..86b1123 100644 (file)
@@ -1046,12 +1046,15 @@ void Map_LoadFile (const char *filename)
     if(format->wrongFormat)
     {
       // try toggling BrushPrimitives
-      Map_Free();
-      Brush_toggleProjection();
-      g_map.m_name = filename;
-      Map_UpdateTitle(g_map);
-      g_map.m_resource = GlobalReferenceCache().capture(g_map.m_name.c_str());
-      g_map.m_resource->attach(g_map);
+      for(i = 1; i < Brush_toggleProjectionCount(); ++i)
+      {
+       Map_Free();
+       Brush_toggleProjection(i);
+       g_map.m_name = filename;
+       Map_UpdateTitle(g_map);
+       g_map.m_resource = GlobalReferenceCache().capture(g_map.m_name.c_str());
+       g_map.m_resource->attach(g_map);
+      }
     }
 
     Node_getTraversable(GlobalSceneGraph().root())->traverse(entity_updateworldspawn());