957 |
957 |
958 w->disabled_state = 1 << (det_tab + 9); |
958 w->disabled_state = 1 << (det_tab + 9); |
959 if (v->owner != _local_player) |
959 if (v->owner != _local_player) |
960 w->disabled_state |= (1 << 2); |
960 w->disabled_state |= (1 << 2); |
961 |
961 |
|
962 if (!_patches.servint_trains) // disable service-scroller when interval is set to disabled |
|
963 w->disabled_state |= (1 << 6) | (1 << 7); |
|
964 |
962 SET_DPARAM16(0, v->string_id); |
965 SET_DPARAM16(0, v->string_id); |
963 SET_DPARAM16(1, v->unitnumber); |
966 SET_DPARAM16(1, v->unitnumber); |
964 DrawWindowWidgets(w); |
967 DrawWindowWidgets(w); |
965 |
968 |
966 num = v->age / 366; |
969 num = v->age / 366; |
992 SET_DPARAM16(1, v->breakdowns_since_last_service); |
995 SET_DPARAM16(1, v->breakdowns_since_last_service); |
993 DrawString(x, 45, STR_8860_RELIABILITY_BREAKDOWNS, 0); |
996 DrawString(x, 45, STR_8860_RELIABILITY_BREAKDOWNS, 0); |
994 |
997 |
995 SET_DPARAM16(0, v->service_interval); |
998 SET_DPARAM16(0, v->service_interval); |
996 SET_DPARAM16(1, v->date_of_last_service); |
999 SET_DPARAM16(1, v->date_of_last_service); |
997 DrawString(x + 11, 141, STR_883C_SERVICING_INTERVAL_DAYS, 0); |
1000 DrawString(x + 11, 141, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0); |
998 |
1001 |
999 x = 1; |
1002 x = 1; |
1000 y = 57; |
1003 y = 57; |
1001 sel = w->vscroll.pos; |
1004 sel = w->vscroll.pos; |
1002 |
1005 |
1043 v = &_vehicles[w->window_number]; |
1046 v = &_vehicles[w->window_number]; |
1044 SET_DPARAM16(0, v->unitnumber); |
1047 SET_DPARAM16(0, v->unitnumber); |
1045 ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number); |
1048 ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number); |
1046 break; |
1049 break; |
1047 case 6: /* inc serv interval */ |
1050 case 6: /* inc serv interval */ |
1048 mod = 10; |
1051 mod = _ctrl_pressed? 5 : 10; |
1049 goto do_change_service_int; |
1052 goto do_change_service_int; |
1050 |
1053 |
1051 case 7: /* dec serv interval */ |
1054 case 7: /* dec serv interval */ |
1052 mod = -10; |
1055 mod = _ctrl_pressed? -5 : -10; |
1053 do_change_service_int: |
1056 do_change_service_int: |
1054 v = &_vehicles[w->window_number]; |
1057 v = &_vehicles[w->window_number]; |
1055 mod += v->service_interval; |
1058 mod += v->service_interval; |
1056 if (!IS_INT_INSIDE(mod, 30, 800+1)) |
1059 |
1057 return; |
1060 /* %-based service interval max 5%-90% |
|
1061 day-based service interval max 30-800 days */ |
|
1062 mod = _patches.servint_ispercent ? clamp(mod, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : clamp(mod, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS+1); |
|
1063 if (mod == v->service_interval) |
|
1064 return; |
1058 |
1065 |
1059 DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_TRAIN_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING)); |
1066 DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_TRAIN_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING)); |
1060 break; |
1067 break; |
1061 /* details buttons*/ |
1068 /* details buttons*/ |
1062 case 9: // Cargo |
1069 case 9: // Cargo |