diff --git a/Aquaria/Avatar.cpp b/Aquaria/Avatar.cpp index b14bcd4..dd2cb05 100644 --- a/Aquaria/Avatar.cpp +++ b/Aquaria/Avatar.cpp @@ -4125,6 +4125,8 @@ Avatar::Avatar() : Entity(), ActionMapper() _collisionAvoidMod = COLLIDE_MOD_NORMAL; _collisionAvoidRange = COLLIDE_RANGE_NORMAL; + + _seeMapMode = SEE_MAP_DEFAULT; } void Avatar::revert() @@ -4884,10 +4886,6 @@ void Avatar::clampVelocity() } } - - - - if (!inCurrent || (inCurrent && withCurrent)) { if (dsq->continuity.form == FORM_FISH) diff --git a/Aquaria/Avatar.h b/Aquaria/Avatar.h index afad10d..28ed710 100644 --- a/Aquaria/Avatar.h +++ b/Aquaria/Avatar.h @@ -66,6 +66,13 @@ enum AvatarAnimLayers ANIMLAYER_MAX }; +enum SeeMapMode +{ + SEE_MAP_NEVER = 0, + SEE_MAP_DEFAULT = 1, + SEE_MAP_ALWAYS = 2, +} + class SongIconParticle : public Quad { public: @@ -334,6 +341,9 @@ public: void setCollisionAvoidanceData(int range, float mod); + void setSeeMapMode(SeeMapMode mode) { _seeMapMode = mode; } + SeeMapMode getSeeMapMode() const { return _seeMapMode; } + int leaches; protected: @@ -471,6 +481,7 @@ protected: bool _canLockToWall; bool _canSwimAgainstCurrents; bool _canCollideWithShots; + SeeMapMode _seeMapMode; int _collisionAvoidRange; float _collisionAvoidMod; diff --git a/Aquaria/MiniMapRender.cpp b/Aquaria/MiniMapRender.cpp index 095db91..77e6668 100644 --- a/Aquaria/MiniMapRender.cpp +++ b/Aquaria/MiniMapRender.cpp @@ -258,11 +258,18 @@ void MiniMapRender::onUpdate(float dt) if (dsq->darkLayer.isUsed() && dsq->game->avatar) { - if (dsq->continuity.form != FORM_SUN && dsq->game->avatar->isInDarkness()) + const SeeMapMode mapmode = dsq->game->avatar->getSeeMapMode(); + + if(mapmode == SEE_MAP_ALWAYS) + radarHide = false; + else if(mapmode == SEE_MAP_NEVER) + radarHide = true; + else if (dsq->continuity.form != FORM_SUN && dsq->game->avatar->isInDarkness()) { radarHide = true; } - else + + if(!radarHide) { for (Path *p = dsq->game->getFirstPathOfType(PATH_RADARHIDE); p; p = p->nextOfType) { @@ -273,6 +280,7 @@ void MiniMapRender::onUpdate(float dt) } } } + float t = dt*2; if (radarHide) { diff --git a/Aquaria/ScriptInterface.cpp b/Aquaria/ScriptInterface.cpp index 93d3c6c..e9506b7 100644 --- a/Aquaria/ScriptInterface.cpp +++ b/Aquaria/ScriptInterface.cpp @@ -2725,6 +2725,12 @@ luaFunc(setCanActivate) luaReturnNil(); } +luaFunc(setSeeMapMode) +{ + dsq->game->avatar->setSeeMapMode((SeeMapMode)lua_tointeger(L, 1)); + luaReturnNil(); +} + luaFunc(avatar_setCanBurst) { dsq->game->avatar->setCanBurst(getBool(L, 1)); @@ -2775,7 +2781,6 @@ luaFunc(avatar_setCollisionAvoidanceData) luaReturnNil(); } - luaFunc(avatar_toggleCape) { dsq->game->avatar->toggleCape(getBool(L,1)); @@ -9241,6 +9246,10 @@ static const struct { luaConstant(OT_INVISIBLEIN), luaConstant(OT_HURT), luaConstant(OT_INVISIBLEENT), + + luaConstant(SEE_MAP_NEVER), + luaConstant(SEE_MAP_DEFAULT), + luaConstant(SEE_MAP_ALWAYS), }; //============================================================================================