train_gui.c
changeset 156 8fef5e5752d6
parent 22 fe6f35cc987b
child 164 0cbdf3c9bde1
equal deleted inserted replaced
155:81e9878f3678 156:8fef5e5752d6
   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