aircraft_gui.c
changeset 156 8fef5e5752d6
parent 10 c35ab8426202
child 164 0cbdf3c9bde1
--- a/aircraft_gui.c	Fri Sep 03 21:48:21 2004 +0000
+++ b/aircraft_gui.c	Sat Sep 04 13:06:09 2004 +0000
@@ -309,6 +309,9 @@
 	switch(e->event) {
 	case WE_PAINT:
 		w->disabled_state = v->owner == _local_player ? 0 : (1 << 2);
+		if (!_patches.servint_aircraft) // disable service-scroller when interval is set to disabled
+			w->disabled_state |= (1 << 5) | (1 << 6);
+
 		SET_DPARAM16(0, v->string_id);
 		SET_DPARAM16(1, v->unitnumber);
 		DrawWindowWidgets(w);
@@ -356,7 +359,7 @@
 		{
 			SET_DPARAM16(0, v->service_interval);
 			SET_DPARAM16(1, v->date_of_last_service);
-			DrawString(13, 103, STR_883C_SERVICING_INTERVAL_DAYS, 0);
+			DrawString(13, 103, _patches.servint_ispercent?STR_SERVICING_INTERVAL_PERCENT:STR_883C_SERVICING_INTERVAL_DAYS, 0);
 		}
 
 		DrawAircraftImage(v, 3, 57, INVALID_VEHICLE);
@@ -403,14 +406,19 @@
 			break;
 
 		case 5: /* increase int */
-			mod = 10;
+			mod = _ctrl_pressed? 5 : 10;
 			goto change_int;
 		case 6: /* decrease int */
-			mod = -10;
+			mod = _ctrl_pressed?- 5 : -10;
 change_int:
 			mod += v->service_interval;
-			if (!IS_INT_INSIDE(mod, 30, 800+1))
+
+			/*	%-based service interval max 5%-90%
+					day-based service interval max 30-800 days */
+			mod = _patches.servint_ispercent ? clamp(mod, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : clamp(mod, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS+1);
+			if (mod == v->service_interval)
 				return;
+
 			DoCommandP(v->tile, v->index, mod, NULL,
 				CMD_CHANGE_AIRCRAFT_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 			break;