107
106
ware.set_zielpos(dest_pos);
109
108
for (uint16 hh = 0; hh<start_plan->get_haltlist_count(); hh++) {
110
if( start_list[hh]->suche_route( ware, NULL, false ) != haltestelle_t::NO_ROUTE ) {
109
if( haltestelle_t::search_route( start_list+hh, 1u, false, ware ) != haltestelle_t::NO_ROUTE ) {
111
110
// ok, already connected
333
332
// is the a suitable one?
334
333
if(besch!=NULL) {
335
334
// cost is negative!
336
sint64 cost = welt->get_einstellungen()->cst_multiply_headquarter*besch->get_level()*besch->get_b()*besch->get_h();
335
sint64 const cost = welt->get_settings().cst_multiply_headquarter * besch->get_level() * besch->get_b() * besch->get_h();
337
336
if( konto+cost > starting_money ) {
338
337
// and enough money left ...
339
338
koord place = get_headquarter_pos();
478
477
vehikel_t* test_driver = vehikelbauer_t::baue(welt->lookup_kartenboden(platz1)->get_pos(), this, NULL, &test_besch);
479
478
test_driver->set_flag( ding_t::not_on_map );
480
479
route_t verbindung;
481
if (verbindung.calc_route(welt, welt->lookup_kartenboden(platz1)->get_pos(), welt->lookup_kartenboden(platz2)->get_pos(), test_driver, 0) &&
482
verbindung.get_count()<2u*koord_distance(platz1,platz2)) {
480
if( verbindung.calc_route(welt, welt->lookup_kartenboden(platz1)->get_pos(), welt->lookup_kartenboden(platz2)->get_pos(), test_driver, 0, 0) &&
481
verbindung.get_count() < 2u*koord_distance(platz1,platz2)) {
483
482
DBG_MESSAGE("ai_passenger_t::create_simple_road_transport()","Already connection between %d,%d to %d,%d is only %i",platz1.x, platz1.y, platz2.x, platz2.y, verbindung.get_count() );
484
483
// found something with the nearly same lenght
485
484
delete test_driver;
496
495
bauigel.set_keep_city_roads(true);
497
496
bauigel.set_maximum(10000);
499
INT_CHECK("simplay 846");
501
499
bauigel.calc_route(welt->lookup_kartenboden(platz1)->get_pos(),welt->lookup_kartenboden(platz2)->get_pos());
502
if(bauigel.get_count() > 2) {
503
DBG_MESSAGE("ai_t::create_simple_road_transport()","building simple road from %d,%d to %d,%d",platz1.x, platz1.y, platz2.x, platz2.y);
502
// now try route with terraforming
503
wegbauer_t baumaulwurf(welt, this);
504
baumaulwurf.route_fuer( wegbauer_t::strasse|wegbauer_t::terraform_flag, road_weg, tunnelbauer_t::find_tunnel(road_wt,road_weg->get_topspeed(),welt->get_timeline_year_month()), brueckenbauer_t::find_bridge(road_wt,road_weg->get_topspeed(),welt->get_timeline_year_month()) );
505
baumaulwurf.set_keep_existing_faster_ways(true);
506
baumaulwurf.set_keep_city_roads(true);
507
baumaulwurf.set_maximum(10000);
508
baumaulwurf.calc_route(welt->lookup_kartenboden(platz1)->get_pos(),welt->lookup_kartenboden(platz2)->get_pos());
510
// build with terraforming if shorter and enough money is available
511
bool with_tf = (baumaulwurf.get_count() > 2) && (10*baumaulwurf.get_count() < 9*bauigel.get_count() || bauigel.get_count() <= 2);
513
with_tf &= baumaulwurf.calc_costs() < konto;
516
// now build with or without terraforming
518
DBG_MESSAGE("ai_t::create_simple_road_transport()","building not so simple road from %d,%d to %d,%d",platz1.x, platz1.y, platz2.x, platz2.y);
522
else if(bauigel.get_count() > 2) {
523
DBG_MESSAGE("ai_t::create_simple_road_transport()","building simple road from %d,%d to %d,%d",platz1.x, platz1.y, platz2.x, platz2.y);
507
527
// beware: The stop position might have changes!
508
DBG_MESSAGE("ai_t::create_simple_road_transport()","building simple road from %d,%d to %d,%d failed",platz1.x, platz1.y, platz2.x, platz2.y);
528
DBG_MESSAGE("ai_t::create_simple_road_transport()","building simple road from %d,%d to %d,%d failed",platz1.x, platz1.y, platz2.x, platz2.y);