diff --git a/simhalt.cc b/simhalt.cc index 9c77b4fd3..e1eb43bbd 100644 --- a/simhalt.cc +++ b/simhalt.cc @@ -266,20 +266,25 @@ koord haltestelle_t::get_next_pos( koord start ) const void haltestelle_t::recalc_basis_pos() { koord cent; - sint32 level_sum; cent = koord(); - level_sum = 0; + float cent_x = 0.0, cent_y = 0.0; + float level_sum; + level_sum = 0.0; FOR(slist_tpl, const& i, tiles) { if( gebaeude_t* const gb = i.grund->find() ) { sint16 lv; lv = gb->get_tile()->get_desc()->get_level() + 1; - cent += gb->get_pos().get_2d() * lv; - level_sum += lv; + cent = gb->get_pos().get_2d() * lv; + cent_x += (float)cent.x / tiles.get_count(); + cent_y += (float)cent.y / tiles.get_count(); + level_sum += (float)lv / tiles.get_count(); } } + cent.x = (int)(cent_x / level_sum); + cent.y = (int)(cent_y / level_sum); if ( level_sum > 0 ) { - grund_t *new_center = get_ground_closest_to( cent/level_sum ); + grund_t *new_center = get_ground_closest_to( cent ); if( new_center != tiles.front().grund && new_center->get_text()==NULL ) { // move the name to new center, if there is not yet a name on it new_center->set_text( tiles.front().grund->get_text() );