aircraft_gui.c
changeset 1790 47963a0cfca3
parent 1485 34545d21c656
child 1802 da61740cc1e7
equal deleted inserted replaced
1789:a777d9da053f 1790:47963a0cfca3
    34 	ConvertDayToYMD(&ymd, e->intro_date);
    34 	ConvertDayToYMD(&ymd, e->intro_date);
    35 	SetDParam(5, ymd.year + 1920);
    35 	SetDParam(5, ymd.year + 1920);
    36 
    36 
    37 }
    37 }
    38 
    38 
    39 static void DrawAircraftImage(Vehicle *v, int x, int y, VehicleID selection)
    39 static void DrawAircraftImage(const Vehicle *v, int x, int y, VehicleID selection)
    40 {
    40 {
    41 	int image = GetAircraftImage(v, 6);
    41 	int image = GetAircraftImage(v, 6);
    42 	uint32 ormod = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(v->owner));
    42 	uint32 ormod = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(v->owner));
    43 	if (v->vehstatus & VS_CRASHED) ormod = 0x3248000;
    43 	if (v->vehstatus & VS_CRASHED) ormod = 0x3248000;
    44 	DrawSprite(image | ormod, x+25, y+10);
    44 	DrawSprite(image | ormod, x+25, y+10);
   376 	WP(w,refit_d).sel = -1;
   376 	WP(w,refit_d).sel = -1;
   377 }
   377 }
   378 
   378 
   379 static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
   379 static void AircraftDetailsWndProc(Window *w, WindowEvent *e)
   380 {
   380 {
   381 	int mod;
   381 	switch (e->event) {
   382 	Vehicle *v = GetVehicle(w->window_number), *u;
   382 	case WE_PAINT: {
   383 
   383 		const Vehicle *v = GetVehicle(w->window_number);
   384 	switch(e->event) {
   384 
   385 	case WE_PAINT:
       
   386 		w->disabled_state = v->owner == _local_player ? 0 : (1 << 2);
   385 		w->disabled_state = v->owner == _local_player ? 0 : (1 << 2);
   387 		if (!_patches.servint_aircraft) // disable service-scroller when interval is set to disabled
   386 		if (!_patches.servint_aircraft) // disable service-scroller when interval is set to disabled
   388 			w->disabled_state |= (1 << 5) | (1 << 6);
   387 			w->disabled_state |= (1 << 5) | (1 << 6);
   389 
   388 
   390 		SetDParam(0, v->string_id);
   389 		SetDParam(0, v->string_id);
   438 		}
   437 		}
   439 
   438 
   440 		DrawAircraftImage(v, 3, 57, INVALID_VEHICLE);
   439 		DrawAircraftImage(v, 3, 57, INVALID_VEHICLE);
   441 
   440 
   442 		{
   441 		{
       
   442 			const Vehicle *u;
   443 			int y = 57;
   443 			int y = 57;
   444 
   444 
   445 			do {
   445 			do {
   446 				if (v->subtype <= 2) {
   446 				if (v->subtype <= 2) {
   447 					SetDParam(0, GetCustomEngineName(v->engine_type));
   447 					SetDParam(0, GetCustomEngineName(v->engine_type));
   469 
   469 
   470 					y += 10;
   470 					y += 10;
   471 				}
   471 				}
   472 			} while ( (v=v->next) != NULL);
   472 			} while ( (v=v->next) != NULL);
   473 		}
   473 		}
   474 		break;
   474 	} break;
   475 
   475 
   476 	case WE_CLICK:
   476 	case WE_CLICK: {
   477 		switch(e->click.widget) {
   477 		int mod;
       
   478 		const Vehicle *v;
       
   479 		switch (e->click.widget) {
   478 		case 2: /* rename */
   480 		case 2: /* rename */
       
   481 			v = GetVehicle(w->window_number);
   479 			SetDParam(0, v->unitnumber);
   482 			SetDParam(0, v->unitnumber);
   480 			ShowQueryString(v->string_id, STR_A030_NAME_AIRCRAFT, 31, 150, w->window_class, w->window_number);
   483 			ShowQueryString(v->string_id, STR_A030_NAME_AIRCRAFT, 31, 150, w->window_class, w->window_number);
   481 			break;
   484 			break;
   482 
       
   483 		case 5: /* increase int */
   485 		case 5: /* increase int */
   484 			mod = _ctrl_pressed? 5 : 10;
   486 			mod = _ctrl_pressed? 5 : 10;
   485 			goto change_int;
   487 			goto do_change_service_int;
   486 		case 6: /* decrease int */
   488 		case 6: /* decrease int */
   487 			mod = _ctrl_pressed?- 5 : -10;
   489 			mod = _ctrl_pressed?- 5 : -10;
   488 change_int:
   490 do_change_service_int:
   489 			mod += v->service_interval;
   491 			v = GetVehicle(w->window_number);
   490 
   492 
   491 			/*	%-based service interval max 5%-90%
   493 			mod = GetServiceIntervalClamped(mod + v->service_interval);
   492 					day-based service interval max 30-800 days */
   494 			if (mod == v->service_interval) return;
   493 			mod = _patches.servint_ispercent ? clamp(mod, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : clamp(mod, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS+1);
   495 
   494 			if (mod == v->service_interval)
   496 			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_AIRCRAFT_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
   495 				return;
   497 			break;
   496 
   498 		}
   497 			DoCommandP(v->tile, v->index, mod, NULL,
   499 	} break;
   498 				CMD_CHANGE_AIRCRAFT_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
       
   499 			break;
       
   500 		}
       
   501 		break;
       
   502 
   500 
   503 	case WE_4:
   501 	case WE_4:
   504 		if (FindWindowById(WC_VEHICLE_VIEW, w->window_number) == NULL)
   502 		if (FindWindowById(WC_VEHICLE_VIEW, w->window_number) == NULL)
   505 			DeleteWindow(w);
   503 			DeleteWindow(w);
   506 		break;
   504 		break;