55 |
71 |
56 SetVScrollCount(w, v->num_orders * 2); |
72 SetVScrollCount(w, v->num_orders * 2); |
57 |
73 |
58 if (v->owner == _local_player) { |
74 if (v->owner == _local_player) { |
59 if (selected == -1) { |
75 if (selected == -1) { |
60 w->DisableWidget(6); |
76 w->DisableWidget(TTV_CHANGE_TIME); |
61 w->DisableWidget(7); |
77 w->DisableWidget(TTV_CLEAR_TIME); |
62 } else if (selected % 2 == 1) { |
78 } else if (selected % 2 == 1) { |
63 w->EnableWidget(6); |
79 w->EnableWidget(TTV_CHANGE_TIME); |
64 w->EnableWidget(7); |
80 w->EnableWidget(TTV_CLEAR_TIME); |
65 } else { |
81 } else { |
66 const Order *order = GetVehicleOrder(v, (selected + 1) / 2); |
82 const Order *order = GetVehicleOrder(v, (selected + 1) / 2); |
67 bool disable = order == NULL || order->type != OT_GOTO_STATION || (_patches.new_nonstop && (order->flags & OFB_NON_STOP)); |
83 bool disable = order == NULL || order->type != OT_GOTO_STATION || (_patches.new_nonstop && (order->flags & OFB_NON_STOP)); |
68 |
84 |
69 w->SetWidgetDisabledState(6, disable); |
85 w->SetWidgetDisabledState(TTV_CHANGE_TIME, disable); |
70 w->SetWidgetDisabledState(7, disable); |
86 w->SetWidgetDisabledState(TTV_CLEAR_TIME, disable); |
71 } |
87 } |
72 |
88 |
73 w->EnableWidget(8); |
89 w->EnableWidget(TTV_RESET_LATENESS); |
74 w->EnableWidget(9); |
90 w->EnableWidget(TTV_AUTOFILL); |
75 } else { |
91 } else { |
76 w->DisableWidget(6); |
92 w->DisableWidget(TTV_CHANGE_TIME); |
77 w->DisableWidget(7); |
93 w->DisableWidget(TTV_CLEAR_TIME); |
78 w->DisableWidget(8); |
94 w->DisableWidget(TTV_RESET_LATENESS); |
79 w->DisableWidget(9); |
95 w->DisableWidget(TTV_AUTOFILL); |
80 } |
96 } |
81 |
97 |
82 w->SetWidgetLoweredState(9, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)); |
98 w->SetWidgetLoweredState(TTV_AUTOFILL, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE)); |
83 |
99 |
84 SetDParam(0, v->index); |
100 SetDParam(0, v->index); |
85 DrawWindowWidgets(w); |
101 DrawWindowWidgets(w); |
86 |
102 |
87 int y = 15; |
103 int y = 15; |
253 } |
273 } |
254 |
274 |
255 ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, 150, w, CS_NUMERAL); |
275 ShowQueryString(current, STR_TIMETABLE_CHANGE_TIME, 31, 150, w, CS_NUMERAL); |
256 } break; |
276 } break; |
257 |
277 |
258 case 7: { /* Clear waiting time button. */ |
278 case TTV_CLEAR_TIME: { /* Clear waiting time button. */ |
259 uint32 p1 = PackTimetableArgs(v, WP(w, order_d).sel); |
279 uint32 p1 = PackTimetableArgs(v, WP(w, order_d).sel); |
260 DoCommandP(0, p1, 0, NULL, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
280 DoCommandP(0, p1, 0, NULL, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
261 } break; |
281 } break; |
262 |
282 |
263 case 8: /* Reset the vehicle's late counter. */ |
283 case TTV_RESET_LATENESS: /* Reset the vehicle's late counter. */ |
264 DoCommandP(0, v->index, 0, NULL, CMD_SET_VEHICLE_ON_TIME | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
284 DoCommandP(0, v->index, 0, NULL, CMD_SET_VEHICLE_ON_TIME | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
265 break; |
285 break; |
266 |
286 |
267 case 9: /* Autofill the timetable. */ |
287 case TTV_AUTOFILL: /* Autofill the timetable. */ |
268 DoCommandP(0, v->index, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE) ? 0 : 1, NULL, CMD_AUTOFILL_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
288 DoCommandP(0, v->index, HasBit(v->vehicle_flags, VF_AUTOFILL_TIMETABLE) ? 0 : 1, NULL, CMD_AUTOFILL_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
269 break; |
289 break; |
270 } |
290 } |
271 |
291 |
272 SetWindowDirty(w); |
292 SetWindowDirty(w); |
285 DoCommandP(0, p1, p2, NULL, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
305 DoCommandP(0, p1, p2, NULL, CMD_CHANGE_TIMETABLE | CMD_MSG(STR_CAN_T_TIMETABLE_VEHICLE)); |
286 } break; |
306 } break; |
287 |
307 |
288 case WE_RESIZE: |
308 case WE_RESIZE: |
289 /* Update the scroll + matrix */ |
309 /* Update the scroll + matrix */ |
290 w->vscroll.cap = (w->widget[3].bottom - w->widget[3].top) / 10; |
310 w->vscroll.cap = (w->widget[TTV_TIMETABLE_PANEL].bottom - w->widget[TTV_TIMETABLE_PANEL].top) / 10; |
291 break; |
311 break; |
292 |
312 |
293 } |
313 } |
294 } |
314 } |
295 |
315 |
296 static const Widget _timetable_widgets[] = { |
316 static const Widget _timetable_widgets[] = { |
297 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
317 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // TTV_WIDGET_CLOSEBOX |
298 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 387, 0, 13, STR_TIMETABLE_TITLE, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
318 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 326, 0, 13, STR_TIMETABLE_TITLE, STR_018C_WINDOW_TITLE_DRAG_THIS}, // TTV_CAPTION |
299 { WWT_STICKYBOX, RESIZE_LR, 14, 388, 399, 0, 13, STR_NULL, STR_STICKY_BUTTON}, |
319 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 327, 387, 0, 13, STR_ORDER_VIEW, STR_ORDER_VIEW_TOOLTIP}, // TTV_ORDER_VIEW |
300 |
320 { WWT_STICKYBOX, RESIZE_LR, 14, 388, 399, 0, 13, STR_NULL, STR_STICKY_BUTTON}, // TTV_STICKY |
301 { WWT_PANEL, RESIZE_RB, 14, 0, 387, 14, 95, STR_NULL, STR_TIMETABLE_TOOLTIP}, |
321 |
302 { WWT_SCROLLBAR, RESIZE_LRB, 14, 388, 399, 14, 95, STR_NULL, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
322 { WWT_PANEL, RESIZE_RB, 14, 0, 387, 14, 95, STR_NULL, STR_TIMETABLE_TOOLTIP}, // TTV_TIMETABLE_PANEL |
303 |
323 { WWT_SCROLLBAR, RESIZE_LRB, 14, 388, 399, 14, 95, STR_NULL, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // TTV_SCROLLBAR |
304 { WWT_PANEL, RESIZE_RTB, 14, 0, 399, 96, 117, STR_NULL, STR_NULL}, |
324 |
305 |
325 { WWT_PANEL, RESIZE_RTB, 14, 0, 399, 96, 117, STR_NULL, STR_NULL}, // TTV_SUMMARY_PANEL |
306 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 109, 118, 129, STR_TIMETABLE_CHANGE_TIME, STR_TIMETABLE_WAIT_TIME_TOOLTIP}, |
326 |
307 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 110, 219, 118, 129, STR_CLEAR_TIME, STR_TIMETABLE_CLEAR_TIME_TOOLTIP}, |
327 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 109, 118, 129, STR_TIMETABLE_CHANGE_TIME, STR_TIMETABLE_WAIT_TIME_TOOLTIP}, // TTV_CHANGE_TIME |
308 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 220, 337, 118, 129, STR_RESET_LATENESS, STR_TIMETABLE_RESET_LATENESS_TOOLTIP}, |
328 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 110, 219, 118, 129, STR_CLEAR_TIME, STR_TIMETABLE_CLEAR_TIME_TOOLTIP}, // TTV_CLEAR_TIME |
309 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 338, 387, 118, 129, STR_TIMETABLE_AUTOFILL, STR_TIMETABLE_AUTOFILL_TOOLTIP}, |
329 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 220, 337, 118, 129, STR_RESET_LATENESS, STR_TIMETABLE_RESET_LATENESS_TOOLTIP}, // TTV_RESET_LATENESS |
310 |
330 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 338, 387, 118, 129, STR_TIMETABLE_AUTOFILL, STR_TIMETABLE_AUTOFILL_TOOLTIP}, // TTV_AUTOFILL |
311 { WWT_PANEL, RESIZE_RTB, 14, 388, 387, 118, 129, STR_NULL, STR_NULL}, |
331 |
312 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 388, 399, 118, 129, STR_NULL, STR_RESIZE_BUTTON}, |
332 { WWT_PANEL, RESIZE_RTB, 14, 388, 387, 118, 129, STR_NULL, STR_NULL}, // TTV_EMPTY |
|
333 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 388, 399, 118, 129, STR_NULL, STR_RESIZE_BUTTON}, // TTV_RESIZE |
313 |
334 |
314 { WIDGETS_END } |
335 { WIDGETS_END } |
315 }; |
336 }; |
316 |
337 |
317 static const WindowDesc _timetable_desc = { |
338 static const WindowDesc _timetable_desc = { |