422 { |
422 { |
423 switch (e->event) { |
423 switch (e->event) { |
424 case WE_PAINT: { |
424 case WE_PAINT: { |
425 const Vehicle *v, *u; |
425 const Vehicle *v, *u; |
426 StringID str; |
426 StringID str; |
|
427 bool is_localplayer; |
427 |
428 |
428 v = GetVehicle(w->window_number); |
429 v = GetVehicle(w->window_number); |
429 |
430 |
430 if (v->owner != _local_player) { |
431 is_localplayer = v->owner == _local_player; |
431 w->disabled_state = 0x3380; |
432 SetWindowWidgetDisabledState(w, 7, !is_localplayer); |
432 } else { |
433 SetWindowWidgetDisabledState(w, 8, !is_localplayer); |
433 w->disabled_state = 0; |
434 SetWindowWidgetDisabledState(w, 9, !is_localplayer); |
434 |
435 SetWindowWidgetDisabledState(w, 12, !is_localplayer); |
435 SETBIT(w->disabled_state, 12); |
436 SetWindowWidgetDisabledState(w, 13, !is_localplayer); |
436 |
437 |
|
438 if (is_localplayer) { |
437 /* See if any vehicle can be refitted */ |
439 /* See if any vehicle can be refitted */ |
438 for (u = v; u != NULL; u = u->next) { |
440 for (u = v; u != NULL; u = u->next) { |
439 if (EngInfo(u->engine_type)->refit_mask != 0 || |
441 if (EngInfo(u->engine_type)->refit_mask != 0 || |
440 (!(RailVehInfo(v->engine_type)->flags & RVI_WAGON) && v->cargo_cap != 0)) { |
442 (!(RailVehInfo(v->engine_type)->flags & RVI_WAGON) && v->cargo_cap != 0)) { |
441 CLRBIT(w->disabled_state, 12); |
443 EnableWindowWidget(w, 12); |
442 /* We have a refittable carriage, bail out */ |
444 /* We have a refittable carriage, bail out */ |
443 break; |
445 break; |
444 } |
446 } |
445 } |
447 } |
446 } |
448 } |
680 } while ((u = GetNextVehicle(u)) != NULL); |
682 } while ((u = GetNextVehicle(u)) != NULL); |
681 } |
683 } |
682 |
684 |
683 SetVScrollCount(w, num); |
685 SetVScrollCount(w, num); |
684 |
686 |
685 w->disabled_state = 1 << (det_tab + 9); |
687 DisableWindowWidget(w, det_tab + 9); |
686 if (v->owner != _local_player) w->disabled_state |= (1 << 2); |
688 SetWindowWidgetDisabledState(w, 2, v->owner != _local_player); |
687 |
689 |
688 // disable service-scroller when interval is set to disabled |
690 /* disable service-scroller when interval is set to disabled */ |
689 if (!_patches.servint_trains) w->disabled_state |= (1 << 6) | (1 << 7); |
691 SetWindowWidgetDisabledState(w, 6, !_patches.servint_trains); |
|
692 SetWindowWidgetDisabledState(w, 7, !_patches.servint_trains); |
690 |
693 |
691 SetDParam(0, v->string_id); |
694 SetDParam(0, v->string_id); |
692 SetDParam(1, v->unitnumber); |
695 SetDParam(1, v->unitnumber); |
693 DrawWindowWidgets(w); |
696 DrawWindowWidgets(w); |
694 |
697 |
799 /* details buttons*/ |
802 /* details buttons*/ |
800 case 9: // Cargo |
803 case 9: // Cargo |
801 case 10: // Information |
804 case 10: // Information |
802 case 11: // Capacities |
805 case 11: // Capacities |
803 case 12: // Total cargo |
806 case 12: // Total cargo |
804 CLRBIT(w->disabled_state, 9); |
807 EnableWindowWidget(w, 9); |
805 CLRBIT(w->disabled_state, 10); |
808 EnableWindowWidget(w, 10); |
806 CLRBIT(w->disabled_state, 11); |
809 EnableWindowWidget(w, 11); |
807 CLRBIT(w->disabled_state, 12); |
810 EnableWindowWidget(w, 12); |
808 SETBIT(w->disabled_state, e->we.click.widget); |
811 EnableWindowWidget(w, e->we.click.widget); |
809 WP(w,traindetails_d).tab = e->we.click.widget - 9; |
812 WP(w,traindetails_d).tab = e->we.click.widget - 9; |
810 SetWindowDirty(w); |
813 SetWindowDirty(w); |
811 break; |
814 break; |
812 } |
815 } |
813 } break; |
816 } break; |