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 void trdswitchown(int, void *, int);
extern int do_look(int);
extern void look_at_sect(struct sctstr *, int);
extern int radar(int);
extern void update_power(void);
extern int show_first_tel(char *);

View file

@ -62,8 +62,6 @@ do_look(int type)
union empobj_storage unit;
struct sctstr sect;
int x, y;
int civ;
int mil;
unsigned char *bitmap;
int changed = 0;
@ -103,26 +101,9 @@ do_look(int type)
getsect(x, y, &sect);
if (sect.sct_type == SCT_WATER)
continue;
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);
look_at_sect(&sect, 10);
changed += map_set(player->cnum, x, y,
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) {
setcont(player->cnum, sect.sct_own, FOUND_LOOK);
}
@ -134,6 +115,31 @@ do_look(int type)
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
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 flags;
struct emp_qelem ilist[MAXNOC];
int civ, mil;
natid plane_owner;
struct sctstr sect;
struct shpstr ship;
@ -155,34 +154,10 @@ ac_encounter(struct emp_qelem *bomb_list, struct emp_qelem *esc_list,
} else if (flags & P_S) {
satdisp_sect(&sect, flags & P_I ? 10 : 50);
} else {
/* This is borrowed from lookout */
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);
look_at_sect(&sect, 25);
changed += map_set(player->cnum,
sect.sct_x, sect.sct_y,
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)
satdisp_units(sect.sct_x, sect.sct_y);