mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
Pattern: color multiple squares with Ctrl- or Shift-cursor keys.
This commit is contained in:

committed by
Simon Tatham

parent
9e1a7d87cd
commit
7478275c8b
14
pattern.c
14
pattern.c
@ -1056,6 +1056,7 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
|||||||
const game_drawstate *ds,
|
const game_drawstate *ds,
|
||||||
int x, int y, int button)
|
int x, int y, int button)
|
||||||
{
|
{
|
||||||
|
int control = button & MOD_CTRL, shift = button & MOD_SHFT;
|
||||||
button &= ~MOD_MASK;
|
button &= ~MOD_MASK;
|
||||||
|
|
||||||
x = FROMCOORD(state->w, x);
|
x = FROMCOORD(state->w, x);
|
||||||
@ -1156,10 +1157,23 @@ static char *interpret_move(const game_state *state, game_ui *ui,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (IS_CURSOR_MOVE(button)) {
|
if (IS_CURSOR_MOVE(button)) {
|
||||||
|
int x = ui->cur_x, y = ui->cur_y, newstate;
|
||||||
|
char buf[80];
|
||||||
move_cursor(button, &ui->cur_x, &ui->cur_y, state->w, state->h, 0);
|
move_cursor(button, &ui->cur_x, &ui->cur_y, state->w, state->h, 0);
|
||||||
ui->cur_visible = 1;
|
ui->cur_visible = 1;
|
||||||
|
if (!control && !shift) return "";
|
||||||
|
|
||||||
|
newstate = control ? shift ? GRID_UNKNOWN : GRID_FULL : GRID_EMPTY;
|
||||||
|
if (state->grid[y * state->w + x] == newstate &&
|
||||||
|
state->grid[ui->cur_y * state->w + ui->cur_x] == newstate)
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
|
sprintf(buf, "%c%d,%d,%d,%d", control ? shift ? 'U' : 'F' : 'E',
|
||||||
|
min(x, ui->cur_x), min(y, ui->cur_y),
|
||||||
|
abs(x - ui->cur_x) + 1, abs(y - ui->cur_y) + 1);
|
||||||
|
return dupstr(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_CURSOR_SELECT(button)) {
|
if (IS_CURSOR_SELECT(button)) {
|
||||||
int currstate = state->grid[ui->cur_y * state->w + ui->cur_x];
|
int currstate = state->grid[ui->cur_y * state->w + ui->cur_x];
|
||||||
int newstate;
|
int newstate;
|
||||||
|
@ -897,6 +897,10 @@ You can also move around the grid with the cursor keys. Pressing the
|
|||||||
return key will cycle the current cell through empty, then black, then
|
return key will cycle the current cell through empty, then black, then
|
||||||
white, then empty, and the space bar does the same cycle in reverse.
|
white, then empty, and the space bar does the same cycle in reverse.
|
||||||
|
|
||||||
|
Moving the cursor while holding Control will colour the moved-over
|
||||||
|
squares black. Holding Shift will colour the moved-over squares
|
||||||
|
white, and holding both will colour them grey.
|
||||||
|
|
||||||
(All the actions described in \k{common-actions} are also available.)
|
(All the actions described in \k{common-actions} are also available.)
|
||||||
|
|
||||||
\H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters
|
\H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters
|
||||||
|
Reference in New Issue
Block a user