diff --git a/client/mapView/MapViewController.cpp b/client/mapView/MapViewController.cpp index 7f29987f7..09f6589d6 100644 --- a/client/mapView/MapViewController.cpp +++ b/client/mapView/MapViewController.cpp @@ -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); diff --git a/client/mapView/MapViewController.h b/client/mapView/MapViewController.h index 7b9941deb..bc67e90de 100644 --- a/client/mapView/MapViewController.h +++ b/client/mapView/MapViewController.h @@ -50,6 +50,7 @@ class MapViewController : public IMapObjectObserver std::shared_ptr puzzleMapContext; private: + bool isEventInstant(const CGObjectInstance * obj); bool isEventVisible(const CGObjectInstance * obj); bool isEventVisible(const CGHeroInstance * obj, const int3 & from, const int3 & dest);