Project

General

Profile

Feature #1373 ยป 0047-Add-CityStatus-value-CapitalConnected.patch

Marko Lindqvist, 05/06/2025 12:49 AM

View differences:

common/accessarea.h
extern "C" {
#endif /* __cplusplus */
struct access_area {
const struct player *plr;
struct city_list *cities;
bool capital;
};
/* get 'struct access_area_list' and related functions: */
#define SPECLIST_TAG aarea
#define SPECLIST_TYPE struct access_area
common/fc_types.h
#define SPECENUM_VALUE1NAME "Founded"
#include "specenum_gen.h"
struct access_area {
const struct player *plr;
struct city_list *cities;
bool capital;
};
#ifdef __cplusplus
}
#endif /* __cplusplus */
common/reqtext.c
case CITYS_TRANSFERRED:
city_property = _("transferred");
break;
case CITYS_CAPITALCONNECTED:
city_property = _("capitalconnected");
break;
case CITYS_LAST:
fc_assert(preq->source.value.citystatus != CITYS_LAST);
break;
common/requirements.c
return TRI_MAYBE;
case CITYS_CAPITALCONNECTED:
if (!is_server()) {
/* Client has no idea. */
return TRI_MAYBE;
}
switch (req->range) {
case REQ_RANGE_CITY:
return BOOL_TO_TRISTATE(context->city->server.aarea != nullptr
&& context->city->server.aarea->capital);
case REQ_RANGE_TRADE_ROUTE:
{
enum fc_tristate ret;
if (context->city->server.aarea != nullptr
&& context->city->server.aarea->capital) {
return TRI_YES;
}
ret = TRI_NO;
trade_partners_iterate(context->city, trade_partner) {
if (trade_partner == nullptr) {
ret = TRI_MAYBE;
} else if (trade_partner->server.aarea != nullptr
&& trade_partner->server.aarea->capital) {
return TRI_YES;
}
} trade_partners_iterate_end;
return ret;
}
case REQ_RANGE_LOCAL:
case REQ_RANGE_TILE:
case REQ_RANGE_CADJACENT:
case REQ_RANGE_ADJACENT:
case REQ_RANGE_CONTINENT:
case REQ_RANGE_PLAYER:
case REQ_RANGE_TEAM:
case REQ_RANGE_ALLIANCE:
case REQ_RANGE_WORLD:
case REQ_RANGE_COUNT:
break;
}
fc_assert_msg(FALSE, "Invalid range %d for citystatus CapitalConnected.",
req->range);
return TRI_MAYBE;
case CITYS_LAST:
break;
}
......
/* TRANS: CityStatus value - city has changed hands */
fc_strlcat(buf, _("Transferred"), bufsz);
break;
case CITYS_CAPITALCONNECTED:
fc_strlcat(buf, _("CapitalConnected"), bufsz);
break;
case CITYS_LAST:
fc_assert(psource->value.citystatus != CITYS_LAST);
fc_strlcat(buf, "error", bufsz);
doc/README.effects
the target tile in the given range (including the tile itself). At "Continent"
range this is just the full continent/ocean size.
CityStatus is "OwnedByOriginal", "Transferred", "Starved",
"Disorder", or "Celebration"
"Disorder", "Celebration", or "CapitalConnected"
The difference between "OwnedByOriginal" and "Transferred" is that
former is fulfilled also for liberated cities.
DiplRel is a diplomatic relationship.
gen_headers/enums/fc_types_enums.def
DISORDER "Disorder"
CELEBRATION "Celebration"
TRANSFERRED "Transferred"
CAPITALCONNECTED "CapitalConnected"
end
    (1-1/1)