From 6e052536a2dfb7f877a356477bc86c904aae1e71 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Wed, 9 Jul 2014 11:49:46 +0300
Subject: Add empty map mode without collisions.

Mode can be switched from yellow bar.
Also renamed map draw type related variables and methods.
---
 src/actionmanager.cpp            |  2 +-
 src/being/localplayer.cpp        | 18 +++++++++++-------
 src/being/localplayer.h          |  2 +-
 src/gui/popups/statuspopup.cpp   |  2 +-
 src/gui/viewport.cpp             | 25 ++++++++++++++-----------
 src/gui/viewport.h               | 12 ++++++------
 src/gui/windows/statuswindow.cpp |  2 +-
 src/resources/map/map.cpp        | 18 ++++++++++--------
 src/resources/map/map.h          | 10 +++++-----
 src/resources/map/maplayer.cpp   | 36 +++++++++++++++++++++---------------
 src/resources/map/maplayer.h     |  8 ++++----
 src/resources/map/maptype.h      |  3 ++-
 12 files changed, 77 insertions(+), 61 deletions(-)

diff --git a/src/actionmanager.cpp b/src/actionmanager.cpp
index 47b3503e1..1896e333d 100644
--- a/src/actionmanager.cpp
+++ b/src/actionmanager.cpp
@@ -884,7 +884,7 @@ impHandler0(updaterWindowShow)
 impHandler0(changeMapMode)
 {
     if (viewport)
-        viewport->toggleDebugPath();
+        viewport->toggleMapDrawType();
     UpdateStatusListener::distributeEvent();
     if (Game::instance())
     {
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp
index 52bf2d75d..c069a6e4e 100644
--- a/src/being/localplayer.cpp
+++ b/src/being/localplayer.cpp
@@ -1520,7 +1520,7 @@ std::string LocalPlayer::getPickUpTypeString()
         mPickUpType, pickUpTypeSize));
 }
 
-const unsigned debugPathSize = 5;
+const unsigned debugPathSize = 7;
 
 static const char *const debugPathStrings[] =
 {
@@ -1533,15 +1533,19 @@ static const char *const debugPathStrings[] =
     // TRANSLATORS: map view type in status bar
     N_("(U) ultra map view 2"),
     // TRANSLATORS: map view type in status bar
-    N_("(e) empty map view"),
+    N_("(e) empty map view with collision"),
     // TRANSLATORS: map view type in status bar
-    N_("(b) black & white map view")
+    N_("(E) empty map view"),
+    // TRANSLATORS: map view type in status bar
+    N_("(b) black & white map view"),
+    // TRANSLATORS: pickup size in status bar
+    N_("(?) map view")
 };
 
-std::string LocalPlayer::getDebugPathString()
+std::string LocalPlayer::getMapDrawTypeString()
 {
     return gettext(getVarItem(&debugPathStrings[0],
-        viewport->getDebugPath(), debugPathSize));
+        viewport->getMapDrawType(), debugPathSize));
 }
 
 const unsigned magicAttackSize = 5;
@@ -3733,12 +3737,12 @@ void LocalPlayer::resetYellowBar()
     mPickUpType = config.resetIntValue("pickUpType");
     if (viewport)
     {
-        viewport->setDebugPath(0);
+        viewport->setMapDrawType(0);
         if (viewport->getCameraMode())
             viewport->toggleCameraMode();
     }
     if (mMap)
-        mMap->setDebugFlags(0);
+        mMap->setDrawLayersFlags(0);
     mImitationMode = config.resetIntValue("imitationMode");
     mDisableGameModifiers = config.resetBoolValue("disableGameModifiers");
 
diff --git a/src/being/localplayer.h b/src/being/localplayer.h
index 2eb236918..8e72bf5d6 100644
--- a/src/being/localplayer.h
+++ b/src/being/localplayer.h
@@ -468,7 +468,7 @@ class LocalPlayer final : public Being,
 
         std::string getPickUpTypeString();
 
-        static std::string getDebugPathString();
+        static std::string getMapDrawTypeString();
 
         std::string getMagicAttackString();
 
diff --git a/src/gui/popups/statuspopup.cpp b/src/gui/popups/statuspopup.cpp
index a1e0b502c..f2f934d1b 100644
--- a/src/gui/popups/statuspopup.cpp
+++ b/src/gui/popups/statuspopup.cpp
@@ -154,7 +154,7 @@ void StatusPopup::updateLabels() const
         InputAction::SWITCH_QUICK_DROP);
     setLabelText(7, player_node->getPickUpTypeString(),
         InputAction::CHANGE_PICKUP_TYPE);
-    setLabelText(8, LocalPlayer::getDebugPathString(),
+    setLabelText(8, LocalPlayer::getMapDrawTypeString(),
         InputAction::PATHFIND);
     setLabelText(9, player_node->getMagicAttackString(),
         InputAction::SWITCH_MAGIC_ATTACK);
diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp
index 225b88f30..1c0694ca3 100644
--- a/src/gui/viewport.cpp
+++ b/src/gui/viewport.cpp
@@ -79,7 +79,7 @@ Viewport::Viewport() :
     mMousePressY(0),
     mPixelViewX(0),
     mPixelViewY(0),
-    mShowDebugPath(MapType::NORMAL),
+    mMapDrawType(MapType::NORMAL),
     mCameraMode(0),
     mLocalWalkTime(-1),
     mCameraRelativeX(0),
@@ -122,7 +122,7 @@ Viewport::~Viewport()
 void Viewport::setMap(Map *const map)
 {
     if (mMap && map)
-        map->setDebugFlags(mMap->getDebugFlags());
+        map->setDrawLayersFlags(mMap->getDrawLayersFlags());
     mMap = map;
 }
 
@@ -237,11 +237,14 @@ void Viewport::draw(Graphics *graphics)
     // Draw tiles and sprites
     mMap->draw(graphics, mPixelViewX, mPixelViewY);
 
-    if (mShowDebugPath)
+    if (mMapDrawType != MapType::NORMAL)
     {
-        mMap->drawCollision(graphics, mPixelViewX,
-            mPixelViewY, mShowDebugPath);
-        if (mShowDebugPath == MapType::DEBUG)
+        if (mMapDrawType != MapType::SPECIAL4)
+        {
+            mMap->drawCollision(graphics, mPixelViewX,
+                mPixelViewY, mMapDrawType);
+        }
+        if (mMapDrawType == MapType::DEBUG)
             drawDebugPath(graphics);
     }
 
@@ -990,13 +993,13 @@ void Viewport::mouseMoved(MouseEvent &event A_UNUSED)
     }
 }
 
-void Viewport::toggleDebugPath()
+void Viewport::toggleMapDrawType()
 {
-    mShowDebugPath++;
-    if (mShowDebugPath > MapType::BLACKWHITE)
-        mShowDebugPath = MapType::NORMAL;
+    mMapDrawType++;
+    if (mMapDrawType > MapType::BLACKWHITE)
+        mMapDrawType = MapType::NORMAL;
     if (mMap)
-        mMap->setDebugFlags(mShowDebugPath);
+        mMap->setDrawLayersFlags(mMapDrawType);
 }
 
 void Viewport::toggleCameraMode()
diff --git a/src/gui/viewport.h b/src/gui/viewport.h
index d401a3af4..4a7abea93 100644
--- a/src/gui/viewport.h
+++ b/src/gui/viewport.h
@@ -96,7 +96,7 @@ class Viewport final : public WindowContainer,
          * debug with all images and grid, debug with out big images
          * and with out grid.
          */
-        void toggleDebugPath();
+        void toggleMapDrawType();
 
         void toggleCameraMode();
 
@@ -242,11 +242,11 @@ class Viewport final : public WindowContainer,
         void scrollBy(const int x, const int y)
         { mPixelViewX += x; mPixelViewY += y; }
 
-        int getDebugPath() const A_WARN_UNUSED
-        { return mShowDebugPath; }
+        int getMapDrawType() const A_WARN_UNUSED
+        { return mMapDrawType; }
 
-        void setDebugPath(const int n)
-        { mShowDebugPath = n; }
+        void setMapDrawType(const int n)
+        { mMapDrawType = n; }
 
         int getCameraMode() const A_WARN_UNUSED
         { return mCameraMode; }
@@ -344,7 +344,7 @@ class Viewport final : public WindowContainer,
         int mMousePressY;
         int mPixelViewX;            /**< Current viewpoint in pixels. */
         int mPixelViewY;            /**< Current viewpoint in pixels. */
-        int mShowDebugPath;         /**< Show a path from player to pointer. */
+        int mMapDrawType;         /**< Show a path from player to pointer. */
         int mCameraMode;            /**< Camera mode. */
 
         int mLocalWalkTime; /**< Timestamp before the next walk can be sent. */
diff --git a/src/gui/windows/statuswindow.cpp b/src/gui/windows/statuswindow.cpp
index 4a4c82cf6..bf2e92e0b 100644
--- a/src/gui/windows/statuswindow.cpp
+++ b/src/gui/windows/statuswindow.cpp
@@ -654,7 +654,7 @@ void StatusWindow::updateStatusBar(ProgressBar *const bar,
         player_node->getQuickDropCounterString()))
         .append(translateLetter2(player_node->getPickUpTypeString()))
         .append(" ").append(translateLetter2(
-        LocalPlayer::getDebugPathString()))
+        LocalPlayer::getMapDrawTypeString()))
         .append(" ").append(translateLetter2(
         player_node->getImitationModeString()))
         .append(translateLetter2(LocalPlayer::getCameraModeString()))
diff --git a/src/resources/map/map.cpp b/src/resources/map/map.cpp
index 3d13ba2e5..e588d12bc 100644
--- a/src/resources/map/map.cpp
+++ b/src/resources/map/map.cpp
@@ -89,7 +89,7 @@ Map::Map(const int width, const int height,
     mTilesets(),
     mActors(),
     mHasWarps(false),
-    mDebugFlags(MapType::NORMAL),
+    mDrawLayersFlags(MapType::NORMAL),
     mOnClosedList(1),
     mOnOpenList(2),
     mBackgrounds(),
@@ -340,7 +340,7 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY)
     // Draw backgrounds
     drawAmbientLayers(graphics, BACKGROUND_LAYERS, mOverlayDetail);
 
-    if (mDebugFlags == MapType::BLACKWHITE && userPalette)
+    if (mDrawLayersFlags == MapType::BLACKWHITE && userPalette)
     {
         graphics->setColor(userPalette->getColorWithAlpha(
             UserPalette::WALKABLE_HIGHLIGHT));
@@ -378,14 +378,16 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY)
     }
 #endif
 
-    if (mDebugFlags == MapType::SPECIAL3 || mDebugFlags == MapType::BLACKWHITE)
+    if (mDrawLayersFlags == MapType::SPECIAL3
+        || mDrawLayersFlags == MapType::SPECIAL4
+        || mDrawLayersFlags == MapType::BLACKWHITE)
     {
         if (mFringeLayer)
         {
             mFringeLayer->setSpecialLayer(mSpecialLayer);
             mFringeLayer->setTempLayer(mTempLayer);
             mFringeLayer->drawFringe(graphics, startX, startY, endX, endY,
-                scrollX, scrollY, &mActors, mDebugFlags, mActorFixY);
+                scrollX, scrollY, &mActors, mDrawLayersFlags, mActorFixY);
         }
     }
     else
@@ -403,11 +405,11 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY)
             {
                 layer->setSpecialLayer(mSpecialLayer);
                 layer->setTempLayer(mTempLayer);
-                if (mDebugFlags == MapType::SPECIAL2)
+                if (mDrawLayersFlags == MapType::SPECIAL2)
                     overFringe = true;
 
                 layer->drawFringe(graphics, startX, startY, endX, endY,
-                    scrollX, scrollY, &mActors, mDebugFlags, mActorFixY);
+                    scrollX, scrollY, &mActors, mDrawLayersFlags, mActorFixY);
             }
             else
             {
@@ -419,7 +421,7 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY)
                     if (updateFlag)
                     {
                         layer->updateOGL(graphics, startX, startY,
-                            endX, endY, scrollX, scrollY, mDebugFlags);
+                            endX, endY, scrollX, scrollY, mDrawLayersFlags);
                     }
 
                     layer->drawOGL(graphics);
@@ -428,7 +430,7 @@ void Map::draw(Graphics *const graphics, int scrollX, int scrollY)
 #endif
                 {
                     layer->draw(graphics, startX, startY, endX, endY,
-                        scrollX, scrollY, mDebugFlags);
+                        scrollX, scrollY, mDrawLayersFlags);
                 }
             }
         }
diff --git a/src/resources/map/map.h b/src/resources/map/map.h
index e8be23ca4..cf2d0c1e9 100644
--- a/src/resources/map/map.h
+++ b/src/resources/map/map.h
@@ -217,11 +217,11 @@ class Map final : public Properties, public ConfigListener
         void addAnimation(const int gid, TileAnimation *const animation)
         { mTileAnimations[gid] = animation; }
 
-        void setDebugFlags(const int n)
-        { mDebugFlags = n; }
+        void setDrawLayersFlags(const int n)
+        { mDrawLayersFlags = n; }
 
-        int getDebugFlags() const A_WARN_UNUSED
-        { return mDebugFlags; }
+        int getDrawLayersFlags() const A_WARN_UNUSED
+        { return mDrawLayersFlags; }
 
         void addExtraLayer();
 
@@ -380,7 +380,7 @@ class Map final : public Properties, public ConfigListener
         bool mHasWarps;
 
         // debug flags
-        int mDebugFlags;
+        int mDrawLayersFlags;
 
         // Pathfinding members
         unsigned int mOnClosedList;
diff --git a/src/resources/map/maplayer.cpp b/src/resources/map/maplayer.cpp
index 2b8d4b514..308e27c86 100644
--- a/src/resources/map/maplayer.cpp
+++ b/src/resources/map/maplayer.cpp
@@ -92,7 +92,7 @@ void MapLayer::setTile(const int x, const int y, Image *const img)
 void MapLayer::draw(Graphics *const graphics,
                     int startX, int startY, int endX, int endY,
                     const int scrollX, const int scrollY,
-                    const int debugFlags) const
+                    const int layerDrawFlags) const
 {
     if (!player_node)
         return;
@@ -114,8 +114,9 @@ void MapLayer::draw(Graphics *const graphics,
 
     const int dx = (mX * mapTileSize) - scrollX;
     const int dy = (mY * mapTileSize) - scrollY + mapTileSize;
-    const bool flag = (debugFlags != MapType::SPECIAL
-        && debugFlags != MapType::SPECIAL2);
+    const bool flag = (layerDrawFlags != MapType::SPECIAL
+        && layerDrawFlags != MapType::SPECIAL2
+        && layerDrawFlags != MapType::SPECIAL4);
 
     for (int y = startY; y < endY; y++)
     {
@@ -185,7 +186,7 @@ void MapLayer::updateSDL(const Graphics *const graphics,
                          int startX, int startY,
                          int endX, int endY,
                          const int scrollX, const int scrollY,
-                         const int debugFlags)
+                         const int layerDrawFlags)
 {
     BLOCK_START("MapLayer::updateSDL")
     delete_all(mTempRows);
@@ -207,8 +208,9 @@ void MapLayer::updateSDL(const Graphics *const graphics,
 
     const int dx = (mX * mapTileSize) - scrollX;
     const int dy = (mY * mapTileSize) - scrollY + mapTileSize;
-    const bool flag = (debugFlags != MapType::SPECIAL
-        && debugFlags != MapType::SPECIAL2);
+    const bool flag = (layerDrawFlags != MapType::SPECIAL
+        && layerDrawFlags != MapType::SPECIAL2
+        && layerDrawFlags != MapType::SPECIAL4);
 
     for (int y = startY; y < endY; y++)
     {
@@ -250,7 +252,7 @@ void MapLayer::updateOGL(Graphics *const graphics,
                          int startX, int startY,
                          int endX, int endY,
                          const int scrollX, const int scrollY,
-                         const int debugFlags)
+                         const int layerDrawFlags)
 {
     BLOCK_START("MapLayer::updateOGL")
     delete_all(mTempRows);
@@ -272,8 +274,9 @@ void MapLayer::updateOGL(Graphics *const graphics,
 
     const int dx = (mX * mapTileSize) - scrollX;
     const int dy = (mY * mapTileSize) - scrollY + mapTileSize;
-    const bool flag = (debugFlags != MapType::SPECIAL
-        && debugFlags != MapType::SPECIAL2);
+    const bool flag = (layerDrawFlags != MapType::SPECIAL
+        && layerDrawFlags != MapType::SPECIAL2
+        && layerDrawFlags != MapType::SPECIAL4);
 
     MapRowVertexes *const row = new MapRowVertexes();
     mTempRows.push_back(row);
@@ -365,7 +368,7 @@ void MapLayer::drawFringe(Graphics *const graphics, int startX, int startY,
                           int endX, int endY,
                           const int scrollX, const int scrollY,
                           const Actors *const actors,
-                          const int debugFlags, const int yFix) const
+                          const int layerDrawFlags, const int yFix) const
 {
     BLOCK_START("MapLayer::drawFringe")
     if (!player_node || !mSpecialLayer || !mTempLayer)
@@ -413,8 +416,9 @@ void MapLayer::drawFringe(Graphics *const graphics, int startX, int startY,
         }
         BLOCK_END("MapLayer::drawFringe drawmobs")
 
-        if (debugFlags == MapType::SPECIAL3
-            || debugFlags == MapType::BLACKWHITE)
+        if (layerDrawFlags == MapType::SPECIAL3
+            || layerDrawFlags == MapType::SPECIAL4
+            || layerDrawFlags == MapType::BLACKWHITE)
         {
             if (y < specialHeight)
             {
@@ -463,8 +467,9 @@ void MapLayer::drawFringe(Graphics *const graphics, int startX, int startY,
                 {
                     const int px = x32 + dx;
                     const int py = py0 - img->mBounds.h;
-                    if ((debugFlags != MapType::SPECIAL
-                        && debugFlags != MapType::SPECIAL2)
+                    if ((layerDrawFlags != MapType::SPECIAL
+                        && layerDrawFlags != MapType::SPECIAL2
+                        && layerDrawFlags != MapType::SPECIAL4)
                         || img->mBounds.h <= mapTileSize)
                     {
                         int width = 0;
@@ -522,7 +527,8 @@ void MapLayer::drawFringe(Graphics *const graphics, int startX, int startY,
     }
 
     // Draw any remaining actors
-    if (debugFlags != MapType::SPECIAL3)
+    if (layerDrawFlags != MapType::SPECIAL3
+        && layerDrawFlags != MapType::SPECIAL4)
     {
         BLOCK_START("MapLayer::drawFringe drawmobs")
         while (ai != ai_end)
diff --git a/src/resources/map/maplayer.h b/src/resources/map/maplayer.h
index e82aa5870..f91134c77 100644
--- a/src/resources/map/maplayer.h
+++ b/src/resources/map/maplayer.h
@@ -89,7 +89,7 @@ class MapLayer final: public ConfigListener
         void draw(Graphics *const graphics,
                   int startX, int startY, int endX, int endY,
                   const int scrollX, const int scrollY,
-                  const int mDebugFlags) const;
+                  const int layerDrawFlags) const;
 
         void drawSDL(Graphics *const graphics);
 
@@ -100,21 +100,21 @@ class MapLayer final: public ConfigListener
                        int startX, int startY,
                        int endX, int endY,
                        const int scrollX, const int scrollY,
-                       const int mDebugFlags);
+                       const int layerDrawFlags);
 #endif
 
         void updateSDL(const Graphics *const graphics,
                        int startX, int startY,
                        int endX, int endY,
                        const int scrollX, const int scrollY,
-                       const int mDebugFlags);
+                       const int layerDrawFlags);
 
         void drawFringe(Graphics *const graphics,
                         int startX, int startY,
                         int endX, int endY,
                         const int scrollX, const int scrollY,
                         const Actors *const actors,
-                        const int mDebugFlags, const int yFix) const;
+                        const int layerDrawFlags, const int yFix) const;
 
         bool isFringeLayer() const A_WARN_UNUSED
         { return mIsFringeLayer; }
diff --git a/src/resources/map/maptype.h b/src/resources/map/maptype.h
index 9580cdd1f..9894fe631 100644
--- a/src/resources/map/maptype.h
+++ b/src/resources/map/maptype.h
@@ -32,7 +32,8 @@ namespace MapType
         SPECIAL = 2,
         SPECIAL2 = 3,
         SPECIAL3 = 4,
-        BLACKWHITE = 5
+        SPECIAL4 = 5,
+        BLACKWHITE = 6
     };
 }
 
-- 
cgit v1.2.3-70-g09d2