Scheduled dispatch: Add menu item to duplicate current schedule
This commit is contained in:
@@ -296,6 +296,7 @@ CommandProc CmdScheduledDispatchClear;
|
|||||||
CommandProcEx CmdScheduledDispatchAddNewSchedule;
|
CommandProcEx CmdScheduledDispatchAddNewSchedule;
|
||||||
CommandProc CmdScheduledDispatchRemoveSchedule;
|
CommandProc CmdScheduledDispatchRemoveSchedule;
|
||||||
CommandProc CmdScheduledDispatchRenameSchedule;
|
CommandProc CmdScheduledDispatchRenameSchedule;
|
||||||
|
CommandProc CmdScheduledDispatchDuplicateSchedule;
|
||||||
|
|
||||||
CommandProc CmdAddPlan;
|
CommandProc CmdAddPlan;
|
||||||
CommandProcEx CmdAddPlanLine;
|
CommandProcEx CmdAddPlanLine;
|
||||||
@@ -553,6 +554,7 @@ static const Command _command_proc_table[] = {
|
|||||||
DEF_CMD(CmdScheduledDispatchAddNewSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_ADD_NEW_SCHEDULE
|
DEF_CMD(CmdScheduledDispatchAddNewSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_ADD_NEW_SCHEDULE
|
||||||
DEF_CMD(CmdScheduledDispatchRemoveSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_REMOVE_SCHEDULE
|
DEF_CMD(CmdScheduledDispatchRemoveSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_REMOVE_SCHEDULE
|
||||||
DEF_CMD(CmdScheduledDispatchRenameSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_RENAME_SCHEDULE
|
DEF_CMD(CmdScheduledDispatchRenameSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_RENAME_SCHEDULE
|
||||||
|
DEF_CMD(CmdScheduledDispatchDuplicateSchedule, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SCHEDULED_DISPATCH_DUPLICATE_SCHEDULE
|
||||||
|
|
||||||
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
|
||||||
|
@@ -518,6 +518,7 @@ enum Commands {
|
|||||||
CMD_SCHEDULED_DISPATCH_ADD_NEW_SCHEDULE, ///< scheduled dispatch add new schedule
|
CMD_SCHEDULED_DISPATCH_ADD_NEW_SCHEDULE, ///< scheduled dispatch add new schedule
|
||||||
CMD_SCHEDULED_DISPATCH_REMOVE_SCHEDULE, ///< scheduled dispatch remove schedule
|
CMD_SCHEDULED_DISPATCH_REMOVE_SCHEDULE, ///< scheduled dispatch remove schedule
|
||||||
CMD_SCHEDULED_DISPATCH_RENAME_SCHEDULE, ///< scheduled dispatch rename schedule
|
CMD_SCHEDULED_DISPATCH_RENAME_SCHEDULE, ///< scheduled dispatch rename schedule
|
||||||
|
CMD_SCHEDULED_DISPATCH_DUPLICATE_SCHEDULE, ///< scheduled dispatch duplicate schedule
|
||||||
|
|
||||||
CMD_ADD_PLAN,
|
CMD_ADD_PLAN,
|
||||||
CMD_ADD_PLAN_LINE,
|
CMD_ADD_PLAN_LINE,
|
||||||
|
@@ -2010,7 +2010,7 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Reset wh
|
|||||||
STR_SCHDISPATCH_CLEAR :{BLACK}Clear Departure Slots
|
STR_SCHDISPATCH_CLEAR :{BLACK}Clear Departure Slots
|
||||||
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Clear all departure slots from the schedule.
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Clear all departure slots from the schedule.
|
||||||
STR_SCHDISPATCH_MANAGE :{BLACK}Manage Schedule
|
STR_SCHDISPATCH_MANAGE :{BLACK}Manage Schedule
|
||||||
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}{}{}{STRING}
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Previous
|
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Previous
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Go to previous dispatch schedule
|
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Go to previous dispatch schedule
|
||||||
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Next
|
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Next
|
||||||
@@ -2019,6 +2019,8 @@ STR_SCHDISPATCH_ADD_SCHEDULE :{BLACK}Add
|
|||||||
STR_SCHDISPATCH_ADD_SCHEDULE_TOOLTIP :{BLACK}Add a new dispatch schedule
|
STR_SCHDISPATCH_ADD_SCHEDULE_TOOLTIP :{BLACK}Add a new dispatch schedule
|
||||||
STR_SCHDISPATCH_REMOVE_SCHEDULE :{BLACK}Remove Current Schedule
|
STR_SCHDISPATCH_REMOVE_SCHEDULE :{BLACK}Remove Current Schedule
|
||||||
STR_SCHDISPATCH_REMOVE_SCHEDULE_TOOLTIP :{BLACK}Remove this dispatch schedule entirely.
|
STR_SCHDISPATCH_REMOVE_SCHEDULE_TOOLTIP :{BLACK}Remove this dispatch schedule entirely.
|
||||||
|
STR_SCHDISPATCH_DUPLICATE_SCHEDULE :{BLACK}Duplicate Current Schedule
|
||||||
|
STR_SCHDISPATCH_DUPLICATE_SCHEDULE_TOOLTIP :{BLACK}Create a copy of this dispatch schedule.
|
||||||
STR_SCHDISPATCH_NO_SCHEDULES :{BLACK}No Schedules
|
STR_SCHDISPATCH_NO_SCHEDULES :{BLACK}No Schedules
|
||||||
STR_SCHDISPATCH_SCHEDULE_ID :{BLACK}Schedule {NUM} of {NUM}
|
STR_SCHDISPATCH_SCHEDULE_ID :{BLACK}Schedule {NUM} of {NUM}
|
||||||
STR_SCHDISPATCH_NAMED_SCHEDULE_ID :{BLACK}{RAW_STRING} ({NUM} of {NUM})
|
STR_SCHDISPATCH_NAMED_SCHEDULE_ID :{BLACK}{RAW_STRING} ({NUM} of {NUM})
|
||||||
|
@@ -1951,7 +1951,7 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Restable
|
|||||||
STR_SCHDISPATCH_CLEAR :{BLACK}Limpar slots de saídas
|
STR_SCHDISPATCH_CLEAR :{BLACK}Limpar slots de saídas
|
||||||
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Limpar todos os slots de saídas do programa
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Limpar todos os slots de saídas do programa
|
||||||
STR_SCHDISPATCH_MANAGE :{BLACK}Xestionar programa
|
STR_SCHDISPATCH_MANAGE :{BLACK}Xestionar programa
|
||||||
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}{}{}{STRING}
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Anterior
|
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Anterior
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Ir a saída programada anterior
|
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Ir a saída programada anterior
|
||||||
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Seguinte
|
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Seguinte
|
||||||
|
@@ -1762,7 +1762,7 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}Setzt di
|
|||||||
STR_SCHDISPATCH_CLEAR :{BLACK}Lösche Abfahrtszeiten
|
STR_SCHDISPATCH_CLEAR :{BLACK}Lösche Abfahrtszeiten
|
||||||
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Lösche alle Abfahrtszeiten aus dem Zeitplan.
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}Lösche alle Abfahrtszeiten aus dem Zeitplan.
|
||||||
STR_SCHDISPATCH_MANAGE :{BLACK}Bearbeite Zeitplan
|
STR_SCHDISPATCH_MANAGE :{BLACK}Bearbeite Zeitplan
|
||||||
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}{}{}{STRING}
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Vorheriger
|
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}Vorheriger
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Gehe zum vorherigen Zeitplan
|
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}Gehe zum vorherigen Zeitplan
|
||||||
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Nächster
|
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}Nächster
|
||||||
|
@@ -1958,7 +1958,7 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}최근
|
|||||||
STR_SCHDISPATCH_CLEAR :{BLACK}출발 슬롯 초기화
|
STR_SCHDISPATCH_CLEAR :{BLACK}출발 슬롯 초기화
|
||||||
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}일정에서 모든 출발 슬롯을 제거합니다.
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}일정에서 모든 출발 슬롯을 제거합니다.
|
||||||
STR_SCHDISPATCH_MANAGE :{BLACK}일정 관리
|
STR_SCHDISPATCH_MANAGE :{BLACK}일정 관리
|
||||||
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}{}{}{STRING}
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}이전
|
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}이전
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}이전 배차 일정으로 이동합니다
|
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}이전 배차 일정으로 이동합니다
|
||||||
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}다음
|
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}다음
|
||||||
|
@@ -1918,7 +1918,7 @@ STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP :{BLACK}当车
|
|||||||
STR_SCHDISPATCH_CLEAR :{BLACK}清除出发条目
|
STR_SCHDISPATCH_CLEAR :{BLACK}清除出发条目
|
||||||
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}从计划调度中清除全部的出发条目
|
STR_SCHDISPATCH_CLEAR_TOOLTIP :{BLACK}从计划调度中清除全部的出发条目
|
||||||
STR_SCHDISPATCH_MANAGE :{BLACK}管理计划调度
|
STR_SCHDISPATCH_MANAGE :{BLACK}管理计划调度
|
||||||
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}
|
STR_SCHDISPATCH_MANAGE_TOOLTIP :{STRING}{}{}{STRING}{}{}{STRING}{}{}{STRING}
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}上个
|
STR_SCHDISPATCH_PREV_SCHEDULE :{BLACK}上个
|
||||||
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}跳转到前一个出发条目
|
STR_SCHDISPATCH_PREV_SCHEDULE_TOOLTIP :{BLACK}跳转到前一个出发条目
|
||||||
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}下个
|
STR_SCHDISPATCH_NEXT_SCHEDULE :{BLACK}下个
|
||||||
|
@@ -454,6 +454,41 @@ CommandCost CmdScheduledDispatchRenameSchedule(TileIndex tile, DoCommandFlag fla
|
|||||||
return CommandCost();
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duplicate scheduled dispatch schedule
|
||||||
|
*
|
||||||
|
* @param tile Not used.
|
||||||
|
* @param flags Operation to perform.
|
||||||
|
* @param p1 Vehicle index
|
||||||
|
* @param p2 Not used
|
||||||
|
* @param text name
|
||||||
|
* @return the cost of this operation or an error
|
||||||
|
*/
|
||||||
|
CommandCost CmdScheduledDispatchDuplicateSchedule(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||||
|
{
|
||||||
|
VehicleID veh = GB(p1, 0, 20);
|
||||||
|
uint schedule_index = GB(p1, 20, 12);
|
||||||
|
|
||||||
|
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 == nullptr) return CMD_ERROR;
|
||||||
|
|
||||||
|
if (schedule_index >= v->orders->GetScheduledDispatchScheduleCount()) return CMD_ERROR;
|
||||||
|
|
||||||
|
if (flags & DC_EXEC) {
|
||||||
|
DispatchSchedule &ds = v->orders->GetScheduledDispatchScheduleSet().emplace_back(v->orders->GetDispatchScheduleByIndex(schedule_index));
|
||||||
|
ds.SetScheduledDispatchLastDispatch(0);
|
||||||
|
ds.UpdateScheduledDispatch(nullptr);
|
||||||
|
SetTimetableWindowsDirty(v, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
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.
|
||||||
|
@@ -224,6 +224,7 @@ struct SchdispatchWindow : GeneralVehicleWindow {
|
|||||||
SCH_MD_RESET_LAST_DISPATCHED,
|
SCH_MD_RESET_LAST_DISPATCHED,
|
||||||
SCH_MD_CLEAR_SCHEDULE,
|
SCH_MD_CLEAR_SCHEDULE,
|
||||||
SCH_MD_REMOVE_SCHEDULE,
|
SCH_MD_REMOVE_SCHEDULE,
|
||||||
|
SCH_MD_DUPLICATE_SCHEDULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
bool IsScheduleSelected() const
|
bool IsScheduleSelected() const
|
||||||
@@ -383,11 +384,12 @@ struct SchdispatchWindow : GeneralVehicleWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case WID_SCHDISPATCH_MANAGEMENT: {
|
case WID_SCHDISPATCH_MANAGEMENT: {
|
||||||
uint64 params[3];
|
uint64 params[4];
|
||||||
params[0] = STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP;
|
params[0] = STR_SCHDISPATCH_RESET_LAST_DISPATCH_TOOLTIP;
|
||||||
params[1] = STR_SCHDISPATCH_CLEAR_TOOLTIP;
|
params[1] = STR_SCHDISPATCH_CLEAR_TOOLTIP;
|
||||||
params[2] = STR_SCHDISPATCH_REMOVE_SCHEDULE_TOOLTIP;
|
params[2] = STR_SCHDISPATCH_REMOVE_SCHEDULE_TOOLTIP;
|
||||||
GuiShowTooltips(this, STR_SCHDISPATCH_MANAGE_TOOLTIP, 3, params, close_cond);
|
params[3] = STR_SCHDISPATCH_DUPLICATE_SCHEDULE_TOOLTIP;
|
||||||
|
GuiShowTooltips(this, STR_SCHDISPATCH_MANAGE_TOOLTIP, lengthof(params), params, close_cond);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -728,6 +730,7 @@ struct SchdispatchWindow : GeneralVehicleWindow {
|
|||||||
add_item(STR_SCHDISPATCH_RESET_LAST_DISPATCH, SCH_MD_RESET_LAST_DISPATCHED);
|
add_item(STR_SCHDISPATCH_RESET_LAST_DISPATCH, SCH_MD_RESET_LAST_DISPATCHED);
|
||||||
add_item(STR_SCHDISPATCH_CLEAR, SCH_MD_CLEAR_SCHEDULE);
|
add_item(STR_SCHDISPATCH_CLEAR, SCH_MD_CLEAR_SCHEDULE);
|
||||||
add_item(STR_SCHDISPATCH_REMOVE_SCHEDULE, SCH_MD_REMOVE_SCHEDULE);
|
add_item(STR_SCHDISPATCH_REMOVE_SCHEDULE, SCH_MD_REMOVE_SCHEDULE);
|
||||||
|
add_item(STR_SCHDISPATCH_DUPLICATE_SCHEDULE, SCH_MD_DUPLICATE_SCHEDULE);
|
||||||
ShowDropDownList(this, std::move(list), -1, WID_SCHDISPATCH_MANAGEMENT);
|
ShowDropDownList(this, std::move(list), -1, WID_SCHDISPATCH_MANAGEMENT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -800,6 +803,10 @@ struct SchdispatchWindow : GeneralVehicleWindow {
|
|||||||
SetDParam(0, (uint)this->GetSelectedSchedule().GetScheduledDispatch().size());
|
SetDParam(0, (uint)this->GetSelectedSchedule().GetScheduledDispatch().size());
|
||||||
ShowQuery(STR_SCHDISPATCH_QUERY_REMOVE_SCHEDULE_CAPTION, STR_SCHDISPATCH_QUERY_REMOVE_SCHEDULE_TEXT, this, RemoveScheduleCallback);
|
ShowQuery(STR_SCHDISPATCH_QUERY_REMOVE_SCHEDULE_CAPTION, STR_SCHDISPATCH_QUERY_REMOVE_SCHEDULE_TEXT, this, RemoveScheduleCallback);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SCH_MD_DUPLICATE_SCHEDULE:
|
||||||
|
DoCommandP(0, this->vehicle->index | (this->schedule_index << 20), 0, CMD_SCHEDULED_DISPATCH_DUPLICATE_SCHEDULE | CMD_MSG(STR_ERROR_CAN_T_TIMETABLE_VEHICLE));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user