diff options
| author | Simon Tatham <anakin@pobox.com> | 2009-01-08 18:28:32 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2009-01-08 18:28:32 +0000 |
| commit | f20847354cb6335fd349204f16021a72e2956cce (patch) | |
| tree | 5ba7312d6c76c0b0c7db53934a269c8da81a6038 /lightup.c | |
| parent | fee17c3704f2a4d8b64cb0ced76173ff6a9b2954 (diff) | |
| download | puzzles-f20847354cb6335fd349204f16021a72e2956cce.zip puzzles-f20847354cb6335fd349204f16021a72e2956cce.tar.gz puzzles-f20847354cb6335fd349204f16021a72e2956cce.tar.bz2 puzzles-f20847354cb6335fd349204f16021a72e2956cce.tar.xz | |
Patches from James H to add or improve arrow-key-driven cursors for
some puzzles. (Light Up's and Net's are merely polished a bit, but
Mines acquires a new one.)
[originally from svn r8402]
Diffstat (limited to 'lightup.c')
| -rw-r--r-- | lightup.c | 29 |
1 files changed, 11 insertions, 18 deletions
@@ -1840,27 +1840,20 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds, cx = FROMCOORD(x); cy = FROMCOORD(y); action = (button == LEFT_BUTTON) ? FLIP_LIGHT : FLIP_IMPOSSIBLE; - } else if (button == CURSOR_SELECT || button == CURSOR_SELECT2 || + } else if (IS_CURSOR_SELECT(button) || button == 'i' || button == 'I' || button == ' ' || button == '\r' || button == '\n') { - ui->cur_visible = 1; - cx = ui->cur_x; - cy = ui->cur_y; - action = (button == 'i' || button == 'I' || button == CURSOR_SELECT2) ? - FLIP_IMPOSSIBLE : FLIP_LIGHT; - } else if (button == CURSOR_UP || button == CURSOR_DOWN || - button == CURSOR_RIGHT || button == CURSOR_LEFT) { - int dx = 0, dy = 0; - switch (button) { - case CURSOR_UP: dy = -1; break; - case CURSOR_DOWN: dy = 1; break; - case CURSOR_RIGHT: dx = 1; break; - case CURSOR_LEFT: dx = -1; break; - default: assert(!"shouldn't get here"); + if (ui->cur_visible) { + /* Only allow cursor-effect operations if the cursor is visible + * (otherwise you have no idea which square it might be affecting) */ + cx = ui->cur_x; + cy = ui->cur_y; + action = (button == 'i' || button == 'I' || button == CURSOR_SELECT2) ? + FLIP_IMPOSSIBLE : FLIP_LIGHT; } - ui->cur_x += dx; ui->cur_y += dy; - ui->cur_x = min(max(ui->cur_x, 0), state->w - 1); - ui->cur_y = min(max(ui->cur_y, 0), state->h - 1); + ui->cur_visible = 1; + } else if (IS_CURSOR_MOVE(button)) { + move_cursor(button, &ui->cur_x, &ui->cur_y, state->w, state->h, 0); ui->cur_visible = 1; nullret = empty; } else |