diff --git a/client/src/main/java/ru/trader/controllers/RouteSearchController.java b/client/src/main/java/ru/trader/controllers/RouteSearchController.java index 39b9dd1..b10054f 100644 --- a/client/src/main/java/ru/trader/controllers/RouteSearchController.java +++ b/client/src/main/java/ru/trader/controllers/RouteSearchController.java @@ -81,6 +81,9 @@ public class RouteSearchController { market.getRoutes(f, fS, t, tS, profile.getBalance(), specificator, routes -> { Optional path = Screeners.showRouters(routes); if (path.isPresent()){ + RouteModel route = path.get(); + route.addAll(missionsList.getItems()); + Screeners.showHelper(route); } }); } diff --git a/client/src/main/java/ru/trader/model/MissionModel.java b/client/src/main/java/ru/trader/model/MissionModel.java index 544035a..e02ecf6 100644 --- a/client/src/main/java/ru/trader/model/MissionModel.java +++ b/client/src/main/java/ru/trader/model/MissionModel.java @@ -1,6 +1,7 @@ package ru.trader.model; import ru.trader.analysis.CrawlerSpecificator; +import ru.trader.core.Offer; import ru.trader.store.simple.SimpleOffer; public class MissionModel { @@ -71,10 +72,14 @@ public class MissionModel { public void toSpecification(CrawlerSpecificator specificator){ if (isSupply()){ - specificator.buy(SimpleOffer.fakeBuy(target.getStation(), item.getItem(), profit/count, count)); + specificator.buy(toOffer()); } else if (isCourier() || isDelivery()){ specificator.add(target.getStation(), true); } } + + Offer toOffer(){ + return isSupply() ? SimpleOffer.fakeBuy(target.getStation(), item.getItem(), profit/count, count) : null; + } } diff --git a/client/src/main/java/ru/trader/model/RouteEntryModel.java b/client/src/main/java/ru/trader/model/RouteEntryModel.java index b66a888..2c2705f 100644 --- a/client/src/main/java/ru/trader/model/RouteEntryModel.java +++ b/client/src/main/java/ru/trader/model/RouteEntryModel.java @@ -68,4 +68,8 @@ public class RouteEntryModel { return sellOrders; } + void refresh(MarketModel market){ + orders.clear(); + orders.addAll(BindingsHelper.observableList(entry.getOrders(), market.getModeler()::get)); + } } diff --git a/client/src/main/java/ru/trader/model/RouteModel.java b/client/src/main/java/ru/trader/model/RouteModel.java index 9531f04..e4dac48 100644 --- a/client/src/main/java/ru/trader/model/RouteModel.java +++ b/client/src/main/java/ru/trader/model/RouteModel.java @@ -5,6 +5,9 @@ import javafx.beans.property.ReadOnlyDoubleProperty; 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.core.Offer; import ru.trader.core.Order; import ru.trader.model.support.BindingsHelper; @@ -118,4 +121,32 @@ public class RouteModel { return new RouteModel(_route, market); } + public void add(MissionModel mission){ + long cargo = MainController.getProfile().getShipCargo(); + Offer offer = mission.toOffer(); + if (offer != null){ + RouteFiller.addOrders(_route, 0, offer, cargo); + for (RouteEntryModel entry : entries) { + entry.sellOrders().clear(); + entry.refresh(market); + } + fillSellOrders(); + } + } + + public void addAll(Collection missions){ + long cargo = MainController.getProfile().getShipCargo(); + for (MissionModel mission : missions) { + Offer offer = mission.toOffer(); + if (offer != null){ + RouteFiller.addOrders(_route, 0, offer, cargo); + } + } + for (RouteEntryModel entry : entries) { + entry.sellOrders().clear(); + entry.refresh(market); + } + fillSellOrders(); + } + }