summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIra Rice <irarice@gmail.com>2008-10-13 17:34:42 +0000
committerIra Rice <irarice@gmail.com>2008-10-13 17:34:42 +0000
commit8003fcc9f42a42170a16bdf976bb73fdf34a761e (patch)
treeabb550979c6eeacf1db7659df4aceb7d963d0590
parenta4d2f2c0373848fa8a886c1dddc6247b81527df3 (diff)
downloadmana-8003fcc9f42a42170a16bdf976bb73fdf34a761e.tar.gz
mana-8003fcc9f42a42170a16bdf976bb73fdf34a761e.tar.bz2
mana-8003fcc9f42a42170a16bdf976bb73fdf34a761e.tar.xz
mana-8003fcc9f42a42170a16bdf976bb73fdf34a761e.zip
Changed minimap code so that it allows us to have larger minimaps, while
putting back in backwards compatibility with TMW style minimaps. While this might seem like a big deal, it also allows us to make minimaps as big as we'd like, which is a huge perk for really large maps or really small ones.
-rw-r--r--src/engine.cpp6
-rw-r--r--src/gui/minimap.cpp15
-rw-r--r--src/gui/minimap.h6
3 files changed, 22 insertions, 5 deletions
diff --git a/src/engine.cpp b/src/engine.cpp
index 42054ffb..e4361f96 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -107,6 +107,12 @@ void Engine::changeMap(const std::string &mapPath)
minimap->setCaption("Unknown");
logger->log("WARNING: Map file '%s' defines a minimap image but does not define a 'mapname' property", map_path.c_str());
}
+ // How many pixels equal one tile. .5 (which is the TMW default) is 2 tiles to a pixel,
+ // while 1 is 1 tile to 1 pixel
+ if (newMap->hasProperty("minimapproportion"))
+ {
+ minimap->setProportion(atof(newMap->getProperty("minimapproportion").c_str()));
+ }
}
minimap->setMapImage(mapImage);
beingManager->setMap(newMap);
diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp
index 9f4df73c..1f3a903c 100644
--- a/src/gui/minimap.cpp
+++ b/src/gui/minimap.cpp
@@ -32,7 +32,8 @@
Minimap::Minimap():
Window("Map"),
- mMapImage(NULL)
+ mMapImage(NULL),
+ mProportion(0.5)
{
setWindowName("MiniMap");
}
@@ -57,9 +58,13 @@ void Minimap::setMapImage(Image *img)
if (mMapImage)
{
mMapImage->setAlpha(0.7);
- setDefaultSize(5, 25, img->getWidth(), img->getHeight());
+ setDefaultSize(5, 25, mMapImage->getWidth(), mMapImage->getHeight());
loadWindowState();
}
+ else
+ {
+ setVisible(false);
+ }
}
void Minimap::draw(gcn::Graphics *graphics)
@@ -103,11 +108,11 @@ void Minimap::draw(gcn::Graphics *graphics)
continue;
}
- int offset = (dotSize - 1);
+ int offset = (dotSize - 1) * mProportion;
graphics->fillRectangle(gcn::Rectangle(
- being->mX + getPadding() - offset,
- being->mY + getTitleBarHeight() - offset,
+ (being->mX * mProportion) + getPadding() - offset,
+ (being->mY * mProportion) + getTitleBarHeight() - offset,
dotSize, dotSize));
}
}
diff --git a/src/gui/minimap.h b/src/gui/minimap.h
index 0ec13e67..a3b14729 100644
--- a/src/gui/minimap.h
+++ b/src/gui/minimap.h
@@ -54,12 +54,18 @@ class Minimap : public Window
void setMapImage(Image *img);
/**
+ * Sets the map proportion (1 means 1 tile to one pixel, .5 means 2 tiles to 1 pixel, etc.)
+ */
+ void setProportion(float proportion) { mProportion = proportion; }
+
+ /**
* Draws the minimap.
*/
void draw(gcn::Graphics *graphics);
private:
Image *mMapImage;
+ float mProportion;
};
extern Minimap *minimap;