diff --git a/control.cpp b/control.cpp index 61a4b035..3ca79858 100644 --- a/control.cpp +++ b/control.cpp @@ -465,6 +465,8 @@ void resize_screen_to(int x, int y) { setvideomode(); } +int timetowait; + void mainloopiter() { DEBB(DF_GRAPH, (debugfile,"main loop\n")); @@ -481,17 +483,16 @@ void mainloopiter() { ticks = SDL_GetTicks(); callhooks(hooks_fixticks); - int timetowait = lastt + 1000 / cframelimit - ticks; + timetowait = lastt + 1000 / cframelimit - ticks; cframelimit = vid.framelimit; if(outoffocus && cframelimit > 10) cframelimit = 10; bool normal = cmode & sm::NORMAL; - if(DOSHMUP && normal) - timetowait = 0, shmup::turn(ticks - lastt); + shmup::turn(ticks - lastt); - if(!DOSHMUP && (multi::alwaysuse || multi::players > 1) && normal) + if(!shmup::on && (multi::alwaysuse || multi::players > 1) && normal) timetowait = 0, multi::handleMulti(ticks - lastt); if(vid.sspeed >= 5 && gmatrix.count(cwt.c) && !elliptic) { diff --git a/graph.cpp b/graph.cpp index f148c92c..4893b548 100644 --- a/graph.cpp +++ b/graph.cpp @@ -3740,10 +3740,7 @@ void drawcell(cell *c, transmatrix V, int spinv, bool mirrored) { const transmatrix *Vboat = &(*Vdp); - if(DOSHMUP) { - ld zlev = -geom3::factor_to_lev(zlevel(tC0((*Vdp)))); - shmup::drawMonster(V, c, Vboat, Vboat0, zlev); - } + shmup::drawMonster(V, c, Vboat, Vboat0, Vdp); poly_outline = OUTLINE_DEFAULT; diff --git a/hyper.h b/hyper.h index 3794ef4c..45d5181e 100644 --- a/hyper.h +++ b/hyper.h @@ -2083,12 +2083,6 @@ int textwidth(int siz, const string &str); extern bool gtouched, mousepressed, mousemoved, actonrelease; extern bool inslider; -#if CAP_ROGUEVIZ -#define DOSHMUP (shmup::on || rogueviz::on) -#else -#define DOSHMUP shmup::on -#endif - extern bool outoffocus; extern int frames; extern transmatrix playerV; @@ -3600,4 +3594,6 @@ struct pathdata { } }; +extern int timetowait; + } diff --git a/shmup.cpp b/shmup.cpp index b3512713..4d27c628 100644 --- a/shmup.cpp +++ b/shmup.cpp @@ -2874,6 +2874,8 @@ hookset *hooks_turn; void turn(int delta) { if(callhandlers(false, hooks_turn, delta)) return; + if(!shmup::on) return; + timetowait = 0; passive_switch = (gold() & 1) ? moSwitch1 : moSwitch2; lmousetarget = NULL; @@ -3147,10 +3149,13 @@ bool boatAt(cell *c) { hookset *hooks_draw; -bool drawMonster(const transmatrix& V, cell *c, const transmatrix*& Vboat, transmatrix& Vboat0, ld zlev) { +bool drawMonster(const transmatrix& V, cell *c, const transmatrix*& Vboat, transmatrix& Vboat0, const transmatrix *Vdp) { - pair p = + pair p = monstersAt.equal_range(c); + + if(p.first == p.second) return false; + ld zlev = -geom3::factor_to_lev(zlevel(tC0((*Vdp)))); vector monsters;