roadveh_gui.c
changeset 1790 4afb4b4e4278
parent 1485 a2f36708c260
child 1820 9b6458526480
equal deleted inserted replaced
1789:a0708f7418ae 1790:4afb4b4e4278
    31 	SetDParam(7, e->reliability * 100 >> 16);
    31 	SetDParam(7, e->reliability * 100 >> 16);
    32 	ConvertDayToYMD(&ymd, e->intro_date);
    32 	ConvertDayToYMD(&ymd, e->intro_date);
    33 	SetDParam(5, ymd.year + 1920);
    33 	SetDParam(5, ymd.year + 1920);
    34 }
    34 }
    35 
    35 
    36 static void DrawRoadVehImage(Vehicle *v, int x, int y, VehicleID selection)
    36 static void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection)
    37 {
    37 {
    38 	int image = GetRoadVehImage(v, 6);
    38 	int image = GetRoadVehImage(v, 6);
    39 	uint32 ormod = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(v->owner));
    39 	uint32 ormod = SPRITE_PALETTE(PLAYER_SPRITE_COLOR(v->owner));
    40 	if (v->vehstatus & VS_CRASHED) ormod = 0x3248000;
    40 	if (v->vehstatus & VS_CRASHED) ormod = 0x3248000;
    41 	DrawSprite(image | ormod, x+14, y+6);
    41 	DrawSprite(image | ormod, x+14, y+6);
    45 	}
    45 	}
    46 }
    46 }
    47 
    47 
    48 static void RoadVehDetailsWndProc(Window *w, WindowEvent *e)
    48 static void RoadVehDetailsWndProc(Window *w, WindowEvent *e)
    49 {
    49 {
    50 	Vehicle *v = GetVehicle(w->window_number);
    50 	switch (e->event) {
    51 	StringID str;
    51 	case WE_PAINT: {
    52 	int mod;
    52 		const Vehicle *v = GetVehicle(w->window_number);
    53 
    53 		StringID str;
    54 	switch(e->event) {
    54 
    55 	case WE_PAINT:
       
    56 		w->disabled_state = v->owner == _local_player ? 0 : (1 << 2);
    55 		w->disabled_state = v->owner == _local_player ? 0 : (1 << 2);
    57 		if (!_patches.servint_roadveh) // disable service-scroller when interval is set to disabled
    56 		if (!_patches.servint_roadveh) // disable service-scroller when interval is set to disabled
    58 			w->disabled_state |= (1 << 5) | (1 << 6);
    57 			w->disabled_state |= (1 << 5) | (1 << 6);
    59 
    58 
    60 		SetDParam(0, v->string_id);
    59 		SetDParam(0, v->string_id);
   124 			SetDParam(1, v->cargo_count);
   123 			SetDParam(1, v->cargo_count);
   125 			SetDParam(2, v->cargo_source);
   124 			SetDParam(2, v->cargo_source);
   126 			str = STR_8813_FROM;
   125 			str = STR_8813_FROM;
   127 		}
   126 		}
   128 		DrawString(34, 78, str, 0);
   127 		DrawString(34, 78, str, 0);
   129 		break;
   128 	} break;
   130 
   129 
   131 	case WE_CLICK:
   130 	case WE_CLICK: {
   132 		switch(e->click.widget) {
   131 		int mod;
       
   132 		const Vehicle *v;
       
   133 		switch (e->click.widget) {
   133 		case 2: /* rename */
   134 		case 2: /* rename */
       
   135 			v = GetVehicle(w->window_number);
   134 			SetDParam(0, v->unitnumber);
   136 			SetDParam(0, v->unitnumber);
   135 			ShowQueryString(v->string_id, STR_902C_NAME_ROAD_VEHICLE, 31, 150, w->window_class, w->window_number);
   137 			ShowQueryString(v->string_id, STR_902C_NAME_ROAD_VEHICLE, 31, 150, w->window_class, w->window_number);
   136 			break;
   138 			break;
   137 
   139 
   138 		case 5: /* increase int */
   140 		case 5: /* increase int */
   139 			mod = _ctrl_pressed? 5 : 10;
   141 			mod = _ctrl_pressed? 5 : 10;
   140 			goto change_int;
   142 			goto do_change_service_int;
   141 		case 6: /* decrease int */
   143 		case 6: /* decrease int */
   142 			mod = _ctrl_pressed? -5 : -10;
   144 			mod = _ctrl_pressed? -5 : -10;
   143 change_int:
   145 do_change_service_int:
   144 			mod += v->service_interval;
   146 			v = GetVehicle(w->window_number);
   145 
   147 
   146 			/*	%-based service interval max 5%-90%
   148 			mod = GetServiceIntervalClamped(mod + v->service_interval);
   147 					day-based service interval max 30-800 days */
   149 			if (mod == v->service_interval) return;
   148 			mod = _patches.servint_ispercent ? clamp(mod, MIN_SERVINT_PERCENT, MAX_SERVINT_PERCENT) : clamp(mod, MIN_SERVINT_DAYS, MAX_SERVINT_DAYS+1);
       
   149 			if (mod == v->service_interval)
       
   150 				return;
       
   151 
   150 
   152 			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_ROADVEH_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
   151 			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_ROADVEH_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
   153 			break;
   152 			break;
   154 		}
   153 		}
   155 		break;
   154 	} break;
   156 
   155 
   157 	case WE_4:
   156 	case WE_4:
   158 		if (FindWindowById(WC_VEHICLE_VIEW, w->window_number) == NULL)
   157 		if (FindWindowById(WC_VEHICLE_VIEW, w->window_number) == NULL)
   159 			DeleteWindow(w);
   158 			DeleteWindow(w);
   160 		break;
   159 		break;