diff --git a/control.cpp b/control.cpp index 380939c5..da9d8fa2 100644 --- a/control.cpp +++ b/control.cpp @@ -349,7 +349,7 @@ void handleKeyNormal(int sym, int uni) { performMarkCommand(mouseover); } - if(DEFAULTCONTROL) { + if(DEFAULTCONTROL) { if(sym == '.' || sym == 's') movepcto(-1, 1); if((sym == SDLK_DELETE || sym == SDLK_KP_PERIOD || sym == 'g') && uni != 'G' && uni != 'G'-64) movepcto(MD_DROP, 1); @@ -402,6 +402,8 @@ void handleKeyNormal(int sym, int uni) { } else if(forcetarget) ; + else if(rug::rugged && rug::renderonce) + ; else if(!DEFAULTCONTROL) { if(!shmup::on) multi::mousemovement(mouseover); diff --git a/graph.cpp b/graph.cpp index e8675630..95a32a93 100644 --- a/graph.cpp +++ b/graph.cpp @@ -5525,7 +5525,7 @@ void gamescreen(int _darken) { buttonclicked = false; - if(cmode & sm::NORMAL) { + if((cmode & sm::NORMAL) && stereo::mode != stereo::sLR) { if(andmode == 0 && shmup::on) { using namespace shmupballs; calc(); diff --git a/hyper.h b/hyper.h index e9b1dcd3..4bea272b 100644 --- a/hyper.h +++ b/hyper.h @@ -1159,7 +1159,7 @@ bool hasSafeOrb(cell *c); void placeWater(cell *c, cell *c2); bool againstCurrent(cell *w, cell *from); -#define DEFAULTCONTROL (multi::players == 1 && !shmup::on && !multi::alwaysuse) +#define DEFAULTCONTROL (multi::players == 1 && !shmup::on && !multi::alwaysuse && !(rug::rugged && rug::renderonce)) #define DEFAULTNOR(sym) (DEFAULTCONTROL || multi::notremapped(sym)) extern bool timerghost; diff --git a/init.cpp b/init.cpp index 3f811f5f..b89c52ba 100644 --- a/init.cpp +++ b/init.cpp @@ -756,6 +756,18 @@ void mobile_draw(MOBPAR_FORMAL) { } #endif + bool normal_reaction = !inmenu; + + if(normal_reaction && stereo::mode == stereo::sLR) { + normal_reaction = false; + if(lclicked && !clicked) { + if(rug::rugged) + rug::select(); + else + pushScreen(showStereo); + } + } + if(andmode == 2 && size(screens) != 1) andmode = 12; if((cmode & sm::NORMAL) && getcstat == '-') @@ -769,7 +781,7 @@ void mobile_draw(MOBPAR_FORMAL) { displayTexts(); #endif - if(clicked && lclicked && andmode == 1 && (cmode & sm::NORMAL)) { + if(clicked && lclicked && andmode == 1 && normal_reaction) { if(!mouseout2() && mouseoh[2] < 50 && mouseh[2] < 50 && !rug::rugged) { panning(mouseoh, mouseh); } @@ -778,16 +790,16 @@ void mobile_draw(MOBPAR_FORMAL) { static int lticks_rug; #if CAP_RUG - if(andmode == 1 && !inmenu && rug::rugged && clicked) + if(andmode == 1 && normal_reaction && rug::rugged && clicked) rug::move_forward((ticks - lticks_rug) / 2500.); #endif lticks_rug = ticks; - if(andmode == 1 && lclicked && !clicked && !inmenu && mouseover) + if(andmode == 1 && lclicked && !clicked && normal_reaction && mouseover) performMarkCommand(mouseover); - if(clicked && andmode == 2 && (mouseover != lmouseover || mouseovers != lmouseovers) && !inmenu) { + if(clicked && andmode == 2 && (mouseover != lmouseover || mouseovers != lmouseovers) && normal_reaction) { addMessage(mouseovers); lmouseovers = mouseovers; }