Archived
0

improve reserving for missions

This commit is contained in:
Mo
2015-09-26 16:51:45 +03:00
parent 37d96efa4f
commit bcd7ebbd04
7 changed files with 333 additions and 159 deletions

View File

@@ -6,7 +6,7 @@ import javafx.beans.property.SimpleDoubleProperty;
import ru.trader.analysis.Route;
import ru.trader.analysis.RouteEntry;
import ru.trader.analysis.RouteFiller;
import ru.trader.controllers.MainController;
import ru.trader.analysis.RouteReserve;
import ru.trader.core.Offer;
import ru.trader.core.Order;
import ru.trader.model.support.BindingsHelper;
@@ -123,24 +123,31 @@ public class RouteModel {
public void add(int offset, MissionModel mission){
int completeIndex = -1;
long cargo = MainController.getProfile().getShipCargo();
Offer offer = mission.getOffer();
if (offer != null){
completeIndex = RouteFiller.addOrders(_route, offset, offer, cargo);
for (RouteEntryModel entry : entries) {
entry.sellOrders().clear();
entry.refresh(market);
Collection<RouteReserve> reserves = RouteFiller.getReserves(_route, offset, offer);
if (!reserves.isEmpty()) {
_route.reserve(reserves);
completeIndex = RouteReserve.getCompleteIndex(reserves, offset);
for (RouteEntryModel entry : entries) {
entry.sellOrders().clear();
entry.refresh(market);
}
fillSellOrders();
}
fillSellOrders();
} else
if (mission.isDelivery()){
completeIndex = RouteFiller.reservedCargo(_route, offset, mission.getTarget().getStation(), mission.getCount(), cargo);
for (RouteEntryModel entry : entries) {
entry.refresh(market);
RouteReserve reserve = RouteFiller.getReserves(_route, offset, mission.getTarget().getStation(), mission.getCount());
if (reserve != null) {
_route.reserve(reserve);
completeIndex = reserve.getToIndex();
for (RouteEntryModel entry : entries) {
entry.refresh(market);
}
}
} else
if (mission.isCourier()){
completeIndex = _route.find(mission.getTarget().getStation(), offset);
completeIndex = _route.find(mission.getTarget().getStation(), offset+1);
}
if (completeIndex != -1){
entries.get(completeIndex).add(mission);
@@ -148,20 +155,28 @@ public class RouteModel {
}
public void addAll(int offset, Collection<MissionModel> missions){
long cargo = MainController.getProfile().getShipCargo();
for (MissionModel mission : missions) {
Offer offer = mission.getOffer();
int completeIndex = -1;
if (offer != null){
completeIndex = RouteFiller.addOrders(_route, offset, offer, cargo);
Collection<RouteReserve> reserves = RouteFiller.getReserves(_route, offset, offer);
if (!reserves.isEmpty()) {
_route.reserve(reserves);
completeIndex = RouteReserve.getCompleteIndex(reserves, offset);
}
} else
if (mission.isDelivery()){
completeIndex = RouteFiller.reservedCargo(_route, offset, mission.getTarget().getStation(), mission.getCount(), cargo);
RouteReserve reserve = RouteFiller.getReserves(_route, offset, mission.getTarget().getStation(), mission.getCount());
if (reserve != null) {
_route.reserve(reserve);
completeIndex = reserve.getToIndex();
}
} else
if (mission.isCourier()){
completeIndex = _route.find(mission.getTarget().getStation(), offset);
completeIndex = _route.find(mission.getTarget().getStation(), offset+1);
}
if (completeIndex != -1){
if (completeIndex == 0 && _route.isLoop()) completeIndex = _route.getJumps()-1;
entries.get(completeIndex).add(mission);
}
}