Archived
0

add Refuel service

This commit is contained in:
Mo
2015-10-24 16:11:59 +03:00
parent c9862f533a
commit 74962519cc
24 changed files with 285 additions and 243 deletions

View File

@@ -18,6 +18,7 @@ import ru.trader.view.support.autocomplete.AutoCompletion;
import ru.trader.view.support.autocomplete.CachedSuggestionProvider;
import ru.trader.view.support.autocomplete.SystemsProvider;
import ru.trader.view.support.cells.CustomListCell;
import java.util.Optional;
public class FilterController {
@@ -40,6 +41,8 @@ public class FilterController {
@FXML
private CheckBox cbBlackMarket;
@FXML
private CheckBox cbRefuel;
@FXML
private CheckBox cbRepair;
@FXML
private CheckBox cbMunition;
@@ -109,6 +112,7 @@ public class FilterController {
distance.setValue(filter.getDistance());
cbMarket.setSelected(filter.has(SERVICE_TYPE.MARKET));
cbBlackMarket.setSelected(filter.has(SERVICE_TYPE.BLACK_MARKET));
cbRefuel.setSelected(filter.has(SERVICE_TYPE.REFUEL));
cbMunition.setSelected(filter.has(SERVICE_TYPE.MUNITION));
cbRepair.setSelected(filter.has(SERVICE_TYPE.REPAIR));
cbOutfit.setSelected(filter.has(SERVICE_TYPE.OUTFIT));
@@ -134,6 +138,7 @@ public class FilterController {
filter.setDistance(distance.getValue().doubleValue());
if (cbMarket.isSelected()) filter.add(SERVICE_TYPE.MARKET); else filter.remove(SERVICE_TYPE.MARKET);
if (cbBlackMarket.isSelected()) filter.add(SERVICE_TYPE.BLACK_MARKET); else filter.remove(SERVICE_TYPE.BLACK_MARKET);
if (cbRefuel.isSelected()) filter.add(SERVICE_TYPE.REFUEL); else filter.remove(SERVICE_TYPE.REFUEL);
if (cbMunition.isSelected()) filter.add(SERVICE_TYPE.MUNITION); else filter.remove(SERVICE_TYPE.MUNITION);
if (cbRepair.isSelected()) filter.add(SERVICE_TYPE.REPAIR); else filter.remove(SERVICE_TYPE.REPAIR);
if (cbOutfit.isSelected()) filter.add(SERVICE_TYPE.OUTFIT); else filter.remove(SERVICE_TYPE.OUTFIT);

View File

@@ -2,7 +2,6 @@ package ru.trader.controllers;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.geometry.Insets;
import javafx.scene.control.*;
@@ -51,6 +50,8 @@ public class OffersController {
@FXML
private CheckBox cbBlackMarket;
@FXML
private CheckBox cbRefuel;
@FXML
private CheckBox cbRepair;
@FXML
private CheckBox cbMunition;
@@ -159,6 +160,7 @@ public class OffersController {
distance.setText(String.valueOf(station.getDistance()));
cbMarket.setSelected(station.hasService(SERVICE_TYPE.MARKET));
cbBlackMarket.setSelected(station.hasService(SERVICE_TYPE.BLACK_MARKET));
cbRefuel.setSelected(station.hasService(SERVICE_TYPE.REFUEL));
cbMunition.setSelected(station.hasService(SERVICE_TYPE.MUNITION));
cbRepair.setSelected(station.hasService(SERVICE_TYPE.REPAIR));
cbOutfit.setSelected(station.hasService(SERVICE_TYPE.OUTFIT));

View File

@@ -43,6 +43,8 @@ public class SearchController {
@FXML
private CheckBox cbBlackMarket;
@FXML
private CheckBox cbRefuel;
@FXML
private CheckBox cbRepair;
@FXML
private CheckBox cbMunition;
@@ -115,6 +117,7 @@ public class SearchController {
filter.setDistance(distance.getValue().doubleValue());
if (cbMarket.isSelected()) filter.add(SERVICE_TYPE.MARKET); else filter.remove(SERVICE_TYPE.MARKET);
if (cbBlackMarket.isSelected()) filter.add(SERVICE_TYPE.BLACK_MARKET); else filter.remove(SERVICE_TYPE.BLACK_MARKET);
if (cbRefuel.isSelected()) filter.add(SERVICE_TYPE.REFUEL); else filter.remove(SERVICE_TYPE.REFUEL);
if (cbMunition.isSelected()) filter.add(SERVICE_TYPE.MUNITION); else filter.remove(SERVICE_TYPE.MUNITION);
if (cbRepair.isSelected()) filter.add(SERVICE_TYPE.REPAIR); else filter.remove(SERVICE_TYPE.REPAIR);
if (cbOutfit.isSelected()) filter.add(SERVICE_TYPE.OUTFIT); else filter.remove(SERVICE_TYPE.OUTFIT);

View File

@@ -50,6 +50,8 @@ public class StationEditorController {
@FXML
private CheckBox cbMarket;
@FXML
private CheckBox cbRefuel;
@FXML
private CheckBox cbBlackMarket;
@FXML
private CheckBox cbRepair;
@@ -101,6 +103,7 @@ public class StationEditorController {
distance.numberProperty().bindBidirectional(updater.distanceProperty());
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));
cbMunition.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.MUNITION));
cbRepair.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.REPAIR));
cbOutfit.selectedProperty().bindBidirectional(updater.serviceProperty(SERVICE_TYPE.OUTFIT));

View File

@@ -25,6 +25,7 @@ services.REPAIR=Repair
services.MUNITION=Munition
services.OUTFIT=Outfit
services.SHIPYARD=Shipyard
services.REFUEL=Refuel
services.MEDIUM_LANDPAD=Medium Pad
services.LARGE_LANDPAD=Large Pad

View File

@@ -35,6 +35,8 @@ routes.path=Path
routes.jumps=Jumps
routes.refills=Refills
routes.lands=Landings
routes.time=Time
routes.profitByTime=Cr/Sec
# Dialog
dialog.confirm.save=Changes were not saved, save changes?

View File

@@ -35,6 +35,8 @@ routes.path=\u041F\u0443\u0442\u044C
routes.jumps=\u041F\u0440\u044B\u0436\u043A\u043E\u0432
routes.refills=\u0417\u0430\u043F\u0440\u0430\u0432\u043E\u043A
routes.lands=\u041F\u043E\u0441\u0430\u0434\u043E\u043A
routes.time=\u0412\u0440\u0435\u043C\u044F
routes.profitByTime=\u041A\u0440/\u0421\u0435\u043A
# Dialog
dialog.confirm.save=\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B, \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C?

View File

@@ -21,12 +21,13 @@ government.PRISON_COLONY=\u0422\u044E\u0440\u0435\u043C\u043D\u0430\u044F \u043A
government.THEOCRACY=\u0422\u0435\u043E\u043A\u0440\u0430\u0442\u0438\u044F
government.NONE=\u041D\u0435\u0442
services.MARKET=\u0420\u044B\u043D\u043E\u043A
services.MARKET=\u041F\u0440\u0435\u0434\u043C\u0435\u0442\u044B \u043F\u043E\u0442\u0440\u0435\u0431\u043B\u0435\u043D\u0438\u044F
services.BLACK_MARKET=\u0427\u0435\u0440\u043D\u044B\u0439 \u0440\u044B\u043D\u043E\u043A
services.REPAIR=\u0420\u0435\u043C\u043E\u043D\u0442
services.MUNITION=\u0411\u043E\u0435\u043F\u0440\u0438\u043F\u0430\u0441\u044B
services.REPAIR=\u041F\u043E\u0447\u0438\u043D\u043A\u0430
services.MUNITION=\u041F\u0435\u0440\u0435\u0432\u043E\u043E\u0440\u0443\u0436\u0435\u043D\u0438\u0435
services.OUTFIT=\u0421\u043D\u0430\u0440\u044F\u0436\u0435\u043D\u0438\u044F
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
item.group.chemicals=\u0425\u0438\u043C\u0438\u043A\u0430\u0442\u044B

View File

@@ -1,18 +1,7 @@
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.control.Label?>
<?import ru.trader.view.support.NumberField?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.layout.TilePane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import org.controlsfx.glyphfont.Glyph?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.TextField?>
<?import ru.trader.view.support.NumberField?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ru.trader.controllers.FilterController"
styleClass="dialog" vgap="4" hgap="8">
<columnConstraints>
@@ -27,9 +16,10 @@
<Label text="%filter.distance" GridPane.rowIndex="3" />
<NumberField fx:id="distance" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="%filter.services" GridPane.rowIndex="4" />
<TilePane hgap="5" vgap="5" tileAlignment="BASELINE_LEFT" GridPane.columnIndex="1" GridPane.rowIndex="4" >
<TilePane hgap="5" vgap="5" tileAlignment="BASELINE_LEFT" prefColumns="2" GridPane.columnIndex="1" GridPane.rowIndex="4" >
<CheckBox fx:id="cbMarket" text="%services.MARKET"/>
<CheckBox fx:id="cbBlackMarket" text="%services.BLACK_MARKET"/>
<CheckBox fx:id="cbRefuel" text="%services.REFUEL"/>
<CheckBox fx:id="cbRepair" text="%services.REPAIR"/>
<CheckBox fx:id="cbMunition" text="%services.MUNITION"/>
<CheckBox fx:id="cbOutfit" text="%services.OUTFIT"/>

View File

@@ -36,16 +36,17 @@
</HBox>
<HBox spacing="4">
<Label text="%offers.text.services"/>
<HBox spacing="15">
<TilePane hgap="5" vgap="5" prefColumns="5" tileAlignment="BASELINE_LEFT">
<CheckBox fx:id="cbMarket" text="%services.MARKET"/>
<CheckBox fx:id="cbBlackMarket" text="%services.BLACK_MARKET"/>
<CheckBox fx:id="cbRefuel" text="%services.REFUEL"/>
<CheckBox fx:id="cbRepair" text="%services.REPAIR"/>
<CheckBox fx:id="cbMunition" text="%services.MUNITION"/>
<CheckBox fx:id="cbOutfit" text="%services.OUTFIT"/>
<CheckBox fx:id="cbShipyard" text="%services.SHIPYARD"/>
<CheckBox fx:id="cbMediumLandpad" text="%services.MEDIUM_LANDPAD"/>
<CheckBox fx:id="cbLargeLandpad" text="%services.LARGE_LANDPAD"/>
</HBox>
</TilePane>
</HBox>
</VBox>

View File

@@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.control.cell.PropertyValueFactory?>
<?import ru.trader.view.support.NumberField?>
<?import ru.trader.view.support.cells.DistanceCell?>
<?import ru.trader.view.support.NumberField?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="ru.trader.controllers.SearchController">
@@ -35,9 +33,10 @@
<Label text="%search.text.distance" GridPane.rowIndex="3" />
<NumberField fx:id="distance" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="%filter.services" GridPane.rowIndex="4" />
<TilePane hgap="5" vgap="5" tileAlignment="BASELINE_LEFT" GridPane.columnSpan="2" GridPane.rowIndex="5" >
<TilePane hgap="5" vgap="5" tileAlignment="BASELINE_LEFT" prefColumns="2" GridPane.columnSpan="2" GridPane.rowIndex="5" >
<CheckBox fx:id="cbMarket" text="%services.MARKET"/>
<CheckBox fx:id="cbBlackMarket" text="%services.BLACK_MARKET"/>
<CheckBox fx:id="cbRefuel" text="%services.REFUEL"/>
<CheckBox fx:id="cbRepair" text="%services.REPAIR"/>
<CheckBox fx:id="cbMunition" text="%services.MUNITION"/>
<CheckBox fx:id="cbOutfit" text="%services.OUTFIT"/>

View File

@@ -29,16 +29,23 @@
</VBox>
<VBox HBox.hgrow="ALWAYS" alignment="CENTER">
<Label text="%vEditor.text.services"/>
<TilePane hgap="5" vgap="5" maxWidth="350" tileAlignment="BASELINE_LEFT">
<CheckBox fx:id="cbMarket" text="%services.MARKET"/>
<CheckBox fx:id="cbBlackMarket" text="%services.BLACK_MARKET"/>
<CheckBox fx:id="cbRepair" text="%services.REPAIR"/>
<CheckBox fx:id="cbMunition" text="%services.MUNITION"/>
<CheckBox fx:id="cbOutfit" text="%services.OUTFIT"/>
<CheckBox fx:id="cbShipyard" text="%services.SHIPYARD"/>
<CheckBox fx:id="cbMediumLandpad" text="%services.MEDIUM_LANDPAD"/>
<CheckBox fx:id="cbLargeLandpad" text="%services.LARGE_LANDPAD"/>
</TilePane>
<HBox spacing="5" maxWidth="400">
<VBox spacing="5">
<CheckBox fx:id="cbMarket" text="%services.MARKET"/>
<CheckBox fx:id="cbBlackMarket" text="%services.BLACK_MARKET"/>
<CheckBox fx:id="cbRefuel" text="%services.REFUEL"/>
</VBox>
<VBox spacing="5">
<CheckBox fx:id="cbRepair" text="%services.REPAIR"/>
<CheckBox fx:id="cbMunition" text="%services.MUNITION"/>
<CheckBox fx:id="cbOutfit" text="%services.OUTFIT"/>
</VBox>
<VBox spacing="5">
<CheckBox fx:id="cbShipyard" text="%services.SHIPYARD"/>
<CheckBox fx:id="cbMediumLandpad" text="%services.MEDIUM_LANDPAD"/>
<CheckBox fx:id="cbLargeLandpad" text="%services.LARGE_LANDPAD"/>
</VBox>
</HBox>
</VBox>
</HBox>
<VBox GridPane.rowIndex="3" alignment="CENTER" spacing="10">

View File

@@ -56,7 +56,7 @@ public interface Place extends Connectable<Place> {
@Override
default boolean canRefill() {
return !isEmpty();
return !isEmpty() && get().stream().filter(v -> v.has(SERVICE_TYPE.REFUEL)).findAny().isPresent();
}
@Override

View File

@@ -1,5 +1,5 @@
package ru.trader.core;
public enum SERVICE_TYPE {
MARKET, BLACK_MARKET, REPAIR, MUNITION, OUTFIT, SHIPYARD, MEDIUM_LANDPAD, LARGE_LANDPAD
MARKET, BLACK_MARKET, REPAIR, MUNITION, OUTFIT, SHIPYARD, REFUEL, MEDIUM_LANDPAD, LARGE_LANDPAD
}

View File

@@ -121,6 +121,11 @@ public class TransitVendor implements Vendor {
return place.equals(that.place);
}
@Override
public boolean canRefill() {
return getPlace().canRefill();
}
@Override
public int hashCode() {
return place.hashCode();

View File

@@ -75,7 +75,7 @@ public interface Vendor extends Connectable<Vendor> {
}
default boolean canRefill(){
return getPlace().canRefill();
return has(SERVICE_TYPE.REFUEL);
}
default void clear(){

View File

@@ -1,9 +1,6 @@
package ru.trader.store.berkeley;
import ru.trader.core.AbstractPlace;
import ru.trader.core.FACTION;
import ru.trader.core.GOVERNMENT;
import ru.trader.core.Vendor;
import ru.trader.core.*;
import ru.trader.store.berkeley.entities.BDBPlace;
import ru.trader.store.berkeley.entities.BDBVendor;
@@ -147,6 +144,11 @@ public class PlaceProxy extends AbstractPlace {
return !store.getVendorAccessor().contains(place.getId());
}
@Override
public boolean canRefill() {
return store.getVendorAccessor().contains(place.getId(), v -> v.has(SERVICE_TYPE.REFUEL));
}
@Override
public Collection<String> getVendorNames() {
return store.getVendorAccessor().getNamesByPlace(place.getId());

View File

@@ -1,10 +1,13 @@
package ru.trader.store.berkeley.dao;
import com.sleepycat.persist.*;
import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.PrimaryIndex;
import com.sleepycat.persist.SecondaryIndex;
import ru.trader.store.berkeley.entities.BDBVendor;
import java.util.Collection;
import java.util.function.Function;
import java.util.function.Predicate;
public class VendorDA<T> {
private final PrimaryIndex<Long, BDBVendor> indexById;
@@ -42,6 +45,10 @@ public class VendorDA<T> {
return indexByPlaceId.contains(placeId);
}
public boolean contains(long placeId, Predicate<BDBVendor> filter) {
return !DAUtils.getAll(indexByPlaceId, placeId, v -> v, filter).isEmpty();
}
public long count(long placeId){
return indexByPlaceId.subIndex(placeId).count();
}

View File

@@ -81,6 +81,7 @@
<xs:restriction base="xs:string">
<xs:enumeration value="MARKET"/>
<xs:enumeration value="BLACK_MARKET"/>
<xs:enumeration value="REFUEL"/>
<xs:enumeration value="REPAIR"/>
<xs:enumeration value="MUNITION"/>
<xs:enumeration value="OUTFIT"/>

View File

@@ -39,6 +39,7 @@ public class MarketAnalyzerTest extends Assert {
place.add(new SimpleVendor());
}
Vendor vendor = place.get().iterator().next();
vendor.add(SERVICE_TYPE.REFUEL);
vendor.add(offer);
}

View File

@@ -89,6 +89,7 @@ public class LoadTest extends Assert {
vendor1.setGovernment(GOVERNMENT.ANARCHY);
vendor1.add(SERVICE_TYPE.MARKET);
vendor1.add(SERVICE_TYPE.OUTFIT);
vendor1.add(SERVICE_TYPE.REFUEL);
Offer offer1 = vendor1.addOffer(OFFER_TYPE.SELL, item1, 10,43);
Offer offer2 = vendor1.addOffer(OFFER_TYPE.BUY, item1, 12,1);
Offer offer3 = vendor1.addOffer(OFFER_TYPE.SELL, item2, 1012,1000);
@@ -99,6 +100,7 @@ public class LoadTest extends Assert {
vendor2.setGovernment(GOVERNMENT.NONE);
vendor3.setDistance(200000.4);
vendor3.add(SERVICE_TYPE.OUTFIT);
vendor3.add(SERVICE_TYPE.REFUEL);
LOG.info("save market");
File xml = new File("save_load_test.xml");
@@ -175,6 +177,7 @@ public class LoadTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertTrue(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertTrue(vendor.has(SERVICE_TYPE.REFUEL));
}
if (vendor2.getName().equals(vendor.getName())) {
LOG.info("check vendor 2");
@@ -187,6 +190,7 @@ public class LoadTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertFalse(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertFalse(vendor.has(SERVICE_TYPE.REFUEL));
}
}
assertEquals(2, j);
@@ -209,6 +213,7 @@ public class LoadTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertTrue(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertTrue(vendor.has(SERVICE_TYPE.REFUEL));
}
}
assertEquals(1, j);

View File

@@ -403,6 +403,7 @@ public class MarketTest extends Assert {
vendor1.setDistance(10);
vendor1.add(SERVICE_TYPE.MARKET);
vendor1.add(SERVICE_TYPE.OUTFIT);
vendor1.add(SERVICE_TYPE.REFUEL);
Offer offer1 = vendor1.addOffer(OFFER_TYPE.SELL, item1, 10,43);
Offer offer2 = vendor1.addOffer(OFFER_TYPE.BUY, item1, 12,1);
Offer offer3 = vendor1.addOffer(OFFER_TYPE.SELL, item2, 1012,1000);
@@ -412,6 +413,7 @@ public class MarketTest extends Assert {
vendor2.setDistance(100.4);
vendor3.setDistance(200000.4);
vendor3.add(SERVICE_TYPE.OUTFIT);
vendor3.add(SERVICE_TYPE.REFUEL);
LOG.info("add market");
market.add(world);
@@ -473,6 +475,7 @@ public class MarketTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertTrue(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertTrue(vendor.has(SERVICE_TYPE.REFUEL));
}
if (vendor2.getName().equals(vendor.getName())) {
LOG.info("check vendor 2");
@@ -485,6 +488,7 @@ public class MarketTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertFalse(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertFalse(vendor.has(SERVICE_TYPE.REFUEL));
}
}
assertEquals(2, j);
@@ -507,6 +511,7 @@ public class MarketTest extends Assert {
assertFalse(vendor.has(SERVICE_TYPE.MUNITION));
assertTrue(vendor.has(SERVICE_TYPE.OUTFIT));
assertFalse(vendor.has(SERVICE_TYPE.SHIPYARD));
assertTrue(vendor.has(SERVICE_TYPE.REFUEL));
}
}
assertEquals(1, j);

File diff suppressed because it is too large Load Diff

View File

@@ -174,7 +174,7 @@
<place name="26 Draconis" x="-39.0" y="-0.65625" z="24.90625"/>
<place name="Acihaut" x="-18.5" y="-4.0" z="25.28125">
<vendor name="Station of Acihaut">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i39" price="1130.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -251,7 +251,7 @@
</place>
<place name="Aganippe" x="-11.5625" y="11.625" z="43.8125">
<vendor name="Station of Aganippe">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i15" price="356.0" count="1000"/>
<offer type="SELL" item="i12" price="15.0" count="1000"/>
@@ -287,7 +287,7 @@
</place>
<place name="Asellus Primus" x="-23.9375" y="-1.34375" z="40.875">
<vendor name="Station of Asellus Primus">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i95" price="99900.0" count="1000"/>
<offer type="SELL" item="i63" price="1581.0" count="1000"/>
@@ -371,7 +371,7 @@
</place>
<place name="Aulin" x="-19.6875" y="4.75" z="32.6875">
<vendor name="Station of Aulin">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i114" price="2067895.0" count="1000"/>
<offer type="SELL" item="i107" price="210400.0" count="1000"/>
<offer type="SELL" item="i78" price="1.0" count="1000"/>
@@ -464,7 +464,7 @@
</place>
<place name="Aulis" x="-16.46875" y="-11.4375" z="44.1875">
<vendor name="Station of Aulis">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i15" price="355.0" count="1000"/>
<offer type="SELL" item="i20" price="1026.0" count="1000"/>
<offer type="SELL" item="i12" price="15.0" count="1000"/>
@@ -503,7 +503,7 @@
</place>
<place name="BD+47 2112" x="-14.78125" y="-0.40625" z="33.46875">
<vendor name="Station of BD+47 2112">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i36" price="519.0" count="1000"/>
@@ -549,7 +549,7 @@
<place name="BD+55 1519" x="-16.9375" y="-16.59375" z="44.71875"></place>
<place name="Bolg" x="-7.90625" y="2.125" z="34.71875">
<vendor name="Station of Bolg">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i79" price="1.0" count="1000"/>
<offer type="SELL" item="i114" price="1.0" count="1000"/>
@@ -623,7 +623,7 @@
</place>
<place name="CM Draco" x="-35.6875" y="2.15625" z="30.9375">
<vendor name="Station of CM Draco">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i36" price="447.0" count="1000"/>
<offer type="SELL" item="i1" price="82.0" count="1000"/>
<offer type="SELL" item="i68" price="16.0" count="1000"/>
@@ -673,7 +673,7 @@
</place>
<place name="Chi Herculis" x="-30.75" y="12.78125" z="39.71875">
<vendor name="Station of Chi Herculis">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i15" price="391.0" count="1000"/>
<offer type="SELL" item="i12" price="17.0" count="1000"/>
<offer type="SELL" item="i18" price="67.0" count="1000"/>
@@ -706,7 +706,7 @@
<place name="DP Draconis" x="-17.5" y="-11.375" z="25.96875"/>
<place name="Dahan" x="-19.75" y="-3.1875" z="41.78125">
<vendor name="Station of Dahan">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i36" price="535.0" count="1000"/>
@@ -769,7 +769,7 @@
</place>
<place name="Eranin" x="-22.84375" y="-1.1875" z="36.53125">
<vendor name="Station of Eranin">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i66" price="255.0" count="1000"/>
<offer type="SELL" item="i65" price="58.0" count="1000"/>
<offer type="SELL" item="i20" price="1252.0" count="1000"/>
@@ -812,7 +812,7 @@
</place>
<place name="G 239-25" x="-22.6875" y="-6.6875" z="25.8125">
<vendor name="Station of G 239-25">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i1" price="81.0" count="1000"/>
@@ -856,7 +856,7 @@
<place name="Hermitage" x="-28.75" y="10.4375" z="25.0"/>
<place name="Ithaca" x="-8.09375" y="-9.28125" z="44.9375">
<vendor name="Station of Ithaca">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i36" price="412.0" count="1000"/>
<offer type="SELL" item="i90" price="1.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -909,7 +909,7 @@
</place>
<place name="Keries" x="-18.90625" y="12.59375" z="27.21875">
<vendor name="Station of Keries">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="82.0" count="1000"/>
<offer type="SELL" item="i50" price="1695.0" count="1000"/>
<offer type="SELL" item="i68" price="16.0" count="1000"/>
@@ -954,7 +954,7 @@
<place name="LFT 1361" x="-38.78125" y="-0.5" z="24.71875"/>
<place name="LFT 880" x="-22.8125" y="-18.34375" z="31.40625">
<vendor name="Station of LFT 880">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i107" price="1.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1013,7 +1013,7 @@
</place>
<place name="LFT 992" x="-7.5625" y="0.6875" z="42.59375">
<vendor name="Station of LFT 992">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="82.0" count="1000"/>
<offer type="SELL" item="i50" price="1383.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1053,7 +1053,7 @@
</place>
<place name="LHS 2819" x="-30.5" y="-13.4375" z="38.5625">
<vendor name="Station of LHS 2819">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="48.0" count="1000"/>
<offer type="SELL" item="i50" price="1383.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1091,7 +1091,7 @@
</place>
<place name="LHS 2884" x="-22.0" y="1.78125" z="48.40625">
<vendor name="Station of LHS 2884">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i36" price="535.0" count="1000"/>
<offer type="SELL" item="i1" price="48.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1137,7 +1137,7 @@
</place>
<place name="LHS 2887" x="-7.34375" y="5.71875" z="26.78125">
<vendor name="Station of LHS 2887">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i42" price="821.0" count="1000"/>
<offer type="SELL" item="i39" price="1375.0" count="1000"/>
<offer type="SELL" item="i1" price="81.0" count="1000"/>
@@ -1196,7 +1196,7 @@
</place>
<place name="LHS 3006" x="-21.96875" y="-1.71875" z="29.09375">
<vendor name="Station of LHS 3006">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="81.0" count="1000"/>
<offer type="SELL" item="i50" price="1557.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1236,7 +1236,7 @@
</place>
<place name="LHS 3262" x="-24.125" y="4.90625" z="18.84375">
<vendor name="Station of LHS 3262">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i95" price="1.0" count="1000"/>
<offer type="SELL" item="i63" price="1283.0" count="1000"/>
@@ -1315,7 +1315,7 @@
</place>
<place name="LHS 417" x="-18.3125" y="4.90625" z="18.1875">
<vendor name="Station of LHS 417">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i36" price="543.0" count="1000"/>
<offer type="SELL" item="i1" price="81.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1360,7 +1360,7 @@
</place>
<place name="LHS 5287" x="-36.40625" y="-0.78125" z="48.1875">
<vendor name="Station of LHS 5287">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="48.0" count="1000"/>
<offer type="SELL" item="i50" price="1379.0" count="1000"/>
<offer type="SELL" item="i68" price="11.0" count="1000"/>
@@ -1398,7 +1398,7 @@
<place name="LP 275-68" x="-23.34375" y="15.1875" z="25.0625"/>
<place name="LP 64-194" x="-21.65625" y="-16.21875" z="32.21875">
<vendor name="Station of LP 64-194">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="67.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
<offer type="SELL" item="i116" price="1.0" count="1000"/>
@@ -1441,7 +1441,7 @@
</place>
<place name="LP 98-132" x="-26.78125" y="-4.59375" z="37.03125">
<vendor name="Station of LP 98-132">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i90" price="1.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1494,7 +1494,7 @@
<place name="Lalande 29917" x="-26.53125" y="-4.5625" z="22.15625"/>
<place name="Magec" x="-32.875" y="15.5" z="36.15625">
<vendor name="Station of Magec">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i66" price="255.0" count="1000"/>
<offer type="SELL" item="i65" price="53.0" count="1000"/>
<offer type="SELL" item="i20" price="1249.0" count="1000"/>
@@ -1534,7 +1534,7 @@
<place name="Meliae" x="-17.3125" y="-1.6875" z="49.53125"/>
<place name="Morgor" x="-15.25" y="-2.25" z="39.53125">
<vendor name="Station of Morgor">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i1" price="81.0" count="1000"/>
<offer type="SELL" item="i90" price="5800.0" count="1000"/>
@@ -1576,7 +1576,7 @@
</place>
<place name="Nang Ta-khian" x="-18.21875" y="-6.34375" z="26.5625">
<vendor name="Station of Nang Ta-khian">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="11600.0" count="1000"/>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i71" price="4066.0" count="1000"/>
@@ -1647,7 +1647,7 @@
</place>
<place name="Naraka" x="-34.09375" y="-5.53125" z="26.21875">
<vendor name="Station of Naraka">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i65" price="48.0" count="1000"/>
<offer type="SELL" item="i13" price="922.0" count="1000"/>
@@ -1683,7 +1683,7 @@
</place>
<place name="Opala" x="-25.5" y="9.28125" z="35.25">
<vendor name="Station of Opala">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i15" price="478.0" count="1000"/>
<offer type="SELL" item="i12" price="16.0" count="1000"/>
<offer type="SELL" item="i18" price="84.0" count="1000"/>
@@ -1715,7 +1715,7 @@
</place>
<place name="Ovid" x="-28.0625" y="14.8125" z="35.15625">
<vendor name="Station of Ovid">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i91" price="1.0" count="1000"/>
<offer type="SELL" item="i27" price="4008.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1788,7 +1788,7 @@
</place>
<place name="Pi-fang" x="-34.65625" y="-4.59375" z="22.84375">
<vendor name="Station of Pi-fang">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i90" price="1.0" count="1000"/>
<offer type="SELL" item="i76" price="1.0" count="1000"/>
@@ -1840,7 +1840,7 @@
</place>
<place name="Rakapila" x="-14.90625" y="9.125" z="33.625">
<vendor name="Station of Rakapila">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i4" price="129.0" count="1000"/>
<offer type="SELL" item="i69" price="24.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1887,7 +1887,7 @@
</place>
<place name="Ross 1015" x="-6.09375" y="3.03125" z="29.46875">
<vendor name="Station of Ross 1015">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i1" price="75.0" count="1000"/>
<offer type="SELL" item="i50" price="1383.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -1922,7 +1922,7 @@
</place>
<place name="Ross 1051" x="-37.21875" y="-5.0625" z="44.5">
<vendor name="Station of Ross 1051">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i91" price="92000.0" count="1000"/>
@@ -1988,7 +1988,7 @@
</place>
<place name="Ross 1057" x="-32.3125" y="-12.4375" z="26.1875">
<vendor name="Station of Ross 1057">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i66" price="256.0" count="1000"/>
<offer type="SELL" item="i12" price="25.0" count="1000"/>
<offer type="SELL" item="i18" price="84.0" count="1000"/>
@@ -2022,7 +2022,7 @@
<place name="Styx" x="-24.3125" y="6.03125" z="37.75"/>
<place name="Surya" x="-38.46875" y="5.40625" z="39.25">
<vendor name="Station of Surya">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i107" price="210400.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -2079,7 +2079,7 @@
</place>
<place name="Tilian" x="-21.53125" y="10.125" z="22.3125">
<vendor name="Station of Tilian">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="9100.0" count="1000"/>
<offer type="SELL" item="i30" price="129.0" count="1000"/>
<offer type="SELL" item="i114" price="2067835.0" count="1000"/>
@@ -2155,7 +2155,7 @@
<place name="Wise 1647+5632" x="-21.59375" y="1.75" z="17.71875"/>
<place name="Wyrd" x="-11.625" y="-3.9375" z="31.53125">
<vendor name="Station of Wyrd">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i97" price="1.0" count="1000"/>
<offer type="SELL" item="i108" price="1.0" count="1000"/>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
@@ -2212,7 +2212,7 @@
</place>
<place name="h Draconis" x="-39.84375" y="-3.90625" z="29.5625">
<vendor name="Station of h Draconis">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i114" price="1.0" count="1000"/>
<offer type="SELL" item="i78" price="1.0" count="1000"/>
<offer type="SELL" item="i68" price="18.0" count="1000"/>
@@ -2282,7 +2282,7 @@
</place>
<place name="i Bootis" x="-22.375" y="4.0" z="34.84375">
<vendor name="Station of i Bootis">
<services><service type="MARKET"/></services>
<services><service type="REFUEL"/><service type="MARKET"/></services>
<offer type="SELL" item="i105" price="1.0" count="1000"/>
<offer type="SELL" item="i97" price="1.0" count="1000"/>
<offer type="SELL" item="i79" price="1.0" count="1000"/>