447 SetBit(facilities, e->we.click.widget - SLW_TRAIN); |
447 SetBit(facilities, e->we.click.widget - SLW_TRAIN); |
448 w->LowerWidget(e->we.click.widget); |
448 w->LowerWidget(e->we.click.widget); |
449 } |
449 } |
450 w->SetWidgetLoweredState(SLW_FACILALL, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK)); |
450 w->SetWidgetLoweredState(SLW_FACILALL, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK)); |
451 sl->flags |= SL_REBUILD; |
451 sl->flags |= SL_REBUILD; |
452 SetWindowDirty(w); |
452 w->SetDirty(); |
453 break; |
453 break; |
454 |
454 |
455 case SLW_FACILALL: |
455 case SLW_FACILALL: |
456 for (uint i = 0; i < 5; i++) { |
456 for (uint i = 0; i < 5; i++) { |
457 w->LowerWidget(i + SLW_TRAIN); |
457 w->LowerWidget(i + SLW_TRAIN); |
458 } |
458 } |
459 w->LowerWidget(SLW_FACILALL); |
459 w->LowerWidget(SLW_FACILALL); |
460 |
460 |
461 facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK; |
461 facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK; |
462 sl->flags |= SL_REBUILD; |
462 sl->flags |= SL_REBUILD; |
463 SetWindowDirty(w); |
463 w->SetDirty(); |
464 break; |
464 break; |
465 |
465 |
466 case SLW_CARGOALL: { |
466 case SLW_CARGOALL: { |
467 uint i = 0; |
467 uint i = 0; |
468 for (CargoID c = 0; c < NUM_CARGO; c++) { |
468 for (CargoID c = 0; c < NUM_CARGO; c++) { |
474 w->LowerWidget(SLW_CARGOALL); |
474 w->LowerWidget(SLW_CARGOALL); |
475 |
475 |
476 _cargo_filter = _cargo_mask; |
476 _cargo_filter = _cargo_mask; |
477 include_empty = true; |
477 include_empty = true; |
478 sl->flags |= SL_REBUILD; |
478 sl->flags |= SL_REBUILD; |
479 SetWindowDirty(w); |
479 w->SetDirty(); |
480 break; |
480 break; |
481 } |
481 } |
482 |
482 |
483 case SLW_SORTBY: // flip sorting method asc/desc |
483 case SLW_SORTBY: // flip sorting method asc/desc |
484 sl->flags ^= SL_ORDER; //DESC-flag |
484 sl->flags ^= SL_ORDER; //DESC-flag |
485 station_sort.order = HasBit(sl->flags, 0); |
485 station_sort.order = HasBit(sl->flags, 0); |
486 sl->flags |= SL_RESORT; |
486 sl->flags |= SL_RESORT; |
487 w->flags4 |= 5 << WF_TIMEOUT_SHL; |
487 w->flags4 |= 5 << WF_TIMEOUT_SHL; |
488 w->LowerWidget(SLW_SORTBY); |
488 w->LowerWidget(SLW_SORTBY); |
489 SetWindowDirty(w); |
489 w->SetDirty(); |
490 break; |
490 break; |
491 |
491 |
492 case SLW_SORTDROPBTN: // select sorting criteria dropdown menu |
492 case SLW_SORTDROPBTN: // select sorting criteria dropdown menu |
493 ShowDropDownMenu(w, _station_sort_listing, sl->sort_type, SLW_SORTDROPBTN, 0, 0); |
493 ShowDropDownMenu(w, _station_sort_listing, sl->sort_type, SLW_SORTDROPBTN, 0, 0); |
494 break; |
494 break; |
507 |
507 |
508 w->LowerWidget(SLW_NOCARGOWAITING); |
508 w->LowerWidget(SLW_NOCARGOWAITING); |
509 } |
509 } |
510 sl->flags |= SL_REBUILD; |
510 sl->flags |= SL_REBUILD; |
511 w->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
511 w->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
512 SetWindowDirty(w); |
512 w->SetDirty(); |
513 break; |
513 break; |
514 |
514 |
515 default: |
515 default: |
516 if (e->we.click.widget >= SLW_CARGOSTART) { // change cargo_filter |
516 if (e->we.click.widget >= SLW_CARGOSTART) { // change cargo_filter |
517 /* Determine the selected cargo type */ |
517 /* Determine the selected cargo type */ |
538 SetBit(_cargo_filter, c); |
538 SetBit(_cargo_filter, c); |
539 w->LowerWidget(e->we.click.widget); |
539 w->LowerWidget(e->we.click.widget); |
540 } |
540 } |
541 sl->flags |= SL_REBUILD; |
541 sl->flags |= SL_REBUILD; |
542 w->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
542 w->SetWidgetLoweredState(SLW_CARGOALL, _cargo_filter == _cargo_mask && include_empty); |
543 SetWindowDirty(w); |
543 w->SetDirty(); |
544 } |
544 } |
545 break; |
545 break; |
546 } |
546 } |
547 break; |
547 break; |
548 |
548 |
551 /* value has changed -> resort */ |
551 /* value has changed -> resort */ |
552 sl->sort_type = e->we.dropdown.index; |
552 sl->sort_type = e->we.dropdown.index; |
553 station_sort.criteria = sl->sort_type; |
553 station_sort.criteria = sl->sort_type; |
554 sl->flags |= SL_RESORT; |
554 sl->flags |= SL_RESORT; |
555 } |
555 } |
556 SetWindowDirty(w); |
556 w->SetDirty(); |
557 break; |
557 break; |
558 |
558 |
559 case WE_TICK: |
559 case WE_TICK: |
560 if (_pause_game != 0) break; |
560 if (_pause_game != 0) break; |
561 if (--sl->resort_timer == 0) { |
561 if (--sl->resort_timer == 0) { |
562 DEBUG(misc, 3, "Periodic rebuild station list player %d", owner); |
562 DEBUG(misc, 3, "Periodic rebuild station list player %d", owner); |
563 sl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; |
563 sl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS; |
564 sl->flags |= SL_REBUILD; |
564 sl->flags |= SL_REBUILD; |
565 SetWindowDirty(w); |
565 w->SetDirty(); |
566 } |
566 } |
567 break; |
567 break; |
568 |
568 |
569 case WE_TIMEOUT: |
569 case WE_TIMEOUT: |
570 w->RaiseWidget(SLW_SORTBY); |
570 w->RaiseWidget(SLW_SORTBY); |
571 SetWindowDirty(w); |
571 w->SetDirty(); |
572 break; |
572 break; |
573 |
573 |
574 case WE_RESIZE: |
574 case WE_RESIZE: |
575 w->vscroll.cap += e->we.sizing.diff.y / 10; |
575 w->vscroll.cap += e->we.sizing.diff.y / 10; |
576 break; |
576 break; |
947 ScrollMainWindowToTile(GetStation(w->window_number)->xy); |
947 ScrollMainWindowToTile(GetStation(w->window_number)->xy); |
948 } |
948 } |
949 break; |
949 break; |
950 |
950 |
951 case SVW_RATINGS: |
951 case SVW_RATINGS: |
952 SetWindowDirty(w); |
952 w->SetDirty(); |
953 |
953 |
954 if (w->widget[SVW_RATINGS].data == STR_3032_RATINGS) { |
954 if (w->widget[SVW_RATINGS].data == STR_3032_RATINGS) { |
955 /* Switch to ratings view */ |
955 /* Switch to ratings view */ |
956 w->widget[SVW_RATINGS].data = STR_3033_ACCEPTS; |
956 w->widget[SVW_RATINGS].data = STR_3033_ACCEPTS; |
957 w->widget[SVW_RATINGS].tooltips = STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO; |
957 w->widget[SVW_RATINGS].tooltips = STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO; |
961 w->widget[SVW_RATINGS].data = STR_3032_RATINGS; |
961 w->widget[SVW_RATINGS].data = STR_3032_RATINGS; |
962 w->widget[SVW_RATINGS].tooltips = STR_3054_SHOW_STATION_RATINGS; |
962 w->widget[SVW_RATINGS].tooltips = STR_3054_SHOW_STATION_RATINGS; |
963 ResizeWindowForWidget(w, SVW_ACCEPTLIST, 0, -100); |
963 ResizeWindowForWidget(w, SVW_ACCEPTLIST, 0, -100); |
964 } |
964 } |
965 |
965 |
966 SetWindowDirty(w); |
966 w->SetDirty(); |
967 break; |
967 break; |
968 |
968 |
969 case SVW_RENAME: |
969 case SVW_RENAME: |
970 SetDParam(0, w->window_number); |
970 SetDParam(0, w->window_number); |
971 ShowQueryString(STR_STATION, STR_3030_RENAME_STATION_LOADING, 31, 180, w, CS_ALPHANUMERAL); |
971 ShowQueryString(STR_STATION, STR_3030_RENAME_STATION_LOADING, 31, 180, w, CS_ALPHANUMERAL); |