70
71
depot_frame_t::depot_frame_t(depot_t* depot) :
71
gui_frame_t(txt_title, depot->get_besitzer()),
72
gui_frame_t( translator::translate(depot->get_name()), depot->get_besitzer()),
73
74
icnv(depot->convoi_count()-1),
74
75
lb_convois(NULL, COL_BLACK, gui_label_t::left),
259
265
grid.y = depot->get_y_grid() * get_base_tile_raster_width() / 64 + 6;
260
266
placement.x = depot->get_x_placement() * get_base_tile_raster_width() / 64 + 2;
261
267
placement.y = depot->get_y_placement() * get_base_tile_raster_width() / 64 + 2;
262
if(depot->get_wegtyp()==road_wt && umgebung_t::drive_on_left) {
263
// correct for dive on left
264
placement.x -= (12*get_base_tile_raster_width())/64;
265
placement.y -= (6*get_base_tile_raster_width())/64;
267
268
grid_dx = depot->get_x_grid() * get_base_tile_raster_width() / 64 / 2;
268
269
placement_dx = depot->get_x_grid() * get_base_tile_raster_width() / 64 / 4;
307
308
* [Start][Schedule][Destroy][Sell]
308
309
* [new Route][change Route][delete Route]
310
int ABUTTON_WIDTH = 96;
311
int ABUTTON_WIDTH = 92;
311
312
int ABUTTON_HEIGHT = 14;
312
int ACTIONS_WIDTH = 4 * ABUTTON_WIDTH;
313
int ACTIONS_WIDTH = 2+4*(ABUTTON_WIDTH+2);
313
314
int ACTIONS_HEIGHT = ABUTTON_HEIGHT + ABUTTON_HEIGHT; // @author hsiegeln: added "+ ABUTTON_HEIGHT"
316
317
* Structure of [VINFO] is one multiline text.
318
int VINFO_HEIGHT = 86+12;
319
int VINFO_HEIGHT = 9*LINESPACE-1;
321
322
* Total width is the max from [CONVOI] and [ACTIONS] width.
372
373
lb_convois.set_pos(koord(4, SELECT_VSTART - 10));
374
bt_prev.set_pos(koord(5, SELECT_VSTART + 2));
376
inp_name.set_pos(koord(5+12, SELECT_VSTART));
377
inp_name.set_groesse(koord(TOTAL_WIDTH - 26-8, 14));
379
bt_next.set_pos(koord(TOTAL_WIDTH - 15, SELECT_VSTART + 2));
375
bt_prev.set_pos(koord(3, SELECT_VSTART + 2));
377
inp_name.set_pos(koord(3+12, SELECT_VSTART));
378
inp_name.set_groesse(koord(TOTAL_WIDTH - 26-3, 14));
380
bt_next.set_pos(koord(TOTAL_WIDTH - 12, SELECT_VSTART + 2));
382
383
* [SELECT ROUTE]:
383
384
* @author hsiegeln
385
line_selector.set_pos(koord(5, SELECT_VSTART + 14));
386
line_selector.set_groesse(koord(TOTAL_WIDTH - 8, 14));
387
line_selector.set_max_size(koord(TOTAL_WIDTH - 8, LINESPACE*13+2+16));
386
line_selector.set_pos(koord(3, SELECT_VSTART + 14));
387
line_selector.set_groesse(koord(TOTAL_WIDTH - 3, 14));
388
line_selector.set_max_size(koord(TOTAL_WIDTH - 3, LINESPACE*13+2+16));
388
389
line_selector.set_highlight_color(1);
406
bt_start.set_pos(koord(0, ACTIONS_VSTART));
407
bt_start.set_groesse(koord(TOTAL_WIDTH/4, ABUTTON_HEIGHT));
407
bt_start.set_pos(koord(2, ACTIONS_VSTART));
408
bt_start.set_groesse(koord(TOTAL_WIDTH/4-2, ABUTTON_HEIGHT));
408
409
bt_start.set_text("Start");
410
bt_schedule.set_pos(koord(TOTAL_WIDTH/4, ACTIONS_VSTART));
411
bt_schedule.set_groesse(koord(TOTAL_WIDTH*2/4-TOTAL_WIDTH/4, ABUTTON_HEIGHT));
411
bt_schedule.set_pos(koord(TOTAL_WIDTH/4+2, ACTIONS_VSTART));
412
bt_schedule.set_groesse(koord(TOTAL_WIDTH*2/4-TOTAL_WIDTH/4-3, ABUTTON_HEIGHT));
412
413
bt_schedule.set_text("Fahrplan");
414
bt_destroy.set_pos(koord(TOTAL_WIDTH*2/4, ACTIONS_VSTART));
415
bt_destroy.set_groesse(koord(TOTAL_WIDTH*3/4-TOTAL_WIDTH*2/4, ABUTTON_HEIGHT));
415
bt_destroy.set_pos(koord(TOTAL_WIDTH*2/4+1, ACTIONS_VSTART));
416
bt_destroy.set_groesse(koord(TOTAL_WIDTH*3/4-TOTAL_WIDTH*2/4-2, ABUTTON_HEIGHT));
416
417
bt_destroy.set_text("Aufloesen");
418
bt_sell.set_pos(koord(TOTAL_WIDTH*3/4, ACTIONS_VSTART));
419
bt_sell.set_groesse(koord(TOTAL_WIDTH-TOTAL_WIDTH*3/4, ABUTTON_HEIGHT));
419
bt_sell.set_pos(koord(TOTAL_WIDTH*3/4+1, ACTIONS_VSTART));
420
bt_sell.set_groesse(koord(TOTAL_WIDTH-TOTAL_WIDTH*3/4-3, ABUTTON_HEIGHT));
420
421
bt_sell.set_text("Verkauf");
423
424
* ACTIONS for new route management buttons
424
425
* @author hsiegeln
426
bt_new_line.set_pos(koord(0, ACTIONS_VSTART+ABUTTON_HEIGHT));
427
bt_new_line.set_groesse(koord(TOTAL_WIDTH/4, ABUTTON_HEIGHT));
427
bt_new_line.set_pos(koord(2, ACTIONS_VSTART+ABUTTON_HEIGHT));
428
bt_new_line.set_groesse(koord(TOTAL_WIDTH/4-2, ABUTTON_HEIGHT));
428
429
bt_new_line.set_text("New Line");
430
bt_apply_line.set_pos(koord(TOTAL_WIDTH/4, ACTIONS_VSTART+ABUTTON_HEIGHT));
431
bt_apply_line.set_groesse(koord(TOTAL_WIDTH*2/4-TOTAL_WIDTH/4, ABUTTON_HEIGHT));
431
bt_apply_line.set_pos(koord(TOTAL_WIDTH/4+2, ACTIONS_VSTART+ABUTTON_HEIGHT));
432
bt_apply_line.set_groesse(koord(TOTAL_WIDTH*2/4-3-TOTAL_WIDTH/4, ABUTTON_HEIGHT));
432
433
bt_apply_line.set_text("Apply Line");
434
bt_change_line.set_pos(koord(TOTAL_WIDTH*2/4, ACTIONS_VSTART+ABUTTON_HEIGHT));
435
bt_change_line.set_groesse(koord(TOTAL_WIDTH*3/4-TOTAL_WIDTH*2/4, ABUTTON_HEIGHT));
435
bt_change_line.set_pos(koord(TOTAL_WIDTH*2/4+1, ACTIONS_VSTART+ABUTTON_HEIGHT));
436
bt_change_line.set_groesse(koord(TOTAL_WIDTH*3/4-2-TOTAL_WIDTH*2/4, ABUTTON_HEIGHT));
436
437
bt_change_line.set_text("Update Line");
438
bt_copy_convoi.set_pos(koord(TOTAL_WIDTH*3/4, ACTIONS_VSTART+ABUTTON_HEIGHT));
439
bt_copy_convoi.set_groesse(koord(TOTAL_WIDTH-TOTAL_WIDTH*3/4, ABUTTON_HEIGHT));
439
bt_copy_convoi.set_pos(koord(TOTAL_WIDTH*3/4+1, ACTIONS_VSTART+ABUTTON_HEIGHT));
440
bt_copy_convoi.set_groesse(koord(TOTAL_WIDTH-TOTAL_WIDTH*3/4-3, ABUTTON_HEIGHT));
440
441
bt_copy_convoi.set_text("Copy Convoi");
448
449
pas.set_grid(grid);
449
450
pas.set_placement(placement);
450
pas.set_groesse(tabs.get_groesse());
451
pas.set_groesse(tabs.get_groesse()-koord(scrollbar_t::BAR_SIZE,0));
451
452
pas.recalc_size();
452
pas.set_pos(koord(1,1));
453
pas.set_pos(koord(0,0));
453
454
cont_pas.set_groesse(pas.get_groesse());
454
455
scrolly_pas.set_groesse(scrolly_pas.get_groesse());
456
scrolly_pas.set_scroll_amount_y(grid.y);
457
scrolly_pas.set_scroll_discrete_y(false);
458
scrolly_pas.set_size_corner(false);
456
460
electrics.set_grid(grid);
457
461
electrics.set_placement(placement);
458
electrics.set_groesse(tabs.get_groesse());
462
electrics.set_groesse(tabs.get_groesse()-koord(scrollbar_t::BAR_SIZE,0));
459
463
electrics.recalc_size();
460
electrics.set_pos(koord(1,1));
464
electrics.set_pos(koord(0,0));
461
465
cont_electrics.set_groesse(electrics.get_groesse());
462
466
scrolly_electrics.set_groesse(scrolly_electrics.get_groesse());
467
scrolly_electrics.set_scroll_amount_y(grid.y);
468
scrolly_electrics.set_scroll_discrete_y(false);
469
scrolly_electrics.set_size_corner(false);
464
471
loks.set_grid(grid);
465
472
loks.set_placement(placement);
466
loks.set_groesse(tabs.get_groesse());
473
loks.set_groesse(tabs.get_groesse()-koord(scrollbar_t::BAR_SIZE,0));
467
474
loks.recalc_size();
468
loks.set_pos(koord(1,1));
469
cont_loks.set_pos(koord(0,0));
475
loks.set_pos(koord(0,0));
470
476
cont_loks.set_groesse(loks.get_groesse());
471
477
scrolly_loks.set_groesse(scrolly_loks.get_groesse());
478
scrolly_loks.set_scroll_amount_y(grid.y);
479
scrolly_loks.set_scroll_discrete_y(false);
480
scrolly_loks.set_size_corner(false);
473
482
waggons.set_grid(grid);
474
483
waggons.set_placement(placement);
475
waggons.set_groesse(tabs.get_groesse());
484
waggons.set_groesse(tabs.get_groesse()-koord(scrollbar_t::BAR_SIZE,0));
476
485
waggons.recalc_size();
477
waggons.set_pos(koord(1,1));
486
waggons.set_pos(koord(0,0));
478
487
cont_waggons.set_groesse(waggons.get_groesse());
479
488
scrolly_waggons.set_groesse(scrolly_waggons.get_groesse());
489
scrolly_waggons.set_scroll_amount_y(grid.y);
490
scrolly_waggons.set_scroll_discrete_y(false);
491
scrolly_waggons.set_size_corner(false);
481
493
div_tabbottom.set_pos(koord(0,PANEL_VSTART+PANEL_HEIGHT));
482
494
div_tabbottom.set_groesse(koord(TOTAL_WIDTH,0));
862
874
// otherwise some unintended undo if renaming would occur
863
875
if( t && t[0] && strcmp(t, cnv->get_name()) && strcmp(txt_old_cnv_name, cnv->get_name())==0 ) {
864
876
// text changed => call tool
866
878
buf.printf( "c%u,%s", cnv.get_id(), t );
867
879
werkzeug_t *w = create_tool( WKZ_RENAME_TOOL | SIMPLE_TOOL );
868
880
w->set_default_param( buf );
1136
1151
total_min_weight += (min_weight*besch->get_zuladung()+499)/1000;
1138
1153
// ensure that argument of sqrt is not negative
1139
max_speed = total_power < total_min_weight ? 0 : min( speed_to_kmh(cnv->get_min_top_speed()), sqrt( (double)total_power/total_min_weight - 1)*50 );
1140
min_speed = total_power < total_max_weight ? 0 : min( speed_to_kmh(cnv->get_min_top_speed()), sqrt( (double)total_power/total_max_weight - 1)*50 );
1154
const sint32 cnv_min_top_speed = speed_to_kmh( cnv->get_min_top_speed() );
1155
empty_speed = total_power < total_empty_weight ? 0 : min( cnv_min_top_speed, sqrt( (double)total_power/total_empty_weight - 1)*50 );
1156
max_speed = total_power < total_min_weight ? 0 : min( cnv_min_top_speed, sqrt( (double)total_power/total_min_weight - 1)*50 );
1157
min_speed = total_power < total_max_weight ? 0 : min( cnv_min_top_speed, sqrt( (double)total_power/total_max_weight - 1)*50 );
1141
1159
sprintf(txt_convoi_count, "%s %d (%s %i)",
1142
1160
translator::translate("Fahrzeuge:"), cnv->get_vehikel_anzahl(),
1143
1161
translator::translate("Station tiles:"), cnv->get_tile_length() );
1144
sprintf(txt_convoi_speed, "%s %d(%d)km/h", translator::translate("Max. speed:"), min_speed, max_speed );
1162
if( empty_speed != min_speed ) {
1163
if( max_speed != min_speed ) {
1164
sprintf( txt_convoi_speed, "%s %d km/h, %d-%d km/h %s", translator::translate("Max. speed:"), empty_speed, min_speed, max_speed, translator::translate("loaded") );
1167
sprintf( txt_convoi_speed, "%s %d km/h, %d km/h %s", translator::translate("Max. speed:"), empty_speed, min_speed, translator::translate("loaded") );
1171
sprintf( txt_convoi_speed, "%s %d km/h", translator::translate("Max. speed:"), empty_speed );
1145
1173
sprintf(txt_convoi_value, "%s %ld$", translator::translate("Restwert:"), (long)(cnv->calc_restwert()/100) );
1146
1174
if( cnv->get_line().is_bound() && cnv->get_line()->get_schedule()->matches( get_welt(),cnv->get_schedule() ) ) {
1147
1175
sprintf(txt_convoi_line, "%s %s", translator::translate("Serves Line:"), cnv->get_line()->get_name());
1312
1340
translator::translate("WAGGON_INFO"),
1313
translator::translate(veh_type->get_name(),depot->get_welt()->get_einstellungen()->get_name_language_id()),
1341
translator::translate(veh_type->get_name(), depot->get_welt()->get_settings().get_name_language_id()),
1314
1342
veh_type->get_preis()/100,
1315
1343
veh_type->get_betriebskosten()/100.0,
1316
1344
veh_type->get_zuladung(),
1336
1364
translator::get_month_name(veh_type->get_retire_year_month()%12),
1337
1365
veh_type->get_retire_year_month()/12 );
1368
n += sprintf(buf+n, "\n");
1340
1371
if(veh_type->get_leistung() > 0 && veh_type->get_gear()!=64) {
1341
1372
n+= sprintf(buf+n, "%s %0.2f : 1\n", translator::translate("Gear:"), veh_type->get_gear()/64.0);
1375
n += sprintf(buf+n, "\n");
1344
if(veh_type->get_copyright()!=NULL && veh_type->get_copyright()[0]!=0) {
1345
n += sprintf(buf + n, translator::translate("Constructed by %s"), veh_type->get_copyright());
1378
if (char const* const copyright = veh_type->get_copyright()) {
1379
n += sprintf(buf + n, translator::translate("Constructed by %s"), copyright);
1382
n += sprintf(buf+n, "\n");
1348
1385
if(value != -1) {