Factor look_at_sect() out of do_look() and ac_encounter()

This commit is contained in:
Markus Armbruster 2010-06-14 06:57:04 +02:00
parent 2cfb124b6c
commit 8eca636c7d
3 changed files with 28 additions and 46 deletions

View file

@ -73,6 +73,7 @@ extern int check_trade(void);
extern int ontradingblock(int, void *); extern int ontradingblock(int, void *);
extern void trdswitchown(int, void *, int); extern void trdswitchown(int, void *, int);
extern int do_look(int); extern int do_look(int);
extern void look_at_sect(struct sctstr *, int);
extern int radar(int); extern int radar(int);
extern void update_power(void); extern void update_power(void);
extern int show_first_tel(char *); extern int show_first_tel(char *);

View file

@ -62,8 +62,6 @@ do_look(int type)
union empobj_storage unit; union empobj_storage unit;
struct sctstr sect; struct sctstr sect;
int x, y; int x, y;
int civ;
int mil;
unsigned char *bitmap; unsigned char *bitmap;
int changed = 0; int changed = 0;
@ -103,26 +101,9 @@ do_look(int type)
getsect(x, y, &sect); getsect(x, y, &sect);
if (sect.sct_type == SCT_WATER) if (sect.sct_type == SCT_WATER)
continue; continue;
if (sect.sct_own == player->cnum) look_at_sect(&sect, 10);
pr("Your ");
else
pr("%s (#%d) ", cname(sect.sct_own), sect.sct_own);
pr("%s", dchr[sect.sct_type].d_name);
changed += map_set(player->cnum, x, y, changed += map_set(player->cnum, x, y,
dchr[sect.sct_type].d_mnem, 0); dchr[sect.sct_type].d_mnem, 0);
pr(" %d%% efficient ", player->owner ? sect.sct_effic :
roundintby((int)sect.sct_effic, 10));
civ = sect.sct_item[I_CIVIL];
mil = sect.sct_item[I_MILIT];
if (civ)
pr("with %s%d civ ",
player->owner ? "" : "approx ",
player->owner ? civ : roundintby(civ, 10));
if (mil)
pr("with %s%d mil ",
player->owner ? "" : "approx ",
player->owner ? mil : roundintby(mil, 10));
pr("@ %s\n", xyas(x, y, player->cnum));
if (opt_HIDDEN) { if (opt_HIDDEN) {
setcont(player->cnum, sect.sct_own, FOUND_LOOK); setcont(player->cnum, sect.sct_own, FOUND_LOOK);
} }
@ -134,6 +115,31 @@ do_look(int type)
return RET_OK; return RET_OK;
} }
void look_at_sect(struct sctstr *sp, int mult)
{
int civ, mil;
int ours = player->god || sp->sct_own == player->cnum;
if (sp->sct_own == player->cnum)
pr("Your ");
else
pr("%s (#%d) ", cname(sp->sct_own), sp->sct_own);
pr("%s", dchr[sp->sct_type].d_name);
pr(" %d%% efficient ",
ours ? sp->sct_effic : roundintby(sp->sct_effic, mult));
civ = sp->sct_item[I_CIVIL];
mil = sp->sct_item[I_MILIT];
if (civ)
pr("with %s%d civ ",
ours ? "" : "approx ",
ours ? civ : roundintby(civ, mult));
if (mil)
pr("with %s%d mil ",
ours ? "" : "approx ",
ours ? mil : roundintby(mil, mult));
pr("@ %s\n", xyas(sp->sct_x, sp->sct_y, player->cnum));
}
static void static void
look_ship(struct shpstr *lookship) look_ship(struct shpstr *lookship)
{ {

View file

@ -83,7 +83,6 @@ ac_encounter(struct emp_qelem *bomb_list, struct emp_qelem *esc_list,
int overfly[MAXNOC]; int overfly[MAXNOC];
int flags; int flags;
struct emp_qelem ilist[MAXNOC]; struct emp_qelem ilist[MAXNOC];
int civ, mil;
natid plane_owner; natid plane_owner;
struct sctstr sect; struct sctstr sect;
struct shpstr ship; struct shpstr ship;
@ -155,34 +154,10 @@ ac_encounter(struct emp_qelem *bomb_list, struct emp_qelem *esc_list,
} else if (flags & P_S) { } else if (flags & P_S) {
satdisp_sect(&sect, flags & P_I ? 10 : 50); satdisp_sect(&sect, flags & P_I ? 10 : 50);
} else { } else {
/* This is borrowed from lookout */ look_at_sect(&sect, 25);
if (sect.sct_own == player->cnum)
pr("Your ");
else
pr("%s (#%d) ",
cname(sect.sct_own), sect.sct_own);
pr("%s", dchr[sect.sct_type].d_name);
changed += map_set(player->cnum, changed += map_set(player->cnum,
sect.sct_x, sect.sct_y, sect.sct_x, sect.sct_y,
dchr[sect.sct_type].d_mnem, 0); dchr[sect.sct_type].d_mnem, 0);
pr(" %d%% efficient ",
(sect.sct_own == player->cnum) ?
sect.sct_effic : roundintby((int)sect.sct_effic, 25));
civ = sect.sct_item[I_CIVIL];
mil = sect.sct_item[I_MILIT];
if (civ)
pr("with %s%d civ ",
(sect.sct_own == player->cnum) ?
"" : "approx ",
(sect.sct_own == player->cnum) ?
civ : roundintby(civ, 25));
if (mil)
pr("with %s%d mil ",
(sect.sct_own == player->cnum) ?
"" : "approx ",
(sect.sct_own == player->cnum) ?
mil : roundintby(mil, 25));
pr("@ %s\n", xyas(x, y, player->cnum));
} }
if (flags & P_S) if (flags & P_S)
satdisp_units(sect.sct_x, sect.sct_y); satdisp_units(sect.sct_x, sect.sct_y);