Scheduled dispatch: Add clear schedule GUI function
Add management dropdown box to window
This commit is contained in:
@@ -272,6 +272,7 @@ CommandProc CmdScheduledDispatchSetDuration;
|
|||||||
CommandProc CmdScheduledDispatchSetStartDate;
|
CommandProc CmdScheduledDispatchSetStartDate;
|
||||||
CommandProc CmdScheduledDispatchSetDelay;
|
CommandProc CmdScheduledDispatchSetDelay;
|
||||||
CommandProc CmdScheduledDispatchResetLastDispatch;
|
CommandProc CmdScheduledDispatchResetLastDispatch;
|
||||||
|
CommandProc CmdScheduledDispatchClear;
|
||||||
|
|
||||||
CommandProc CmdAddPlan;
|
CommandProc CmdAddPlan;
|
||||||
CommandProcEx CmdAddPlanLine;
|
CommandProcEx CmdAddPlanLine;
|
||||||
@@ -507,6 +508,7 @@ static const Command _command_proc_table[] = {
|
|||||||
DEF_CMD(CmdScheduledDispatchSetStartDate, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_SET_START_DATE
|
DEF_CMD(CmdScheduledDispatchSetStartDate, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_SET_START_DATE
|
||||||
DEF_CMD(CmdScheduledDispatchSetDelay, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_SET_DELAY
|
DEF_CMD(CmdScheduledDispatchSetDelay, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_SET_DELAY
|
||||||
DEF_CMD(CmdScheduledDispatchResetLastDispatch, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH
|
DEF_CMD(CmdScheduledDispatchResetLastDispatch, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH
|
||||||
|
DEF_CMD(CmdScheduledDispatchClear, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_CLEAR
|
||||||
|
|
||||||
DEF_CMD(CmdAddPlan, CMD_NO_TEST, CMDT_OTHER_MANAGEMENT ), // CMD_ADD_PLAN
|
DEF_CMD(CmdAddPlan, CMD_NO_TEST, CMDT_OTHER_MANAGEMENT ), // CMD_ADD_PLAN
|
||||||
DEF_CMD(CmdAddPlanLine, CMD_NO_TEST, CMDT_OTHER_MANAGEMENT ), // CMD_ADD_PLAN_LINE
|
DEF_CMD(CmdAddPlanLine, CMD_NO_TEST, CMDT_OTHER_MANAGEMENT ), // CMD_ADD_PLAN_LINE
|
||||||
|
@@ -449,6 +449,7 @@ enum Commands {
|
|||||||
CMD_SCHEDULED_DISPATCH_SET_START_DATE, ///< scheduled dispatch set start date
|
CMD_SCHEDULED_DISPATCH_SET_START_DATE, ///< scheduled dispatch set start date
|
||||||
CMD_SCHEDULED_DISPATCH_SET_DELAY, ///< scheduled dispatch set maximum allow delay
|
CMD_SCHEDULED_DISPATCH_SET_DELAY, ///< scheduled dispatch set maximum allow delay
|
||||||
CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH, ///< scheduled dispatch reset last dispatch date
|
CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH, ///< scheduled dispatch reset last dispatch date
|
||||||
|
CMD_SCHEDULED_DISPATCH_CLEAR, ///< scheduled dispatch clear schedule
|
||||||
|
|
||||||
CMD_ADD_PLAN,
|
CMD_ADD_PLAN,
|
||||||
CMD_ADD_PLAN_LINE,
|
CMD_ADD_PLAN_LINE,
|
||||||
|
@@ -7098,6 +7098,10 @@ STR_SCHDISPATCH_DELAY_CAPTION_DAY :{BLACK}Delay (d
|
|||||||
STR_SCHDISPATCH_DELAY_CAPTION_TICKS :{BLACK}Delay (ticks)
|
STR_SCHDISPATCH_DELAY_CAPTION_TICKS :{BLACK}Delay (ticks)
|
||||||
STR_SCHDISPATCH_RESET_LAST_DISPATCH :{BLACK}Reset Last Dispatched
|
STR_SCHDISPATCH_RESET_LAST_DISPATCH :{BLACK}Reset Last Dispatched
|
||||||
STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset when a vehicle was last dispatched from the schedule.
|
STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset when a vehicle was last dispatched from the schedule.
|
||||||
|
STR_SCHDISPATCH_CLEAR :{BLACK}Clear Departure Slots
|
||||||
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Clear all departure slots from the schedule.
|
||||||
|
STR_SCHDISPATCH_MANAGE :{BLACK}Manage Schedule
|
||||||
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}
|
||||||
|
|
||||||
STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_PAST :{BLACK}Last departure at {DATE_WALLCLOCK_TINY}.
|
STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_PAST :{BLACK}Last departure at {DATE_WALLCLOCK_TINY}.
|
||||||
STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_FUTURE :{BLACK}Last departure has not left yet, it will depart at {DATE_WALLCLOCK_TINY}.
|
STR_SCHDISPATCH_SUMMARY_LAST_DEPARTURE_FUTURE :{BLACK}Last departure has not left yet, it will depart at {DATE_WALLCLOCK_TINY}.
|
||||||
|
@@ -761,6 +761,7 @@ public:
|
|||||||
void SetScheduledDispatch(std::vector<uint32> dispatch_list);
|
void SetScheduledDispatch(std::vector<uint32> dispatch_list);
|
||||||
void AddScheduledDispatch(uint32 offset);
|
void AddScheduledDispatch(uint32 offset);
|
||||||
void RemoveScheduledDispatch(uint32 offset);
|
void RemoveScheduledDispatch(uint32 offset);
|
||||||
|
void ClearScheduledDispatch() { this->scheduled_dispatch.clear(); }
|
||||||
void UpdateScheduledDispatch();
|
void UpdateScheduledDispatch();
|
||||||
void ResetScheduledDispatch();
|
void ResetScheduledDispatch();
|
||||||
|
|
||||||
|
@@ -276,6 +276,36 @@ CommandCost CmdScheduledDispatchResetLastDispatch(TileIndex tile, DoCommandFlag
|
|||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear scheduled dispatch schedule
|
||||||
|
*
|
||||||
|
* @param tile Not used.
|
||||||
|
* @param flags Operation to perform.
|
||||||
|
* @param p1 Vehicle index
|
||||||
|
* @param p2 Not used
|
||||||
|
* @param text unused
|
||||||
|
* @return the cost of this operation or an error
|
||||||
|
*/
|
||||||
|
CommandCost CmdScheduledDispatchClear(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||||
|
{
|
||||||
|
VehicleID veh = GB(p1, 0, 20);
|
||||||
|
|
||||||
|
Vehicle *v = Vehicle::GetIfValid(veh);
|
||||||
|
if (v == nullptr || !v->IsPrimaryVehicle()) return CMD_ERROR;
|
||||||
|
|
||||||
|
CommandCost ret = CheckOwnership(v->owner);
|
||||||
|
if (ret.Failed()) return ret;
|
||||||
|
|
||||||
|
if (v->orders.list == nullptr) return CMD_ERROR;
|
||||||
|
|
||||||
|
if (flags & DC_EXEC) {
|
||||||
|
v->orders.list->ClearScheduledDispatch();
|
||||||
|
SetWindowDirty(WC_SCHDISPATCH_SLOTS, v->index);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CommandCost();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set scheduled dispatch slot list.
|
* Set scheduled dispatch slot list.
|
||||||
* @param dispatch_list The offset time list, must be correctly sorted.
|
* @param dispatch_list The offset time list, must be correctly sorted.
|
||||||
|
@@ -47,7 +47,7 @@ enum SchdispatchWidgets {
|
|||||||
WID_SCHDISPATCH_SET_DURATION, ///< Duration button
|
WID_SCHDISPATCH_SET_DURATION, ///< Duration button
|
||||||
WID_SCHDISPATCH_SET_START_DATE, ///< Start Date button
|
WID_SCHDISPATCH_SET_START_DATE, ///< Start Date button
|
||||||
WID_SCHDISPATCH_SET_DELAY, ///< Delat button
|
WID_SCHDISPATCH_SET_DELAY, ///< Delat button
|
||||||
WID_SCHDISPATCH_RESET_DISPATCH, ///< Reset dispatch button
|
WID_SCHDISPATCH_MANAGEMENT, ///< Management button
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -185,6 +185,11 @@ struct SchdispatchWindow : Window {
|
|||||||
uint flag_width;
|
uint flag_width;
|
||||||
uint flag_height;
|
uint flag_height;
|
||||||
|
|
||||||
|
enum ManagementDropdown {
|
||||||
|
SCH_MD_RESET_LAST_DISPATCHED,
|
||||||
|
SCH_MD_CLEAR_SCHEDULE,
|
||||||
|
};
|
||||||
|
|
||||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
@@ -259,7 +264,7 @@ struct SchdispatchWindow : Window {
|
|||||||
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_DURATION, disabled);
|
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_DURATION, disabled);
|
||||||
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_START_DATE, disabled);
|
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_START_DATE, disabled);
|
||||||
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_DELAY, disabled);
|
this->SetWidgetDisabledState(WID_SCHDISPATCH_SET_DELAY, disabled);
|
||||||
this->SetWidgetDisabledState(WID_SCHDISPATCH_RESET_DISPATCH, disabled);
|
this->SetWidgetDisabledState(WID_SCHDISPATCH_MANAGEMENT, disabled);
|
||||||
|
|
||||||
this->vscroll->SetCount(CeilDiv(this->item_count, this->num_columns));
|
this->vscroll->SetCount(CeilDiv(this->item_count, this->num_columns));
|
||||||
|
|
||||||
@@ -287,6 +292,14 @@ struct SchdispatchWindow : Window {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WID_SCHDISPATCH_MANAGEMENT: {
|
||||||
|
uint64 params[2];
|
||||||
|
params[0] = STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP;
|
||||||
|
params[1] = STR_SCHDISPATCH_CLEAR_TOOLTIP;
|
||||||
|
GuiShowTooltips(this, STR_SCHDISPATCH_MANAGE_TOOLTIP, 2, params, close_cond);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -553,8 +566,11 @@ struct SchdispatchWindow : Window {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case WID_SCHDISPATCH_RESET_DISPATCH: {
|
case WID_SCHDISPATCH_MANAGEMENT: {
|
||||||
DoCommandP(0, v->index, 0, CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
DropDownList list;
|
||||||
|
list.emplace_back(new DropDownListStringItem(STR_SCHDISPATCH_RESET_LAST_DISPATCH, SCH_MD_RESET_LAST_DISPATCHED, false));
|
||||||
|
list.emplace_back(new DropDownListStringItem(STR_SCHDISPATCH_CLEAR, SCH_MD_CLEAR_SCHEDULE, false));
|
||||||
|
ShowDropDownList(this, std::move(list), -1, WID_SCHDISPATCH_MANAGEMENT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -562,6 +578,26 @@ struct SchdispatchWindow : Window {
|
|||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OnDropdownSelect(int widget, int index) override
|
||||||
|
{
|
||||||
|
switch (widget) {
|
||||||
|
case WID_SCHDISPATCH_MANAGEMENT: {
|
||||||
|
switch((ManagementDropdown)index) {
|
||||||
|
case SCH_MD_RESET_LAST_DISPATCHED:
|
||||||
|
DoCommandP(0, this->vehicle->index, 0, CMD_SCHEDULED_DISPATCH_RESET_LAST_DISPATCH | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCH_MD_CLEAR_SCHEDULE:
|
||||||
|
DoCommandP(0, this->vehicle->index, 0, CMD_SCHEDULED_DISPATCH_CLEAR | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
virtual void OnQueryTextFinished(char *str) override
|
virtual void OnQueryTextFinished(char *str) override
|
||||||
{
|
{
|
||||||
if (str == nullptr) return;
|
if (str == nullptr) return;
|
||||||
@@ -682,7 +718,7 @@ static const NWidgetPart _nested_schdispatch_widgets[] = {
|
|||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
|
||||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCHDISPATCH_SET_DELAY), SetDataTip(STR_SCHDISPATCH_DELAY, STR_SCHDISPATCH_DELAY_TOOLTIP), SetFill(1, 1), SetResize(1, 0),
|
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCHDISPATCH_SET_DELAY), SetDataTip(STR_SCHDISPATCH_DELAY, STR_SCHDISPATCH_DELAY_TOOLTIP), SetFill(1, 1), SetResize(1, 0),
|
||||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCHDISPATCH_RESET_DISPATCH), SetDataTip(STR_SCHDISPATCH_RESET_LAST_DISPATCH, STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP), SetFill(1, 1), SetResize(1, 0),
|
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_SCHDISPATCH_MANAGEMENT), SetDataTip(STR_SCHDISPATCH_MANAGE, STR_SCHDISPATCH_MANAGE_TOOLTIP), SetFill(1, 1), SetResize(1, 0),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
|
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
|
Reference in New Issue
Block a user