finalizer struct, and fixed animations breaking

This commit is contained in:
Zeno Rogue 2021-03-06 11:47:54 +01:00
parent ff4d86ee65
commit 0020957906
2 changed files with 14 additions and 1 deletions

View File

@ -628,6 +628,12 @@ template<class T> struct dynamicval {
~dynamicval() { where = backup; }
};
struct finalizer {
reaction_t f;
finalizer(reaction_t r) : f(r) {}
~finalizer() { f(); }
};
static const int MAXPLAYER = 7;
#define DEFAULTCONTROL (multi::players == 1 && !shmup::on && !multi::alwaysuse && !(rug::rugged && rug::renderonce))

View File

@ -771,7 +771,14 @@ EX void take(string fname, const function<void()>& what IS(default_screenshot_co
#else
int multiplier = shot_aa;
#endif
vector<bool> chg;
for(auto ap: anims::aps) chg.push_back(*ap.value == ap.last);
finalizer f([&] {
for(int i=0; i<isize(anims::aps); i++)
if(chg[i]) *anims::aps[i].value = anims::aps[i].last;
});
dynamicval<videopar> v(vid, vid);
dynamicval<bool> v2(inHighQual, true);
dynamicval<bool> v6(auraNOGL, true);