'H': highlight (by terrain/units/faction/ships/none)

'T': tag (by terrain/units/faction/ships/none)
't': tag/untag current region
This commit is contained in:
Enno Rehling 2006-04-14 16:56:48 +00:00
parent 0aa0be8557
commit 573d283e92
1 changed files with 28 additions and 32 deletions

View File

@ -226,7 +226,7 @@ init_curses(void)
if (has_colors() || force_color) { if (has_colors() || force_color) {
short bcol = COLOR_BLACK; short bcol = COLOR_BLACK;
short hcol = COLOR_MAGENTA; short hcol = COLOR_CYAN;
start_color(); start_color();
#ifdef WIN32 #ifdef WIN32
/* looks crap on putty with TERM=linux */ /* looks crap on putty with TERM=linux */
@ -444,7 +444,9 @@ draw_cursor(WINDOW * win, selection * s, const view * v, const coordinate * c, i
xp = cx * TWIDTH + (cy & 1) * TWIDTH/2; xp = cx * TWIDTH + (cy & 1) * TWIDTH/2;
if (s && tagged_region(s, &mr->coord)) attr = A_REVERSE; if (s && tagged_region(s, &mr->coord)) attr = A_REVERSE;
if (mr->r) { if (mr->r) {
mvwaddch(win, yp, xp, mr_tile(mr, 0) | attr); int hl = 0;
if (mr->r->flags & RF_MAPPER_HIGHLIGHT) hl = 1;
mvwaddch(win, yp, xp, mr_tile(mr, hl) | attr);
} }
else mvwaddch(win, yp, xp, ' ' | attr | COLOR_PAIR(COLOR_YELLOW)); else mvwaddch(win, yp, xp, ' ' | attr | COLOR_PAIR(COLOR_YELLOW));
if (show) { if (show) {
@ -672,7 +674,7 @@ region2coord(const region * r, coordinate * c)
#define FAST_RIGHT KEY_SRIGHT #define FAST_RIGHT KEY_SRIGHT
#endif #endif
enum { MODE_HIGHLIGHT = 0x0, MODE_SELECT = 0x1, MODE_INVERT = 0x2 }; enum { MODE_HIGHLIGHT = 0x0, MODE_SELECT = 0x1 };
static void static void
select_regions(state * st, int selectmode) select_regions(state * st, int selectmode)
@ -690,6 +692,7 @@ select_regions(state * st, int selectmode)
int i; int i;
sprintf(sbuffer, "%snone", status); sprintf(sbuffer, "%snone", status);
statusline(st->wnd_status->handle, sbuffer); statusline(st->wnd_status->handle, sbuffer);
if (selectmode&MODE_SELECT) {
for (i=0;i!=MAXTHASH;++i) { for (i=0;i!=MAXTHASH;++i) {
tag ** tp = &st->selected->tags[i]; tag ** tp = &st->selected->tags[i];
while (*tp) { while (*tp) {
@ -698,6 +701,12 @@ select_regions(state * st, int selectmode)
free(t); free(t);
} }
} }
} else {
region * r;
for (r=regions;r;r=r->next) {
r->flags &= ~RF_MAPPER_HIGHLIGHT;
}
}
} }
else if (findmode=='u') { else if (findmode=='u') {
region * r; region * r;
@ -707,11 +716,9 @@ select_regions(state * st, int selectmode)
if (r->units) { if (r->units) {
coordinate coord; coordinate coord;
if (selectmode&MODE_SELECT) { if (selectmode&MODE_SELECT) {
if (selectmode&MODE_INVERT) untag_region(st->selected, region2coord(r, &coord)); tag_region(st->selected, region2coord(r, &coord));
else tag_region(st->selected, region2coord(r, &coord));
} else { } else {
if (selectmode&MODE_INVERT) r->flags &= ~RF_MAPPER_HIGHLIGHT; r->flags |= RF_MAPPER_HIGHLIGHT;
else r->flags |= RF_MAPPER_HIGHLIGHT;
} }
} }
} }
@ -724,11 +731,9 @@ select_regions(state * st, int selectmode)
if (r->ships) { if (r->ships) {
coordinate coord; coordinate coord;
if (selectmode&MODE_SELECT) { if (selectmode&MODE_SELECT) {
if (selectmode&MODE_INVERT) untag_region(st->selected, region2coord(r, &coord)); tag_region(st->selected, region2coord(r, &coord));
else tag_region(st->selected, region2coord(r, &coord));
} else { } else {
if (selectmode&MODE_INVERT) r->flags &= ~RF_MAPPER_HIGHLIGHT; r->flags |= RF_MAPPER_HIGHLIGHT;
else r->flags |= RF_MAPPER_HIGHLIGHT;
} }
} }
} }
@ -749,11 +754,9 @@ select_regions(state * st, int selectmode)
for (u=f->units;u;u=u->nextF) { for (u=f->units;u;u=u->nextF) {
region * r = u->region; region * r = u->region;
if (selectmode&MODE_SELECT) { if (selectmode&MODE_SELECT) {
if (selectmode&MODE_INVERT) untag_region(st->selected, region2coord(r, &coord)); tag_region(st->selected, region2coord(r, &coord));
else tag_region(st->selected, region2coord(r, &coord));
} else { } else {
if (selectmode&MODE_INVERT) r->flags &= ~RF_MAPPER_HIGHLIGHT; r->flags |= RF_MAPPER_HIGHLIGHT;
else r->flags |= RF_MAPPER_HIGHLIGHT;
} }
} }
} else { } else {
@ -776,11 +779,9 @@ select_regions(state * st, int selectmode)
if (r->terrain==terrain) { if (r->terrain==terrain) {
coordinate coord; coordinate coord;
if (selectmode&MODE_SELECT) { if (selectmode&MODE_SELECT) {
if (selectmode&MODE_INVERT) untag_region(st->selected, region2coord(r, &coord)); tag_region(st->selected, region2coord(r, &coord));
else tag_region(st->selected, region2coord(r, &coord));
} else { } else {
if (selectmode&MODE_INVERT) r->flags &= ~RF_MAPPER_HIGHLIGHT; r->flags |= RF_MAPPER_HIGHLIGHT;
else r->flags |= RF_MAPPER_HIGHLIGHT;
} }
} }
} }
@ -968,15 +969,9 @@ handlekey(state * st, int c)
} while (c==0); } while (c==0);
break; break;
case 'H': case 'H':
select_regions(st, MODE_INVERT|MODE_HIGHLIGHT);
break;
case 'T':
select_regions(st, MODE_INVERT|MODE_SELECT);
break;
case 'h':
select_regions(st, MODE_HIGHLIGHT); select_regions(st, MODE_HIGHLIGHT);
break; break;
case 't': case 'T':
select_regions(st, MODE_SELECT); select_regions(st, MODE_SELECT);
break; break;
case ';': case ';':
@ -997,6 +992,7 @@ handlekey(state * st, int c)
beep(); beep();
} }
break; break;
case 't':
case ' ': case ' ':
if (tagged_region(st->selected, cursor)) untag_region(st->selected, cursor); if (tagged_region(st->selected, cursor)) untag_region(st->selected, cursor);
else tag_region(st->selected, cursor); else tag_region(st->selected, cursor);