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; |