|
|
@ -1043,11 +1043,11 @@ void embark_assist::survey::survey_mid_level_tile(embark_assist::defs::geo_data
|
|
|
|
mlt->at(i).at(k).river_present = false;
|
|
|
|
mlt->at(i).at(k).river_present = false;
|
|
|
|
mlt->at(i).at(k).river_elevation = 100;
|
|
|
|
mlt->at(i).at(k).river_elevation = 100;
|
|
|
|
|
|
|
|
|
|
|
|
if (details->rivers_vertical.active[i][k] == 1) {
|
|
|
|
if (details->rivers_vertical.active[i][k] != 0) {
|
|
|
|
mlt->at(i).at(k).river_present = true;
|
|
|
|
mlt->at(i).at(k).river_present = true;
|
|
|
|
mlt->at(i).at(k).river_elevation = details->rivers_vertical.elevation[i][k];
|
|
|
|
mlt->at(i).at(k).river_elevation = details->rivers_vertical.elevation[i][k];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (details->rivers_horizontal.active[i][k] == 1) {
|
|
|
|
else if (details->rivers_horizontal.active[i][k] != 0) {
|
|
|
|
mlt->at(i).at(k).river_present = true;
|
|
|
|
mlt->at(i).at(k).river_present = true;
|
|
|
|
mlt->at(i).at(k).river_elevation = details->rivers_horizontal.elevation[i][k];
|
|
|
|
mlt->at(i).at(k).river_elevation = details->rivers_horizontal.elevation[i][k];
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1179,6 +1179,51 @@ void embark_assist::survey::survey_mid_level_tile(embark_assist::defs::geo_data
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// This is messy. DF has some weird logic to leave out river bends with a South and an East connection, as well
|
|
|
|
|
|
|
|
// as river sources (and presumably sinks) that are to the North or the West of the connecting river.
|
|
|
|
|
|
|
|
// Experiments indicate these implicit river bends inherit their River Elevation from the lower of the two
|
|
|
|
|
|
|
|
// "parents", and it's assumed river sources and sinks similarly inherit it from their sole "parent".
|
|
|
|
|
|
|
|
// Two issues are known:
|
|
|
|
|
|
|
|
// - Lake and Ocean tiles may be marked as having a river when DF doesn't. However, DF does allow for rivers to
|
|
|
|
|
|
|
|
// exist in Ocean/Lake tiles, as well as sources/sinks.
|
|
|
|
|
|
|
|
// - DF generates rivers on/under glaciers, but does not display them (as they're frozen), nor are their names
|
|
|
|
|
|
|
|
// displayed.
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
for (uint8_t i = 1; i < 16; i++) {
|
|
|
|
|
|
|
|
for (uint8_t k = 0; k < 15; k++) {
|
|
|
|
|
|
|
|
if (details->rivers_horizontal.active[i][k] != 0 &&
|
|
|
|
|
|
|
|
details->rivers_vertical.active[i - 1][k + 1] != 0 &&
|
|
|
|
|
|
|
|
!mlt->at(i - 1).at(k).river_present) { // Probably never true
|
|
|
|
|
|
|
|
mlt->at(i - 1).at(k).river_present = true;
|
|
|
|
|
|
|
|
mlt->at(i - 1).at(k).river_elevation = mlt->at(i).at(k).river_elevation;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mlt->at(i - 1).at(k).river_elevation > mlt->at(i - 1).at(k + 1).river_elevation) {
|
|
|
|
|
|
|
|
mlt->at(i - 1).at(k).river_elevation = mlt->at(i - 1).at(k + 1).river_elevation;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (uint8_t i = 0; i < 16; i++) {
|
|
|
|
|
|
|
|
for (uint8_t k = 1; k < 16; k++) {
|
|
|
|
|
|
|
|
if (details->rivers_vertical.active[i][k] != 0 &&
|
|
|
|
|
|
|
|
!mlt->at(i).at(k - 1).river_present) {
|
|
|
|
|
|
|
|
mlt->at(i).at(k - 1).river_present = true;
|
|
|
|
|
|
|
|
mlt->at(i).at(k - 1).river_elevation = mlt->at(i).at(k).river_elevation;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (uint8_t i = 1; i < 16; i++) {
|
|
|
|
|
|
|
|
for (uint8_t k = 0; k < 16; k++) {
|
|
|
|
|
|
|
|
if (details->rivers_horizontal.active[i][k] != 0 &&
|
|
|
|
|
|
|
|
!mlt->at(i - 1).at(k).river_present) {
|
|
|
|
|
|
|
|
mlt->at(i - 1).at(k).river_present = true;
|
|
|
|
|
|
|
|
mlt->at(i - 1).at(k).river_elevation = mlt->at(i).at(k).river_elevation;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
survey_results->at(x).at(y).aquifer_count = 0;
|
|
|
|
survey_results->at(x).at(y).aquifer_count = 0;
|
|
|
|
survey_results->at(x).at(y).clay_count = 0;
|
|
|
|
survey_results->at(x).at(y).clay_count = 0;
|
|
|
|
survey_results->at(x).at(y).sand_count = 0;
|
|
|
|
survey_results->at(x).at(y).sand_count = 0;
|
|
|
|