From b886afa00fa5d96922c03b354db6f1eaf37a0cd0 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Mon, 26 Aug 2002 21:21:04 +0000 Subject: [PATCH] Test eines mapper-fixes --- src/mapper/autoseed.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/mapper/autoseed.c b/src/mapper/autoseed.c index de41c4cbf..74506c1c9 100644 --- a/src/mapper/autoseed.c +++ b/src/mapper/autoseed.c @@ -327,16 +327,29 @@ mkisland(int nsize) terraform(r, T_OCEAN); add_regionlist(&rlist, r); rsize = 1; - while (rlist && nsize && newfactions) { + while (nsize) { int i = rand() % rsize; regionlist ** rnext = &rlist; direction_t d; while (i--) rnext=&(*rnext)->next; r = (*rnext)->region; *rnext = (*rnext)->next; + if (rsize==0) { + log_error(("Could not place all factions on the same island as requested\n")); + break; + } --rsize; assert(r->terrain==T_OCEAN); - if (rand() % REGIONS_PER_FACTION == 0) { + for (d=0;d!=MAXDIRECTIONS;++d) { + region * rn = rconnect(r, d); + if (rn==NULL) { + rn = new_region(r->x + delta_x[d], r->y + delta_y[d]); + terraform(rn, T_OCEAN); + add_regionlist(&rlist, rn); + ++rsize; + } + } + if (rand() % REGIONS_PER_FACTION == 0 || rsize==0) { newfaction ** nfp, * nextf = newfactions; unit * u; terraform(r, preferred_terrain(nextf->race)); @@ -358,15 +371,6 @@ mkisland(int nsize) else { terraform(r, (terrain_t)((rand() % T_GLACIER)+1)); } - for (d=0;d!=MAXDIRECTIONS;++d) { - region * rn = rconnect(r, d); - if (rn==NULL) { - rn = new_region(r->x + delta_x[d], r->y + delta_y[d]); - terraform(rn, T_OCEAN); - add_regionlist(&rlist, rn); - ++rsize; - } - } } if (rlist) { regionlist ** rbegin = &rlist;