1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-21 21:17:49 +02:00

Make object fade-out / fade-in instant on instant movement speed

This commit is contained in:
Ivan Savenko 2023-08-10 12:54:26 +03:00
parent 45215f12f3
commit e9fb0c9b8c
2 changed files with 21 additions and 4 deletions

View File

@ -247,6 +247,20 @@ void MapViewController::afterRender()
}
}
bool MapViewController::isEventInstant(const CGObjectInstance * obj)
{
if (!isEventVisible(obj))
return true;
if(!LOCPLINT->makingTurn && settings["adventure"]["enemyMoveTime"].Float() <= 0)
return true; // instant movement speed
if(LOCPLINT->makingTurn && settings["adventure"]["heroMoveTime"].Float() <= 0)
return true; // instant movement speed
return false;
}
bool MapViewController::isEventVisible(const CGObjectInstance * obj)
{
if(adventureContext == nullptr)
@ -358,7 +372,8 @@ void MapViewController::onBeforeHeroEmbark(const CGHeroInstance * obj, const int
{
if(isEventVisible(obj, from, dest))
{
fadeOutObject(obj);
if (!isEventInstant(obj))
fadeOutObject(obj);
setViewCenter(obj->getSightCenter());
}
else
@ -381,7 +396,8 @@ void MapViewController::onAfterHeroDisembark(const CGHeroInstance * obj, const i
{
if(isEventVisible(obj, from, dest))
{
fadeInObject(obj);
if (!isEventInstant(obj))
fadeInObject(obj);
setViewCenter(obj->getSightCenter());
}
addObject(obj);
@ -391,7 +407,7 @@ void MapViewController::onObjectFadeIn(const CGObjectInstance * obj)
{
assert(!hasOngoingAnimations());
if(isEventVisible(obj))
if(isEventVisible(obj) && !isEventInstant(obj) )
fadeInObject(obj);
addObject(obj);
@ -401,7 +417,7 @@ void MapViewController::onObjectFadeOut(const CGObjectInstance * obj)
{
assert(!hasOngoingAnimations());
if(isEventVisible(obj))
if(isEventVisible(obj) && !isEventInstant(obj) )
fadeOutObject(obj);
else
removeObject(obj);

View File

@ -50,6 +50,7 @@ class MapViewController : public IMapObjectObserver
std::shared_ptr<MapRendererPuzzleMapContext> puzzleMapContext;
private:
bool isEventInstant(const CGObjectInstance * obj);
bool isEventVisible(const CGObjectInstance * obj);
bool isEventVisible(const CGHeroInstance * obj, const int3 & from, const int3 & dest);