diff --git a/rsrc/strings/specials-text-general.txt b/rsrc/strings/specials-text-general.txt index 8e7c8101f..37df5bb7c 100644 --- a/rsrc/strings/specials-text-general.txt +++ b/rsrc/strings/specials-text-general.txt @@ -178,7 +178,7 @@ Picture number Picture type Unused Unused -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Unused Unused Animation FPS (-1 for default 2) diff --git a/rsrc/strings/specials-text-once.txt b/rsrc/strings/specials-text-once.txt index 8a2ca72e9..b95a9c3df 100644 --- a/rsrc/strings/specials-text-once.txt +++ b/rsrc/strings/specials-text-once.txt @@ -93,7 +93,7 @@ Picture number Picture type Label of 2nd button (-1 - no button) Special if button 2 pressed -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Label of 3rd button (-1 - no button) Special if button 3 pressed Animation FPS (-1 for default 2) @@ -144,7 +144,7 @@ Picture number Picture type Item to give Amount of gold to give -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Amount of food to give Special if item IS taken Animation FPS (-1 for default 2) @@ -229,7 +229,7 @@ Picture number Picture type Type of trap Trap severity (0 .. 3) -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Penalty (0 .. 100, higher is harder) (Custom only) Special node for effect Animation FPS (-1 for default 2) diff --git a/rsrc/strings/specials-text-town.txt b/rsrc/strings/specials-text-town.txt index b07c693bc..79374a276 100644 --- a/rsrc/strings/specials-text-town.txt +++ b/rsrc/strings/specials-text-town.txt @@ -314,7 +314,7 @@ Picture number Picture type Unused If Pulled, call this special ... -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Unused Unused Animation FPS (-1 for default 2) @@ -331,7 +331,7 @@ Picture number Picture type X coordinate to telep. to Y coordinate to telep. to -Animation Loops (-1 for infinite) +Animation Loops (-2 for infinite) Unused Unused Animation FPS (-1 for default 2) diff --git a/src/dialogxml/widgets/pict.cpp b/src/dialogxml/widgets/pict.cpp index e906590e0..c001c7bf8 100644 --- a/src/dialogxml/widgets/pict.cpp +++ b/src/dialogxml/widgets/pict.cpp @@ -935,6 +935,12 @@ void cPict::drawPresetField(short num, rectangle to_rect){ rect_draw_some_item(*from_gw, from_rect, getWindow(), to_rect, sf::BlendAlpha); } +void cPict::setAnimLoops(short value) { + // -2 is infinite loops. Anything else <= 0 is no animation. + if(value >= 0 || value == -2) animLoops = value; + else animLoops = 0; +} + void cPict::updateAnim(short loop_frames) { if(prevAnimFrame != animFrame){ if(animFrame % loop_frames == 0 && animLoops > 0) diff --git a/src/dialogxml/widgets/pict.hpp b/src/dialogxml/widgets/pict.hpp index 1ac4db77d..b21cb1cd7 100644 --- a/src/dialogxml/widgets/pict.hpp +++ b/src/dialogxml/widgets/pict.hpp @@ -85,7 +85,7 @@ class cPict : public cControl { cPict& operator=(cPict& other) = delete; cPict(cPict& other) = delete; inline static void resetAnim() { animFrame = 0; } - inline void setAnimLoops(short value) { animLoops = value; } + void setAnimLoops(short value); private: static std::shared_ptr getSheetInternal(eSheetType type, size_t n); std::shared_ptr getSheet(eSheetType type, size_t n = 0);