From c9862f533a5fb19efda3c8aff54731e07ecb23b3 Mon Sep 17 00:00:00 2001 From: Mo Date: Sat, 24 Oct 2015 13:02:54 +0300 Subject: [PATCH] complete missions in end route --- .../trader/controllers/HelperController.java | 23 ++----------- .../main/java/ru/trader/model/RouteModel.java | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/client/src/main/java/ru/trader/controllers/HelperController.java b/client/src/main/java/ru/trader/controllers/HelperController.java index e1fbdf7..d145bba 100644 --- a/client/src/main/java/ru/trader/controllers/HelperController.java +++ b/client/src/main/java/ru/trader/controllers/HelperController.java @@ -229,12 +229,13 @@ public class HelperController { boolean isEnd = route.isEnd(); RouteEntryModel entry = this.entry; if (profile.isDocked() && MainController.getProfile().getStation().equals(entry.getStation())) { - route.complete(); if (!isEnd) profile.setDocked(false); else { if (!route.isLoop()) { profile.clearRoute(); + } else { + route.complete(); } } } else { @@ -246,26 +247,6 @@ public class HelperController { } } - @FXML - private void next(){ - int index = route.getCurrentEntry(); - if (index < route.getJumps() - 1){ - route.setCurrentEntry(index + 1); - } else { - if (route.isLoop()){ - route.setCurrentEntry(0); - } - } - } - - @FXML - private void previous(){ - int index = route.getCurrentEntry(); - if (index > 0){ - route.setCurrentEntry(index - 1); - } - } - @FXML private void copy(){ Main.copyToClipboard(system.getText()); diff --git a/client/src/main/java/ru/trader/model/RouteModel.java b/client/src/main/java/ru/trader/model/RouteModel.java index bfa244c..8f1cf34 100644 --- a/client/src/main/java/ru/trader/model/RouteModel.java +++ b/client/src/main/java/ru/trader/model/RouteModel.java @@ -257,6 +257,7 @@ public class RouteModel { public void updateCurrentEntry(SystemModel system, StationModel station, boolean undock) { if (undock){ + complete(); int index = getCurrentEntry(); RouteEntryModel entry = entries.get(index); if (index < entries.size()-1 && system.equals(entry.getStation().getSystem()) && entry.getStation().equals(station)){ @@ -300,7 +301,7 @@ public class RouteModel { int index = getCurrentEntry(); RouteEntryModel entry = entries.get(index); Collection orders = entry.orders(); - for (int i = index+1; i < entries.size(); i++) { + for (int i = index; i < entries.size(); i++) { RouteEntryModel e = entries.get(i); for (MissionModel mission : e.missions()) { mission.complete(orders); @@ -314,25 +315,30 @@ public class RouteModel { } } } - Collection missions = new ArrayList<>(entry.missions()); + if (index == entries.size()-1){ + removeCompletedMissions(); + if (isLoop()) setCurrentEntry(0); + } + } + + private void removeCompletedMissions(){ boolean needRefresh = false; - for (MissionModel mission : missions) { - mission.complete(orders); - if (mission.isCompleted()){ - Collection reserves = mission.getReserves(); - if (reserves != null) { - needRefresh = true; - _route.unreserve(reserves); + for (RouteEntryModel entry : entries) { + Collection missions = new ArrayList<>(entry.missions()); + for (MissionModel mission : missions) { + if (mission.isCompleted()) { + Collection reserves = mission.getReserves(); + if (reserves != null) { + needRefresh = true; + _route.unreserve(reserves); + } + entry.remove(mission); } - entry.remove(mission); } } if (needRefresh){ refresh(); } - if (index == entries.size()-1){ - if (isLoop()) setCurrentEntry(0); - } } public boolean isEnd(){