Project

General

Profile

Feature #110 ยป 0019-Add-MAP_-_DIRS-macros-to-world_object.h.patch

Marko Lindqvist, 01/02/2024 03:57 AM

View differences:

common/map.c
***********************************************************************/
enum direction8 rand_direction(void)
{
return wld.map.valid_dirs[fc_rand(wld.map.num_valid_dirs)];
return MAP_VALID_DIRS[fc_rand(MAP_NUM_VALID_DIRS)];
}
/*******************************************************************//**
common/terrain.c
on the value of card_only.
**************************************************************************/
#define variable_adjc_iterate(nmap, center_tile, _tile, card_only) \
{ \
enum direction8 *_tile##_list; \
int _tile##_count; \
\
if (card_only) { \
_tile##_list = wld.map.cardinal_dirs; \
_tile##_count = wld.map.num_cardinal_dirs; \
} else { \
_tile##_list = wld.map.valid_dirs; \
_tile##_count = wld.map.num_valid_dirs; \
} \
{ \
enum direction8 *_tile##_list; \
int _tile##_count; \
\
if (card_only) { \
_tile##_list = MAP_CARDINAL_DIRS; \
_tile##_count = MAP_NUM_CARDINAL_DIRS; \
} else { \
_tile##_list = MAP_VALID_DIRS; \
_tile##_count = MAP_NUM_VALID_DIRS; \
} \
adjc_dirlist_iterate(nmap, center_tile, _tile, _tile##_dir, \
_tile##_list, _tile##_count) {
#define variable_adjc_iterate_end \
} adjc_dirlist_iterate_end; \
#define variable_adjc_iterate_end \
} adjc_dirlist_iterate_end; \
}
/**********************************************************************//**
common/world_object.h
#define MAP_NATURAL_WIDTH (MAP_IS_ISOMETRIC ? 2 * wld.map.xsize : wld.map.xsize)
#define MAP_NATURAL_HEIGHT wld.map.ysize
#define MAP_CARDINAL_DIRS wld.map.cardinal_dirs
#define MAP_NUM_CARDINAL_DIRS wld.map.num_cardinal_dirs
#define MAP_VALID_DIRS wld.map.valid_dirs
#define MAP_NUM_VALID_DIRS wld.map.num_valid_dirs
#ifdef __cplusplus
}
server/advisors/autoexplorer.c
}
} adjc_dir_iterate_end;
return 50 + (50 / wld.map.num_valid_dirs * (native - foreign));
return 50 + (50 / MAP_NUM_VALID_DIRS * (native - foreign));
}
/**********************************************************************//**
server/generator/mapgen.c
if (pftile->flags & FTF_OCEAN) {
bool land_around = FALSE;
for (j = 0; j < wld.map.num_valid_dirs; j++) {
pftile2 = fair_map_tile_step(pmap, pftile, wld.map.valid_dirs[j]);
for (j = 0; j < MAP_NUM_VALID_DIRS; j++) {
pftile2 = fair_map_tile_step(pmap, pftile, MAP_VALID_DIRS[j]);
if (pftile2 != NULL
&& pftile2->flags & FTF_ASSIGNED
&& !(pftile2->flags & FTF_OCEAN)) {
......
* resource for the terrain. */
if (pftile->presource != NULL) {
pftile->flags |= FTF_NO_RESOURCE;
for (j = 0; j < wld.map.num_valid_dirs; j++) {
pftile2 = fair_map_tile_step(pmap, pftile, wld.map.valid_dirs[j]);
for (j = 0; j < MAP_NUM_VALID_DIRS; j++) {
pftile2 = fair_map_tile_step(pmap, pftile, MAP_VALID_DIRS[j]);
if (pftile2 != NULL) {
pftile2->flags |= FTF_NO_RESOURCE;
}
......
while (i < fantasy) {
pftile = land_tiles[fc_rand(i)];
for (j = 0; j < wld.map.num_valid_dirs; j++) {
pftile2 = fair_map_tile_step(pisland, pftile, wld.map.valid_dirs[j]);
for (j = 0; j < MAP_NUM_VALID_DIRS; j++) {
pftile2 = fair_map_tile_step(pisland, pftile, MAP_VALID_DIRS[j]);
fc_assert(pftile2 != NULL);
if (fair_map_tile_border(pisland, pftile2, sea_around_island)) {
continue;
......
}
while (i < size) {
pftile = land_tiles[i - fc_rand(fantasy) - 1];
pftile2 = fair_map_tile_step(pisland, pftile, wld.map.cardinal_dirs
[fc_rand(wld.map.num_cardinal_dirs)]);
pftile2 = fair_map_tile_step(pisland, pftile,
MAP_CARDINAL_DIRS[fc_rand(MAP_NUM_CARDINAL_DIRS)]);
fc_assert(pftile2 != NULL);
if (fair_map_tile_border(pisland, pftile2, sea_around_island)) {
continue;
......
if (river_type_count > 0) {
struct extra_type *priver;
struct fair_tile *pend;
int n = ((river_pct * size * wld.map.num_cardinal_dirs
* wld.map.num_cardinal_dirs) / 200);
int n = ((river_pct * size * MAP_NUM_CARDINAL_DIRS
* MAP_NUM_CARDINAL_DIRS) / 200);
int length_max = 3, length, l;
enum direction8 dir;
int extra_idx;
......
river_around = 0;
connectable_river_around = FALSE;
ocean_around = FALSE;
for (j = 0; j < wld.map.num_valid_dirs; j++) {
pftile2 = fair_map_tile_step(pisland, pftile, wld.map.valid_dirs[j]);
for (j = 0; j < MAP_NUM_VALID_DIRS; j++) {
pftile2 = fair_map_tile_step(pisland, pftile, MAP_VALID_DIRS[j]);
if (pftile2 == NULL) {
continue;
}
......
break;
} else if (BV_ISSET(pftile2->extras, extra_idx)) {
river_around++;
if (!cardinal_only || is_cardinal_dir(wld.map.valid_dirs[j])) {
if (!cardinal_only || is_cardinal_dir(MAP_VALID_DIRS[j])) {
connectable_river_around = TRUE;
}
}
......
length = -1;
dir = direction8_invalid();
dirs_num = 0;
for (j = 0; j < wld.map.num_valid_dirs; j++) {
if (cardinal_only && !is_cardinal_dir(wld.map.valid_dirs[j])) {
for (j = 0; j < MAP_NUM_VALID_DIRS; j++) {
if (cardinal_only && !is_cardinal_dir(MAP_VALID_DIRS[j])) {
continue;
}
finished = FALSE;
pftile2 = pftile;
for (l = 2; l < length_max; l++) {
pftile2 = fair_map_tile_step(pisland, pftile2, wld.map.valid_dirs[j]);
pftile2 = fair_map_tile_step(pisland, pftile2, MAP_VALID_DIRS[j]);
if (pftile2 == NULL
|| !terrain_has_flag(pftile2->pterrain, TER_CAN_HAVE_RIVER)) {
break;
......
river_around = 0;
connectable_river_around = FALSE;
ocean_around = FALSE;
for (k = 0; k < wld.map.num_valid_dirs; k++) {
if (wld.map.valid_dirs[k] == DIR_REVERSE(wld.map.valid_dirs[j])) {
for (k = 0; k < MAP_NUM_VALID_DIRS; k++) {
if (wld.map.valid_dirs[k] == DIR_REVERSE(MAP_VALID_DIRS[j])) {
continue;
}
pftile3 = fair_map_tile_step(pisland, pftile2,
wld.map.valid_dirs[k]);
MAP_VALID_DIRS[k]);
if (pftile3 == NULL) {
continue;
}
if (pftile3->flags & FTF_OCEAN) {
if (!cardinal_only || is_cardinal_dir(wld.map.valid_dirs[k])) {
if (!cardinal_only || is_cardinal_dir(MAP_VALID_DIRS[k])) {
ocean_around = TRUE;
}
} else if (BV_ISSET(pftile3->extras, extra_idx)) {
river_around++;
if (!cardinal_only || is_cardinal_dir(wld.map.valid_dirs[k])) {
if (!cardinal_only || is_cardinal_dir(MAP_VALID_DIRS[k])) {
connectable_river_around = TRUE;
}
}
......
}
}
if (finished && fc_rand(++dirs_num) == 0) {
dir = wld.map.valid_dirs[j];
dir = MAP_VALID_DIRS[j];
pend = pftile2;
length = l;
}
server/generator/mapgen_utils.c
**************************************************************************/
static struct terrain *most_adjacent_ocean_type(const struct tile *ptile)
{
const int need = 2 * wld.map.num_valid_dirs / 3;
const int need = 2 * MAP_NUM_VALID_DIRS / 3;
int count;
terrain_type_iterate(pterrain) {
    (1-1/1)