mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 15:41:30 -07:00
Patch from James H to add keyboard control in Sixteen and Netslide
(and also belatedly document the keyboard support in Unequal). [originally from svn r8432]
This commit is contained in:
29
misc.c
29
misc.c
@ -280,6 +280,35 @@ int c2pos(int w, int h, int cx, int cy)
|
||||
return -1; /* not reached */
|
||||
}
|
||||
|
||||
int c2diff(int w, int h, int cx, int cy, int button)
|
||||
{
|
||||
int diff = 0;
|
||||
|
||||
assert(IS_CURSOR_MOVE(button));
|
||||
|
||||
/* Obvious moves around edge. */
|
||||
if (cy == -1)
|
||||
diff = (button == CURSOR_RIGHT) ? +1 : (button == CURSOR_LEFT) ? -1 : diff;
|
||||
if (cy == h)
|
||||
diff = (button == CURSOR_RIGHT) ? -1 : (button == CURSOR_LEFT) ? +1 : diff;
|
||||
if (cx == -1)
|
||||
diff = (button == CURSOR_UP) ? +1 : (button == CURSOR_DOWN) ? -1 : diff;
|
||||
if (cx == w)
|
||||
diff = (button == CURSOR_UP) ? -1 : (button == CURSOR_DOWN) ? +1 : diff;
|
||||
|
||||
if (button == CURSOR_LEFT && cx == w && (cy == 0 || cy == h-1))
|
||||
diff = (cy == 0) ? -1 : +1;
|
||||
if (button == CURSOR_RIGHT && cx == -1 && (cy == 0 || cy == h-1))
|
||||
diff = (cy == 0) ? +1 : -1;
|
||||
if (button == CURSOR_DOWN && cy == -1 && (cx == 0 || cx == w-1))
|
||||
diff = (cx == 0) ? -1 : +1;
|
||||
if (button == CURSOR_UP && cy == h && (cx == 0 || cx == w-1))
|
||||
diff = (cx == 0) ? +1 : -1;
|
||||
|
||||
debug(("cx,cy = %d,%d; w%d h%d, diff = %d", cx, cy, w, h, diff));
|
||||
return diff;
|
||||
}
|
||||
|
||||
void pos2c(int w, int h, int pos, int *cx, int *cy)
|
||||
{
|
||||
int max = w+h+w+h;
|
||||
|
Reference in New Issue
Block a user