Project

General

Profile

Feature #1181 ยป 0053-AI-Pass-civ_map-to-dai_manage_military.patch

Marko Lindqvist, 12/11/2024 07:28 AM

View differences:

ai/default/aiferry.c
struct unit_ai *unit_data;
int bossid;
const struct unit_type *ptype;
const struct civ_map *nmap = &(wld.map);
CHECK_UNIT(punit);
......
* -- Syela */
dai_unit_new_task(ait, punit, AIUNIT_NONE, NULL);
UNIT_LOG(LOGLEVEL_FERRY, punit, "passing ferry over to attack code");
dai_manage_military(ait, pplayer, punit);
dai_manage_military(ait, nmap, pplayer, punit);
return;
}
ai/default/daiparadrop.c
} else {
UNIT_LOG(LOGLEVEL_PARATROOPER, punit,
"didn't find city to go and recover.");
dai_manage_military(ait, pplayer, punit);
dai_manage_military(ait, nmap, pplayer, punit);
}
}
}
ai/default/daiunit.c
struct player *pplayer,
struct unit *leader);
static void dai_military_findjob(struct ai_type *ait,
static void dai_military_findjob(struct ai_type *ait, const struct civ_map *nmap,
struct player *pplayer, struct unit *punit);
static void dai_military_defend(struct ai_type *ait, struct player *pplayer,
struct unit *punit);
......
/**********************************************************************//**
See if we have a specific job for the unit.
**************************************************************************/
static void dai_military_findjob(struct ai_type *ait,
static void dai_military_findjob(struct ai_type *ait, const struct civ_map *nmap,
struct player *pplayer, struct unit *punit)
{
const struct unit_type *punittype = unit_type_get(punit);
struct unit_ai *unit_data;
const struct civ_map *nmap = &(wld.map);
CHECK_UNIT(punit);
......
Decide what to do with a military unit. It will be managed once only.
It is up to the caller to try again if it has moves left.
**************************************************************************/
void dai_manage_military(struct ai_type *ait, struct player *pplayer,
struct unit *punit)
void dai_manage_military(struct ai_type *ait, const struct civ_map *nmap,
struct player *pplayer, struct unit *punit)
{
struct unit_ai *unit_data = def_ai_unit_data(punit, ait);
int id = punit->id;
......
/* Do we have a specific job for this unit? If not, we default
* to attack. */
dai_military_findjob(ait, pplayer, punit);
dai_military_findjob(ait, nmap, pplayer, punit);
switch (unit_data->task) {
case AIUNIT_AUTO_WORKER:
......
struct unit *bodyguard = aiguard_guard_of(ait, punit);
bool is_ferry = FALSE;
const struct unit_type *ptype;
const struct civ_map *nmap = &(wld.map);
CHECK_UNIT(punit);
......
} else if (!is_special_unit(punit)) {
TIMING_LOG(AIT_MILITARY, TIMER_START);
UNIT_LOG(LOG_DEBUG, punit, "recruit unit for the military");
dai_manage_military(ait, pplayer, punit);
dai_manage_military(ait, nmap, pplayer, punit);
TIMING_LOG(AIT_MILITARY, TIMER_STOP);
return;
} else {
ai/default/daiunit.h
void dai_manage_units(struct ai_type *ait, struct player *pplayer);
void dai_manage_unit(struct ai_type *ait, struct player *pplayer,
struct unit *punit);
void dai_manage_military(struct ai_type *ait, struct player *pplayer,
struct unit *punit);
void dai_manage_military(struct ai_type *ait, const struct civ_map *nmap,
struct player *pplayer, struct unit *punit);
struct city *find_nearest_safe_city(struct unit *punit);
bool uclass_need_trans_between(struct unit_class *pclass,
struct tile *ctile, struct tile *ptile);
    (1-1/1)