問題点:
新しい町を作ると、マップ上のすべての産業施設の労働者居住地に加えられてしまう。
factory_worker_minimum_towns、factory_worker_maximum_towns、factory_worker_radiusが一切考慮されない。
修正案:
この修正では単に、労働者居住地に追加可能かどうかを判断しているだけです。
本当は追加不可能な場合でも、すでにある労働者居住地より近ければ、それと置き換えるべきなんでしょうが、そんな面倒くさいことはしていません。
単なるバグ修正だけです。
Index: simcity.cc
===================================================================
--- simcity.cc (リビジョン 3199)
+++ simcity.cc (作業コピー)
@@ -1123,7 +1123,10 @@
slist_iterator_tpl<fabrik_t*> fab_iter(welt->get_fab_list());
arbeiterziele.clear();
while (fab_iter.next()) {
- add_factory_arbeiterziel(fab_iter.get_current());
+ fabrik_t* fab = fab_iter.get_current();
+ if( (fab->get_arbeiterziele().get_count() < welt->get_einstellungen()->get_factory_worker_minimum_towns() || koord_distance( fab->get_pos(), this->get_pos() ) < welt->get_einstellungen()->get_factory_worker_radius()) && fab->get_arbeiterziele().get_count()<welt->get_einstellungen()->get_factory_worker_maximum_towns() ) {
+ add_factory_arbeiterziel(fab);
+ }
}
DBG_MESSAGE("stadt_t::verbinde_fabriken()", "is connected with %i factories (sum_weight=%i).", arbeiterziele.get_count(), arbeiterziele.get_sum_weight());
}
Index: simworld.cc
===================================================================
--- simworld.cc (リビジョン 3199)
+++ simworld.cc (作業コピー)
@@ -4214,7 +4214,10 @@
for (weighted_vector_tpl<stadt_t*>::const_iterator i = stadt.begin(), end = stadt.end(); i != end; ++i) {
// old versions did not save factory connections
if(file->get_version()<99014) {
+ sint32 temp = get_einstellungen()->get_factory_worker_minimum_towns();
+ get_einstellungen()->set_factory_worker_minimum_towns(0);
(*i)->verbinde_fabriken();
+ get_einstellungen()->set_factory_worker_minimum_towns(temp);
}
display_progress(x++, get_groesse_y() + 256 + stadt.get_count());
}
問題を発見したので修正。99.14未満のゲームを読み込むときに、factory_worker_minimum_townsをゼロにセットするように修正しました。