aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Kölker <jonaskoelker@yahoo.com>2015-09-21 17:33:02 +0200
committerSimon Tatham <anakin@pobox.com>2015-10-03 16:58:24 +0100
commit7478275c8b46c24eb457dd3458ace3a31263295b (patch)
treead4c6f7d4cea4e7d4ea198d707da230d9f0117d5
parent9e1a7d87cd30e1f3fde7eedf1439b48ce1610009 (diff)
downloadpuzzles-7478275c8b46c24eb457dd3458ace3a31263295b.zip
puzzles-7478275c8b46c24eb457dd3458ace3a31263295b.tar.gz
puzzles-7478275c8b46c24eb457dd3458ace3a31263295b.tar.bz2
puzzles-7478275c8b46c24eb457dd3458ace3a31263295b.tar.xz
Pattern: color multiple squares with Ctrl- or Shift-cursor keys.
-rw-r--r--pattern.c16
-rw-r--r--puzzles.but4
2 files changed, 19 insertions, 1 deletions
diff --git a/pattern.c b/pattern.c
index 0688f33..10621d1 100644
--- a/pattern.c
+++ b/pattern.c
@@ -1056,6 +1056,7 @@ static char *interpret_move(const game_state *state, game_ui *ui,
const game_drawstate *ds,
int x, int y, int button)
{
+ int control = button & MOD_CTRL, shift = button & MOD_SHFT;
button &= ~MOD_MASK;
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)) {
+ 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);
ui->cur_visible = 1;
- return "";
+ 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 "";
+
+ 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)) {
int currstate = state->grid[ui->cur_y * state->w + ui->cur_x];
int newstate;
diff --git a/puzzles.but b/puzzles.but
index 80727c6..ef96ad1 100644
--- a/puzzles.but
+++ b/puzzles.but
@@ -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
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.)
\H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters