~ubuntu-branches/ubuntu/raring/simutrans/raring-proposed

« back to all changes in this revision

Viewing changes to player/ai.cc

  • Committer: Package Import Robot
  • Author(s): Ansgar Burchardt
  • Date: 2011-11-03 19:59:02 UTC
  • mfrom: (1.2.7)
  • Revision ID: package-import@ubuntu.com-20111103195902-uopgwf488mfctb75
Tags: 111.0-1
* New upstream release.
* debian/rules: Update get-orig-source target for new upstream release.
* Use xz compression for source and binary packages.
* Use override_* targets to simplify debian/rules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#include "../simhalt.h"
14
14
#include "../simintr.h"
15
15
#include "../simmenu.h"
16
 
#include "../simmesg.h"
17
16
#include "../simskin.h"
18
17
#include "../simware.h"
19
18
 
107
106
        ware.set_zielpos(dest_pos);
108
107
        ware.menge = 1;
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
112
111
                        return true;
113
112
                }
193
192
        // distance of last found point
194
193
        int dist=0x7FFFFFFF;
195
194
        koord   platz;
196
 
        int cov = welt->get_einstellungen()->get_station_coverage();
 
195
        int const cov = welt->get_settings().get_station_coverage();
197
196
        int xpos = start.x;
198
197
        int ypos = start.y;
199
198
 
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);
498
497
 
499
 
        INT_CHECK("simplay 846");
500
 
 
 
498
        INT_CHECK("ai 499");
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);
 
500
        INT_CHECK("ai 501");
 
501
 
 
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());
 
509
 
 
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);
 
512
        if (with_tf) {
 
513
                with_tf &= baumaulwurf.calc_costs() < konto;
 
514
        }
 
515
 
 
516
        // now build with or without terraforming
 
517
        if (with_tf) {
 
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);
 
519
                baumaulwurf.baue();
 
520
                return true;
 
521
        }
 
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);
504
524
                bauigel.baue();
505
525
                return true;
506
526
        }
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);
509
529
        return false;
510
530
}
511
531