Index: simwerkz.cc =================================================================== --- simwerkz.cc (revision 2484) +++ simwerkz.cc (working copy) @@ -1216,7 +1216,7 @@ /* way construction */ const weg_besch_t *wkz_wegebau_t::defaults[17] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -const weg_besch_t * wkz_wegebau_t::get_besch(bool remember) +const weg_besch_t * wkz_wegebau_t::get_besch(bool remember, karte_t *welt) { const weg_besch_t *besch = wegbauer_t::get_besch(default_param,0); if(besch==NULL) { @@ -1224,9 +1224,8 @@ besch = defaults[wt&63]; if(besch==NULL) { if(wt<=air_wt) { - weg_t *w = weg_t::alloc(wt); - besch = w->get_besch(); - delete w; + // search fastest way. + besch = wegbauer_t::weg_search(wt, 0xffffffff, welt->get_timeline_year_month(), weg_t::type_flat); } else { besch = wegbauer_t::leitung_besch; @@ -1235,14 +1234,18 @@ } assert(besch); if(remember) { - defaults[besch->get_wtyp()&63] = besch; + if( besch->get_styp() == weg_t::type_tram ) + defaults[ tram_wt ] = besch; + else { + defaults[besch->get_wtyp()&63] = besch; + } } return besch; } const char *wkz_wegebau_t::get_tooltip(spieler_t *sp) { - const weg_besch_t *besch = get_besch(false); + const weg_besch_t *besch = get_besch(false, sp->get_welt()); sprintf(toolstr, "%s, %ld$ (%.2lf$), %dkm/h", translator::translate(besch->get_name()), besch->get_preis()/100l, @@ -1266,7 +1265,7 @@ delete z; } // now get current besch - besch = get_besch(true); + besch = get_besch(true, welt); if(besch && besch->get_cursor()->get_bild_nr(0) != IMG_LEER) { cursor = besch->get_cursor()->get_bild_nr(0); } Index: simwerkz.h =================================================================== --- simwerkz.h (revision 2484) +++ simwerkz.h (working copy) @@ -186,7 +186,7 @@ zeiger_t *wkz_wegebau_bauer; slist_tpl marked; const weg_besch_t *besch; - const weg_besch_t *get_besch(bool); + const weg_besch_t *get_besch(bool, karte_t*); public: wkz_wegebau_t() : werkzeug_t() { wkz_wegebau_bauer=NULL; } virtual image_id get_icon(spieler_t *) { return grund_t::underground_mode ? IMG_LEER : icon; } class wkz_station_t : public werkzeug_t {