subs: Move sector abandonment functions to control.c
Move them out of commands/move.c, because they're the only thing involving land units there. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
4f83ce27b4
commit
3b9f2a149b
3 changed files with 41 additions and 40 deletions
|
@ -59,8 +59,6 @@ extern int edit_sect_i(struct sctstr *, char *, int);
|
||||||
extern int load_comm_ok(struct sctstr *, natid, i_type, int);
|
extern int load_comm_ok(struct sctstr *, natid, i_type, int);
|
||||||
extern void gift(natid, natid, void *, char *);
|
extern void gift(natid, natid, void *, char *);
|
||||||
extern int display_mark(i_type, int);
|
extern int display_mark(i_type, int);
|
||||||
extern int want_to_abandon(struct sctstr *, i_type, int, struct lndstr *);
|
|
||||||
extern int would_abandon(struct sctstr *, i_type, int, struct lndstr *);
|
|
||||||
extern int nav_map(int, int, int);
|
extern int nav_map(int, int, int);
|
||||||
extern int do_unit_move(struct emp_qelem *, int *, double *, double *);
|
extern int do_unit_move(struct emp_qelem *, int *, double *, double *);
|
||||||
extern int count_pop(int);
|
extern int count_pop(int);
|
||||||
|
@ -406,6 +404,8 @@ extern int check_trade_ok(struct trdstr *);
|
||||||
extern void set_coastal(struct sctstr *, int, int);
|
extern void set_coastal(struct sctstr *, int, int);
|
||||||
/* control.c */
|
/* control.c */
|
||||||
extern int military_control(struct sctstr *);
|
extern int military_control(struct sctstr *);
|
||||||
|
extern int want_to_abandon(struct sctstr *, i_type, int, struct lndstr *);
|
||||||
|
extern int would_abandon(struct sctstr *, i_type, int, struct lndstr *);
|
||||||
/* damage.c */
|
/* damage.c */
|
||||||
extern void landdamage(struct lndstr *, int);
|
extern void landdamage(struct lndstr *, int);
|
||||||
extern void ship_damage(struct shpstr *, int);
|
extern void ship_damage(struct shpstr *, int);
|
||||||
|
|
|
@ -345,41 +345,3 @@ cmd_move_map(coord curx, coord cury, char *arg1, char *arg2)
|
||||||
{
|
{
|
||||||
return display_region_map(0, EF_SHIP, curx, cury, arg1, arg2);
|
return display_region_map(0, EF_SHIP, curx, cury, arg1, arg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
want_to_abandon(struct sctstr *sp, i_type vtype, int amnt, struct lndstr *lp)
|
|
||||||
{
|
|
||||||
char prompt[80];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* First, would we be abandoning it? If not, just return that
|
|
||||||
* it's ok to move out.
|
|
||||||
*/
|
|
||||||
if (!would_abandon(sp, vtype, amnt, lp))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
sprintf(prompt, "Do you really want to abandon %s [yn]? ",
|
|
||||||
xyas(sp->sct_x, sp->sct_y, player->cnum));
|
|
||||||
|
|
||||||
return askyn(prompt);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
would_abandon(struct sctstr *sp, i_type vtype, int amnt, struct lndstr *lp)
|
|
||||||
{
|
|
||||||
int mil, civs;
|
|
||||||
|
|
||||||
if (vtype != I_CIVIL && vtype != I_MILIT)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
mil = sp->sct_item[I_MILIT];
|
|
||||||
civs = sp->sct_item[I_CIVIL];
|
|
||||||
|
|
||||||
if (vtype == I_MILIT)
|
|
||||||
mil -= amnt;
|
|
||||||
if (vtype == I_CIVIL)
|
|
||||||
civs -= amnt;
|
|
||||||
|
|
||||||
return sp->sct_own != 0 && civs <= 0 && mil <= 0
|
|
||||||
&& !has_units(sp->sct_x, sp->sct_y, sp->sct_own, lp);
|
|
||||||
}
|
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "land.h"
|
#include "land.h"
|
||||||
#include "nsc.h"
|
#include "nsc.h"
|
||||||
|
#include "player.h"
|
||||||
#include "prototypes.h"
|
#include "prototypes.h"
|
||||||
#include "sect.h"
|
#include "sect.h"
|
||||||
|
|
||||||
|
@ -60,3 +61,41 @@ military_control(struct sctstr *sp)
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
want_to_abandon(struct sctstr *sp, i_type vtype, int amnt, struct lndstr *lp)
|
||||||
|
{
|
||||||
|
char prompt[80];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* First, would we be abandoning it? If not, just return that
|
||||||
|
* it's ok to move out.
|
||||||
|
*/
|
||||||
|
if (!would_abandon(sp, vtype, amnt, lp))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
sprintf(prompt, "Do you really want to abandon %s [yn]? ",
|
||||||
|
xyas(sp->sct_x, sp->sct_y, player->cnum));
|
||||||
|
|
||||||
|
return askyn(prompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
would_abandon(struct sctstr *sp, i_type vtype, int amnt, struct lndstr *lp)
|
||||||
|
{
|
||||||
|
int mil, civs;
|
||||||
|
|
||||||
|
if (vtype != I_CIVIL && vtype != I_MILIT)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
mil = sp->sct_item[I_MILIT];
|
||||||
|
civs = sp->sct_item[I_CIVIL];
|
||||||
|
|
||||||
|
if (vtype == I_MILIT)
|
||||||
|
mil -= amnt;
|
||||||
|
if (vtype == I_CIVIL)
|
||||||
|
civs -= amnt;
|
||||||
|
|
||||||
|
return sp->sct_own != 0 && civs <= 0 && mil <= 0
|
||||||
|
&& !has_units(sp->sct_x, sp->sct_y, sp->sct_own, lp);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue