1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-07-03 06:24:32 +00:00

Implement new (optional) world map reveal method.

This one doesn't give the whole map away already just after entering it.
This commit is contained in:
fgenesis 2012-10-13 05:43:47 +02:00
parent 6f05249fdc
commit 8cad58f0c4
2 changed files with 52 additions and 9 deletions

View file

@ -67,6 +67,12 @@ protected:
InterpolatedVector lerp; InterpolatedVector lerp;
}; };
enum WorldMapRevealMethod
{
REVEAL_DEFAULT = 0,
REVEAL_PARTIAL = 1 // Not visited areas have zero alpha (invisible)
};
class WorldMapRender : public RenderObject, public ActionMapper class WorldMapRender : public RenderObject, public ActionMapper
{ {
public: public:
@ -86,6 +92,9 @@ public:
void removeGem(GemMover *gemMover); void removeGem(GemMover *gemMover);
void onToggleHelpScreen(); void onToggleHelpScreen();
bool isCursorOffHud(); bool isCursorOffHud();
static void setRevealMethod(WorldMapRevealMethod m);
protected: protected:
Quad *addHintQuad1, *addHintQuad2; Quad *addHintQuad1, *addHintQuad2;
AquariaMenuItem *helpButton; AquariaMenuItem *helpButton;

View file

@ -44,11 +44,12 @@ namespace WorldMapRenderNamespace
enum VisMethod enum VisMethod
{ {
VIS_VERTEX = 0, VIS_VERTEX = 0, // Uses the RenderObject tile grid (RenderObject::setSegs()) to display visited areas
VIS_WRITE = 1 VIS_WRITE = 1 // Uses render-to-texture instead
}; };
VisMethod visMethod = VIS_VERTEX; VisMethod visMethod = VIS_VERTEX;
WorldMapRevealMethod revMethod = REVEAL_DEFAULT;
std::vector<Quad *> tiles; std::vector<Quad *> tiles;
@ -84,6 +85,23 @@ WorldMapTile *activeTile=0;
const float beaconSpawnBitTime = 0.05; const float beaconSpawnBitTime = 0.05;
void WorldMapRender::setRevealMethod(WorldMapRevealMethod m)
{
switch(m)
{
case REVEAL_PARTIAL:
revMethod = REVEAL_PARTIAL;
baseMapSegAlpha = 0;
break;
default:
revMethod = REVEAL_DEFAULT;
baseMapSegAlpha = 0.4;
}
}
class WorldMapBoundQuad : public Quad class WorldMapBoundQuad : public Quad
{ {
public: public:
@ -731,8 +749,6 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
q->alphaMod = 0; q->alphaMod = 0;
tile->q = q; tile->q = q;
setProperTileColor(tile);
q->setWidthHeight(q->getWidth()*tile->scale, q->getHeight()*tile->scale); q->setWidthHeight(q->getWidth()*tile->scale, q->getHeight()*tile->scale);
q->scale = Vector(0.25f*tile->scale2, 0.25f*tile->scale2); q->scale = Vector(0.25f*tile->scale2, 0.25f*tile->scale2);
@ -740,10 +756,18 @@ WorldMapRender::WorldMapRender() : RenderObject(), ActionMapper()
if (tile == activeTile) if (tile == activeTile)
activeQuad = q; activeQuad = q;
if (activeQuad == q) if (revMethod == REVEAL_PARTIAL || activeQuad == q)
{ {
setVis(tile); setVis(tile);
} }
setProperTileColor(tile);
if(activeQuad == q)
{
activeTile->q->color = Vector(1,1,1);
activeTile->q->alphaMod = 1;
}
addChild(q, PM_POINTER); addChild(q, PM_POINTER);
@ -861,7 +885,13 @@ void WorldMapRender::bindInput()
void WorldMapRender::destroy() void WorldMapRender::destroy()
{ {
clearVis(activeTile); //clearVis(activeTile);
for (int i = 0; i < dsq->continuity.worldMap.getNumWorldMapTiles(); i++)
{
WorldMapTile *tile = dsq->continuity.worldMap.getWorldMapTile(i);
clearVis(tile);
}
RenderObject::destroy(); RenderObject::destroy();
delete[] savedTexData; delete[] savedTexData;
} }
@ -973,7 +1003,8 @@ void WorldMapRender::onUpdate(float dt)
{ {
if ((activeTile != selectedTile) && selectedTile->q) if ((activeTile != selectedTile) && selectedTile->q)
{ {
clearVis(activeTile); if(revMethod == REVEAL_DEFAULT)
clearVis(activeTile);
activeTile = selectedTile; activeTile = selectedTile;
activeQuad = activeTile->q; activeQuad = activeTile->q;
@ -1428,8 +1459,11 @@ void WorldMapRender::toggle(bool turnON)
{ {
if (activeTile != originalActiveTile) if (activeTile != originalActiveTile)
{ {
clearVis(activeTile); if(revMethod == REVEAL_DEFAULT)
setVis(originalActiveTile); {
clearVis(activeTile);
setVis(originalActiveTile);
}
activeTile = originalActiveTile; activeTile = originalActiveTile;
activeQuad = activeTile->q; activeQuad = activeTile->q;
} }