Archived
0

add economic and station type to client

This commit is contained in:
Mo
2016-02-12 15:48:54 +03:00
parent 1370d9d4e2
commit 008a2f0cee
10 changed files with 241 additions and 32 deletions

View File

@@ -8,9 +8,7 @@ import javafx.util.converter.LongStringConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.EMDNUpdater;
import ru.trader.core.FACTION;
import ru.trader.core.GOVERNMENT;
import ru.trader.core.SERVICE_TYPE;
import ru.trader.core.*;
import ru.trader.model.ItemModel;
import ru.trader.model.StationModel;
import ru.trader.model.SystemModel;
@@ -27,12 +25,16 @@ public class StationEditorController {
@FXML
private TextField name;
@FXML
private ComboBox<STATION_TYPE> type;
@FXML
private ComboBox<FACTION> faction;
@FXML
private ComboBox<GOVERNMENT> government;
@FXML
private ComboBox<ECONOMIC_TYPE> economic;
@FXML
private ComboBox<ECONOMIC_TYPE> subEconomic;
@FXML
private TableView<StationUpdater.FakeOffer> items;
@@ -72,10 +74,16 @@ public class StationEditorController {
@FXML
private void initialize() {
type.setItems(FXCollections.observableArrayList(STATION_TYPE.values()));
type.setConverter(new StationTypeStringConverter());
faction.setItems(FXCollections.observableArrayList(FACTION.values()));
faction.setConverter(new FactionStringConverter());
government.setItems(FXCollections.observableArrayList(GOVERNMENT.values()));
government.setConverter(new GovernmentStringConverter());
economic.setItems(FXCollections.observableArrayList(ECONOMIC_TYPE.values()));
economic.setConverter(new EconomicTypeStringConverter());
subEconomic.setItems(FXCollections.observableArrayList(ECONOMIC_TYPE.values()));
subEconomic.setConverter(new EconomicTypeStringConverter());
items.getSelectionModel().setCellSelectionEnabled(true);
buy.setCellFactory(EditOfferCell.forTable(new PriceStringConverter(), false));
sell.setCellFactory(EditOfferCell.forTable(new PriceStringConverter(), true));
@@ -92,15 +100,21 @@ public class StationEditorController {
void init(){
if (updater != null){
name.textProperty().unbindBidirectional(updater.nameProperty());
type.valueProperty().unbindBidirectional(updater.typeProperty());
faction.valueProperty().unbindBidirectional(updater.factionProperty());
government.valueProperty().unbindBidirectional(updater.governmentProperty());
distance.numberProperty().unbindBidirectional(updater.distanceProperty());
economic.valueProperty().unbindBidirectional(updater.economicProperty());
subEconomic.valueProperty().unbindBidirectional(updater.subEconomicProperty());
}
updater = new StationUpdater(MainController.getMarket());
name.textProperty().bindBidirectional(updater.nameProperty());
type.valueProperty().bindBidirectional(updater.typeProperty());
faction.valueProperty().bindBidirectional(updater.factionProperty());
government.valueProperty().bindBidirectional(updater.governmentProperty());
distance.numberProperty().bindBidirectional(updater.distanceProperty());
economic.valueProperty().bindBidirectional(updater.economicProperty());
subEconomic.valueProperty().bindBidirectional(updater.subEconomicProperty());
cbMarket.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.MARKET));
cbBlackMarket.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.BLACK_MARKET));
cbRefuel.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.REFUEL));

View File

@@ -4,6 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.core.*;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
@@ -51,6 +52,15 @@ public class StationModel {
return station.getFullName();
}
public STATION_TYPE getType() {return station.getType();}
public void setType(STATION_TYPE type) {
STATION_TYPE oldType = getType();
if (oldType != null && oldType.equals(type) || type == null) return;
LOG.info("Change type station {} to {}", station, type);
station.setType(type);
}
public FACTION getFaction() {return station.getFaction();}
public void setFaction(FACTION faction) {
@@ -69,6 +79,24 @@ public class StationModel {
station.setGovernment(government);
}
public ECONOMIC_TYPE getEconomic() {return station.getEconomic();}
public void setEconomic(ECONOMIC_TYPE economic) {
ECONOMIC_TYPE oldEconomic = getEconomic();
if (oldEconomic != null && oldEconomic.equals(economic) || economic == null) return;
LOG.info("Change economic of station {} to {}", station, economic);
station.setEconomic(economic);
}
public ECONOMIC_TYPE getSubEconomic() {return station.getSubEconomic();}
public void setSubEconomic(ECONOMIC_TYPE economic) {
ECONOMIC_TYPE oldEconomic = getSubEconomic();
if (oldEconomic != null && oldEconomic.equals(economic) || economic == null) return;
LOG.info("Change sub economic of station {} to {}", station, economic);
station.setSubEconomic(economic);
}
public double getDistance(){
return station.getDistance();
}
@@ -138,6 +166,10 @@ public class StationModel {
return station.getDistance(other.station);
}
public LocalDateTime getModifiedTime(){
return station.getModifiedTime();
}
@Override
public String toString() {
if (LOG.isTraceEnabled()){

View File

@@ -5,10 +5,7 @@ import javafx.collections.ObservableList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.trader.controllers.MainController;
import ru.trader.core.FACTION;
import ru.trader.core.GOVERNMENT;
import ru.trader.core.OFFER_TYPE;
import ru.trader.core.SERVICE_TYPE;
import ru.trader.core.*;
import ru.trader.model.*;
import java.util.Optional;
@@ -19,8 +16,11 @@ public class StationUpdater {
private final static SERVICE_TYPE[] SERVICE_TYPES = SERVICE_TYPE.values();
private final ObservableList<FakeOffer> offers;
private final StringProperty name;
private final ObjectProperty<STATION_TYPE> type;
private final ObjectProperty<FACTION> faction;
private final ObjectProperty<GOVERNMENT> government;
private final ObjectProperty<ECONOMIC_TYPE> economic;
private final ObjectProperty<ECONOMIC_TYPE> subEconomic;
private final DoubleProperty distance;
private final BooleanProperty[] services;
private final MarketModel market;
@@ -33,9 +33,12 @@ public class StationUpdater {
this.market = market;
this.offers = BindingsHelper.observableList(MainController.getMarket().itemsProperty(), FakeOffer::new);
this.name = new SimpleStringProperty();
this.type = new SimpleObjectProperty<>();
this.distance = new SimpleDoubleProperty(0);
this.faction = new SimpleObjectProperty<>(FACTION.NONE);
this.government = new SimpleObjectProperty<>(GOVERNMENT.NONE);
this.economic = new SimpleObjectProperty<>(ECONOMIC_TYPE.NONE);
this.subEconomic = new SimpleObjectProperty<>(ECONOMIC_TYPE.NONE);
this.services = new BooleanProperty[SERVICE_TYPES.length];
for (int i = 0; i < services.length; i++) {
services[i] = new SimpleBooleanProperty();
@@ -60,9 +63,12 @@ public class StationUpdater {
}
if (station != null){
name.setValue(station.getName());
type.setValue(station.getType());
faction.setValue(station.getFaction());
government.setValue(station.getGovernment());
distance.setValue(station.getDistance());
economic.setValue(station.getEconomic());
subEconomic.setValue(station.getSubEconomic());
for (SERVICE_TYPE service : station.getServices()) {
serviceProperty(service).set(true);
}
@@ -70,9 +76,12 @@ public class StationUpdater {
station.getBuys().forEach(this::fillOffer);
} else {
name.setValue("");
type.setValue(null);
faction.setValue(FACTION.NONE);
government.setValue(GOVERNMENT.NONE);
distance.setValue(0);
economic.setValue(ECONOMIC_TYPE.NONE);
subEconomic.setValue(ECONOMIC_TYPE.NONE);
}
}
@@ -116,6 +125,18 @@ public class StationUpdater {
this.name.set(name);
}
public STATION_TYPE getType() {
return type.get();
}
public ObjectProperty<STATION_TYPE> typeProperty() {
return type;
}
public void setType(STATION_TYPE type) {
this.type.set(type);
}
public FACTION getFaction() {
return faction.get();
}
@@ -152,6 +173,30 @@ public class StationUpdater {
this.distance.set(distance);
}
public ECONOMIC_TYPE getEconomic() {
return economic.get();
}
public ObjectProperty<ECONOMIC_TYPE> economicProperty() {
return economic;
}
public void setEconomic(ECONOMIC_TYPE economic) {
this.economic.set(economic);
}
public ECONOMIC_TYPE getSubEconomic() {
return subEconomic.get();
}
public ObjectProperty<ECONOMIC_TYPE> subEconomicProperty() {
return subEconomic;
}
public void setSubEconomic(ECONOMIC_TYPE subEconomic) {
this.subEconomic.set(subEconomic);
}
public BooleanProperty serviceProperty(SERVICE_TYPE service){
return services[service.ordinal()];
}
@@ -166,34 +211,31 @@ public class StationUpdater {
Notificator notificator = market.getNotificator();
notificator.setAlert(false);
station = system.add(name.get());
station.setFaction(faction.get());
station.setGovernment(government.get());
station.setDistance(distance.get());
for (int i = 0; i < services.length; i++) {
if (services[i].get()){
station.addService(SERVICE_TYPES[i]);
}
}
offers.forEach(FakeOffer::commit);
updateStation();
notificator.setAlert(true);
notificator.sendAdd(station);
} else {
station.setName(name.get());
station.setFaction(faction.get());
station.setGovernment(government.get());
station.setDistance(distance.get());
for (int i = 0; i < services.length; i++) {
if (services[i].get()){
station.addService(SERVICE_TYPES[i]);
} else {
station.removeService(SERVICE_TYPES[i]);
}
}
offers.forEach(FakeOffer::commit);
updateStation();
}
return station;
}
private void updateStation(){
station.setType(type.get());
station.setFaction(faction.get());
station.setGovernment(government.get());
station.setDistance(distance.get());
station.setEconomic(economic.get());
station.setSubEconomic(subEconomic.get());
for (int i = 0; i < services.length; i++) {
if (services[i].get()){
station.addService(SERVICE_TYPES[i]);
}
}
offers.forEach(FakeOffer::commit);
}
public void reset(){
offers.forEach(FakeOffer::reset);
station = null;

View File

@@ -0,0 +1,24 @@
package ru.trader.view.support;
import javafx.util.StringConverter;
import ru.trader.core.ECONOMIC_TYPE;
public class EconomicTypeStringConverter extends StringConverter<ECONOMIC_TYPE> {
@Override
public String toString(ECONOMIC_TYPE economic) {
return toLocalizationString(economic);
}
@Override
public ECONOMIC_TYPE fromString(String economic) {
return ECONOMIC_TYPE.valueOf(economic);
}
public static String toLocalizationString(ECONOMIC_TYPE economic){
if (economic == null) return null;
return Localization.getString("economic." + economic.toString(), economic.toString());
}
}

View File

@@ -0,0 +1,24 @@
package ru.trader.view.support;
import javafx.util.StringConverter;
import ru.trader.core.STATION_TYPE;
public class StationTypeStringConverter extends StringConverter<STATION_TYPE> {
@Override
public String toString(STATION_TYPE type) {
return toLocalizationString(type);
}
@Override
public STATION_TYPE fromString(String type) {
return STATION_TYPE.valueOf(type);
}
public static String toLocalizationString(STATION_TYPE type){
if (type == null) return null;
return Localization.getString("station." + type.toString(), type.toString());
}
}

View File

@@ -1,3 +1,18 @@
station.STARPORT=Starport
station.CORIOLIS_STARPORT=Coriolis Starport
station.OCELLUS_STARPORT=Ocellus Starport
station.ORBIS_STARPORT=Orbis Starport
station.OUTPOST=Outpost
station.CIVILIAN_OUTPOST=Civilian Outpost
station.COMMERCIAL_OUTPOST=Commercial Outpost
station.INDUSTRIAL_OUTPOST=Industrial Outpost
station.MILITARY_OUTPOST=Military Outpost
station.MINING_OUTPOST=Mining Outpost
station.SCIENTIFIC_OUTPOST=Scientific Outpost
station.UNSANCTIONED_OUTPOST=Unsanctioned Outpost
station.PLANETARY_PORT=Planetary Port
station.PLANETARY_OUTPOST=Planetary Outpost
faction.FEDERATION=Federation
faction.EMPIRE=Empire
faction.ALLIANCE=Alliance
@@ -29,6 +44,18 @@ services.REFUEL=Refuel
services.MEDIUM_LANDPAD=Medium Pad
services.LARGE_LANDPAD=Large Pad
economic.AGRICULTURE=Agriculture
economic.EXTRACTION=Extraction
economic.HIGH_TECH=High Tech
economic.INDUSTRIAL=Industrial
economic.MILITARY=Military
economic.REFINERY=Refinery
economic.SERVICE=Service
economic.TERRAFORMING=Terraforming
economic.TOURISM=Tourism
economic.COLONY=Colony
economic.NONE=None
item.group.chemicals=Chemicals
item.explosives=Explosives
item.hydrogenfuel=Hydrogen Fuel

View File

@@ -10,6 +10,8 @@ market.system.name=System
market.station.name=Station
market.allegiance=Allegiance
market.government=Government
market.economic=Economy
market.station.type=Station type
# Offer
market.offer.buy=Buy

View File

@@ -10,6 +10,8 @@ market.system.name=\u0421\u0438\u0441\u0442\u0435\u043C\u0430
market.station.name=\u0421\u0442\u0430\u043D\u0446\u0438\u044F
market.allegiance=\u041F\u0440\u0438\u043D\u0430\u0434\u043B\u0435\u0436\u043D\u043E\u0441\u0442\u044C
market.government=\u0424\u043E\u0440\u043C\u0430 \u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F
market.economic=\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u043A\u0430
market.station.type=\u0422\u0438\u043F \u0441\u0442\u0430\u043D\u0446\u0438\u0438
# Offer
market.offer.buy=\u041F\u043E\u043A\u0443\u043F\u043A\u0430

View File

@@ -1,5 +1,20 @@
main.menu.settings.language.item=\u0420\u0443\u0441\u0441\u043A\u0438\u0439
station.STARPORT=\u041A\u043E\u0441\u043C\u043E\u043F\u043E\u0440\u0442
station.CORIOLIS_STARPORT=\u041A\u043E\u0441\u043C\u043E\u043F\u043E\u0440\u0442 "\u041A\u043E\u0440\u0438\u043E\u043B\u0438\u0441"
station.OCELLUS_STARPORT=\u041A\u043E\u0441\u043C\u043E\u043F\u043E\u0440\u0442 "\u041E\u0446\u0435\u043B\u043B\u0443\u0441"
station.ORBIS_STARPORT=\u041A\u043E\u0441\u043C\u043E\u043F\u043E\u0440\u0442 "\u041E\u0440\u0431\u0438\u0441"
station.OUTPOST=\u0421\u0442\u0430\u043D\u0446\u0438\u044F
station.CIVILIAN_OUTPOST=\u0413\u0440\u0430\u0436\u0434\u0430\u043D\u0441\u043A\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.COMMERCIAL_OUTPOST=\u041A\u043E\u043C\u043C\u0435\u0440\u0447\u0435\u0441\u043A\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.INDUSTRIAL_OUTPOST=\u041F\u0440\u043E\u043C\u044B\u0448\u043B\u0435\u043D\u043D\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.MILITARY_OUTPOST=\u0412\u043E\u0435\u043D\u043D\u044B\u0439 \u0430\u0432\u0430\u043D\u043F\u043E\u0441\u0442
station.MINING_OUTPOST=\u0428\u0430\u0445\u0442\u0435\u0440\u0441\u043A\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.SCIENTIFIC_OUTPOST=\u041D\u0430\u0443\u0447\u043D\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.UNSANCTIONED_OUTPOST=\u041F\u0438\u0440\u0430\u0442\u0441\u043A\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
station.PLANETARY_PORT=\u041F\u043B\u0430\u043D\u0435\u0442\u0430\u0440\u043D\u044B\u0439 \u043F\u043E\u0440\u0442
station.PLANETARY_OUTPOST=\u041F\u043B\u0430\u043D\u0435\u0442\u0430\u0440\u043D\u0430\u044F \u0441\u0442\u0430\u043D\u0446\u0438\u044F
faction.FEDERATION=\u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044F
faction.EMPIRE=\u0418\u043C\u043F\u0435\u0440\u0438\u044F
faction.ALLIANCE=\u0410\u043B\u044C\u044F\u043D\u0441
@@ -30,6 +45,19 @@ services.SHIPYARD=\u041A\u043E\u0441\u043C\u043E\u0432\u0435\u0440\u0444\u044C
services.REFUEL=\u0414\u043E\u0437\u0430\u043F\u0440\u0430\u0432\u043A\u0430
services.MEDIUM_LANDPAD=\u0421\u0440\u0435\u0434\u043D\u044F\u044F
services.LARGE_LANDPAD=\u0411\u043E\u043B\u044C\u0448\u0430\u044F
economic.AGRICULTURE=\u0421\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u0445\u043E\u0437\u044F\u0439\u0441\u0442\u0432\u043E
economic.EXTRACTION=\u0414\u043E\u0431\u044B\u0447\u0430 \u0438\u0441\u043A\u043E\u043F\u0430\u0435\u043C\u044B\u0445
economic.HIGH_TECH=\u0412\u044B\u0441\u043E\u043A\u0438\u0435 \u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u0438
economic.INDUSTRIAL=\u041F\u0440\u043E\u043C\u044B\u0448\u043B\u0435\u043D\u043D\u043E\u0441\u0442\u044C
economic.MILITARY=\u0412\u043E\u0435\u043D\u043D\u0430\u044F
economic.REFINERY=\u041F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u043A\u0430
economic.SERVICE=\u0421\u0444\u0435\u0440\u0430 \u0443\u0441\u043B\u0443\u0433
economic.TERRAFORMING=\u0422\u0435\u0440\u0440\u0430\u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
economic.TOURISM=\u0422\u0443\u0440\u0438\u0437\u043C
economic.COLONY=\u041A\u043E\u043B\u043E\u043D\u0438\u044F
economic.NONE=\u041D\u0435\u0442
item.group.chemicals=\u0425\u0438\u043C\u0438\u043A\u0430\u0442\u044B
item.explosives=\u0412\u0437\u0440\u044B\u0432\u0447\u0430\u0442\u043A\u0430
item.hydrogenfuel=\u0412\u043E\u0434\u043E\u0440\u043E\u0434\u043D\u043E\u0435 \u0442\u043E\u043F\u043B\u0438\u0432\u043E

View File

@@ -22,7 +22,21 @@
<ComboBox fx:id="government" maxWidth="200" />
</VBox>
</HBox>
<HBox GridPane.rowIndex="2" GridPane.columnIndex="1" spacing="4">
<HBox GridPane.rowIndex="2" GridPane.columnSpan="2" spacing="10" alignment="CENTER">
<VBox prefWidth="180" alignment="CENTER">
<Label text="%market.station.type"/>
<ComboBox fx:id="type" maxWidth="200" />
</VBox>
<VBox prefWidth="180" alignment="CENTER">
<Label text="%market.economic"/>
<ComboBox fx:id="economic" maxWidth="200" />
</VBox>
<VBox prefWidth="180" alignment="CENTER">
<Label text="%market.economic"/>
<ComboBox fx:id="subEconomic" maxWidth="200" />
</VBox>
</HBox>
<HBox GridPane.rowIndex="3" GridPane.columnIndex="1" spacing="4">
<VBox prefWidth="200" alignment="CENTER">
<Label text="%vEditor.text.distance"/>
<NumberField fx:id="distance" maxWidth="60" />
@@ -48,13 +62,13 @@
</HBox>
</VBox>
</HBox>
<VBox GridPane.rowIndex="3" alignment="CENTER" spacing="10">
<VBox GridPane.rowIndex="4" alignment="CENTER" spacing="10">
<Button prefWidth="30" onAction="#up"><graphic><Glyph text="FontAwesome|ARROW_UP"/></graphic></Button>
<Button prefWidth="30" onAction="#down"><graphic><Glyph text="FontAwesome|ARROW_DOWN"/></graphic></Button>
<Button prefWidth="30" onAction="#add"><graphic><Glyph text="FontAwesome|PLUS"/></graphic></Button>
<Button prefWidth="30" onAction="#updateFromEMDN"><graphic><Glyph text="FontAwesome|REFRESH"/></graphic></Button>
</VBox>
<TableView fx:id="items" prefWidth="575" editable="true" GridPane.columnIndex="1" GridPane.rowIndex="3">
<TableView fx:id="items" GridPane.rowIndex="4" prefWidth="575" maxHeight="560" editable="true" GridPane.columnIndex="1">
<columns>
<TableColumn minWidth="200.0" text="%market.item.name" editable="false">
<cellValueFactory><PropertyValueFactory property="name"/></cellValueFactory>