/// <summary> /// Выполнить маневр на станции /// </summary> public void performManeuver() { try { // проверка на выбор горловины if (view.selectedSide == Side.Empty) { main.showErrorMessage(SideUtils.GetInstance().CbNonSelected + "!"); //log.Error(SideUtils.GetInstance().CbNonSelected + "!"); return; } // проверка на выбор пути if (view.selectedWayTo == null) { main.showErrorMessage("Выберите путь для постановки вагонов!"); //log.Error("Выберите путь для постановки вагонов!"); return; } // проверка на превышение вместимости пути if (view.selectedWayFrom.Num != view.selectedWayTo.Num && view.selectedWayTo.Vag_amount + view.listVagOnMan.Count > view.selectedWayTo.Capacity) { if (!main.showQuestMessage("Количество вагонов превышает вместимость пути! Продолжить?")) { //log.Info("Количество вагонов превышает вместимость пути"); return; } } int locomNum = 0; if (view.selectedLocom != null) { locomNum = view.selectedLocom.Num; } view.visiblePerform = false; string mess_manevr = String.Format("Пользователь выполнил маневры на пути: {0}, станции: {1}", view.selectedWayFrom.NumName, main.selectedStation.Name); rwoperation.ManeuverCars(view.selectedWayFrom.ID, main.numSide, view.selectedLocom == null ? -1 : view.selectedLocom.Num); //TODO: Включил буфер операций по маневрам int res = maneuvers.ManeuverCars(view.selectedWayFrom.ID, main.numSide); mess_manevr.SaveLogEvents(res >= 0 ? String.Format("Переставлено {0} вагонов", res): "Error", service.DesktopRailCars); view.visiblePerform = true; view.clearVagOnMan(); view.clearWaysOnSelection(); view.clearSide(SideUtils.GetInstance().CbNonSelected); view.clearLocom(LocomotiveUtils.GetInstance().CbNonSelected); loadWays(); loadVagForMan(); loadVagOnMan(); // загрузить вагоны на маневре (снятые с пути) view.visiblePerform = true; } catch (Exception ex) { view.visiblePerform = true; main.showErrorMessage(ex.Message); } }
/// <summary> /// Тест маневр вагонов на станции /// </summary> public void Test_Maneuvers_ManeuverCars() { Maneuvers ma = new Maneuvers(); int res = ma.ManeuverCars(300, Side.Even); }