Skip to content

Commit

Permalink
Select the keyboard push-subdirection with Tab.
Browse files Browse the repository at this point in the history
Previously, the keyboard push-subdirection was selected irregularly
based on the exact angle of the map on the screen.

Change it to be consistently clockwise or counterclockwise, switching
with the Tab key.

Also, have the keyboard push-subdirection help display on all
pushable monsters.  Previously, it'd only show on Palace Guards
and Skeletons.
  • Loading branch information
Jacob Mandelson committed Jul 10, 2024
1 parent 66ed710 commit 261ebad
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 7 deletions.
5 changes: 5 additions & 0 deletions control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ EX void movepckeydir(int d) {
if(protect_memory()) return;

movedir md = vectodir(move_destination_vec(d));
md.subdir = keybd_subdir ? 1 : -1;

if(!canmove) movepcto(md), remission(); else movepcto(md);
}
Expand Down Expand Up @@ -618,6 +619,10 @@ EX void handleKeyNormal(int sym, int uni) {
else restart_game();
}

if(sym == SDLK_TAB) {
keybd_subdir = !keybd_subdir;
}

if(sym == SDLK_ESCAPE) {
if(bow::fire_mode)
bow::switch_fire_mode();
Expand Down
7 changes: 4 additions & 3 deletions graph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3559,8 +3559,9 @@ EX transmatrix applyDowndir(cell *c, const cellfunction& cf) {
return ddspin180(c, patterns::downdir(c, cf));
}

void draw_movement_arrows(cell *c, const transmatrix& V, int df) {
EX bool keybd_subdir;

void draw_movement_arrows(cell *c, const transmatrix& V, int df) {
if(viewdists) return;

string keylist = "";
Expand Down Expand Up @@ -3590,8 +3591,8 @@ void draw_movement_arrows(cell *c, const transmatrix& V, int df) {

if((c->type & 1) && (isStunnable(c->monst) || isPushable(c->wall))) {
transmatrix Centered = rgpushxto0(unshift(tC0(cwtV)));
int sd = md.subdir;
int sd = keybd_subdir ? 1 : -1;

transmatrix T = iso_inverse(Centered) * rgpushxto0(Centered * tC0(V)) * lrspintox(Centered*tC0(V)) * spin(-sd * M_PI/S7) * xpush(0.2);

if(vid.axes >= 5)
Expand Down
4 changes: 2 additions & 2 deletions help.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ string pushtext(stringpar p) {
"\n\nNote: when pushing %the1 off a heptagonal cell, you can control the pushing direction "
"by clicking left or right half of the heptagon.", p);
#if !ISMOBILE
s += XLAT(" With the keyboard, you can rotate the view for a similar effect (Page Up/Down).");
s += XLAT(" With the keyboard, you can press Tab to invert the way the pushing direction leans.");
#endif
return s;
}
Expand Down Expand Up @@ -678,7 +678,7 @@ EX string generateHelpForMonster(eMonster m) {
}

s += XLAT(minf[m].help);
if(m == moPalace || m == moSkeleton)
if(isStunnable(m))
s += pushtext(m);
if(m == moTroll) s += XLAT(trollhelp2);

Expand Down
5 changes: 3 additions & 2 deletions pcmove.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,8 @@ EX bool movepcto(int d, int subdir IS(1), bool checkonly IS(false)) {
checked_move_issue.type = miVALID;
pcmove pcm;
pcm.checkonly = checkonly;
pcm.d = d; pcm.subdir = subdir;
pcm.d = d;
pcm.subdir = subdir;
auto b = pcm.movepcto();
global_pushto = pcm.mip.t;
return b;
Expand Down Expand Up @@ -1855,4 +1856,4 @@ EX void movecost(cell* from, cell *to, int phase) {
}
}

}
}

0 comments on commit 261ebad

Please sign in to comment.