diff --git a/src/index.html b/src/index.html
index 2302864..b7c202f 100644
--- a/src/index.html
+++ b/src/index.html
@@ -7,17 +7,17 @@
- Active tool:
Probe
+ Active tool:
Probe
Equipment:
diff --git a/src/main.js b/src/main.js
index 0f72893..0efc690 100644
--- a/src/main.js
+++ b/src/main.js
@@ -9,7 +9,7 @@ class Engine {
this.ticks = 0;
this.current_asteroid = new Asteroid();
this.station = new Station();
- this.ship = new Ship(this.current_asteroid);
+ this.ship = new Ship(this.current_asteroid, this.station);
this.asteroids = [this.current_asteroid];
}
@@ -22,13 +22,14 @@ class Engine {
_.eachObj(this.ship.resources, (key, value) => {
$('nav .res-' + key).fill(value);
});
+ $('nav .cbtc').fill(this.ship.cbtc);
// The ship
$('#active-tool').fill(this.ship.active_tool);
if (_.keys(engine.ship.equipment).length > $('#ship-equipment > li').length) {
$('#ship-equipment').fill();
- _.eachObj(engine.ship.equipment, (tool, props) => {
+ _.eachObj(engine.ship.equipment, (tool) => {
// Add the tool to the DOM inventory and add a mount button
let mount_button = EE('a', {'@href': '#', '%tool': tool}, 'mount').onClick((e) => {
engine.ship.active_tool = tool;
@@ -58,12 +59,12 @@ class Engine {
}
class Ship {
- constructor(asteroid) {
+ constructor(asteroid, station) {
this.docked_to = asteroid;
this.active_tool = 'probe';
this.equipment = {
- 'probe': {'A': 1, 'C': 1, 'S': 1, 'X': 1}
+ 'probe': station.inventory['probe']
};
this.resources = {
dust: 0,
@@ -71,6 +72,7 @@ class Ship {
carbon: 0,
metal: 0
}
+ this.cbtc = 450;
}
mount(tool) {
@@ -110,7 +112,7 @@ class Asteroid {
'X': ['metal']
}[this.classification];
let res_type = resources[Helper.random_number(0, resources.length)];
- let amount = ship.equipment[ship.active_tool][this.classification];
+ let amount = ship.equipment[ship.active_tool]['capability'][this.classification];
return [res_type, amount];
}
}
@@ -119,31 +121,70 @@ class Station {
constructor() {
this.inventory = {
// take probes from the asteroid
- 'probe': {'A': 1, 'C': 1, 'S': 1, 'X': 1},
+ 'probe': {
+ 'price': 10,
+ 'capability': {'A': 1, 'C': 1, 'S': 1, 'X': 1}
+ },
// mine on surface
- 'conveyor': {'A': 2, 'C': 8, 'S': 4, 'X': 1},
+ 'conveyor': {
+ 'price': 500,
+ 'capability': {'A': 2, 'C': 8, 'S': 4, 'X': 1}
+ },
// shaft mining into the asteroid
- 'pipe-drill': {'A': 3, 'C': 15, 'S': 12, 'X': 2},
+ 'pipe-drill': {
+ 'price': 3000,
+ 'capability': {'A': 3, 'C': 15, 'S': 12, 'X': 2}
+ },
// pick up loose grains with magnet, x-class asteroids only
- 'magnet': {'A': 3, 'C': 1, 'S': 1, 'X': 20},
+ 'magnet': {
+ 'price': 4500,
+ 'capability': {'A': 3, 'C': 1, 'S': 1, 'X': 20}
+ },
// melt the matrix
- 'vaporizer': {'A': 4, 'C': 7, 'S': 6, 'X': 5}
+ 'vaporizer': {
+ 'price': 4000,
+ 'capability': {'A': 4, 'C': 7, 'S': 6, 'X': 5}
+ }
+ };
+ this.market = {
+ 'dust': 1,
+ 'stone': 3,
+ 'carbon': 20,
+ 'metal': 45
};
}
sell(ship, tool) {
- if (_.keys(this.inventory).contains(tool) &&
- !_.keys(ship.equipment).contains(tool))
- ship.equip(tool, this.inventory[tool]);
+ // Tools can't be buy several times
+ if (!_.keys(this.inventory).contains(tool) ||
+ _.keys(ship.equipment).contains(tool)) {
+ alert('You already own this tool.');
+ return;
+ }
+
+ let price = this.inventory[tool].price;
+ if (price > ship.cbtc) {
+ alert('You have not enough cBTC!');
+ return;
+ }
+
+ ship.equip(tool, this.inventory[tool]);
+ ship.cbtc -= price;
}
buy(ship, resource, amount) {
- // TODO: Check if the ship has enough resources loaded
- console.log(ship, resource, amount);
+ if (ship.resources[resource] < amount) {
+ alert('You have not enough resources loaded');
+ return;
+ }
+
+ let price = this.market[resource];
+ ship.cbtc += price*amount;
+ ship.resources[resource] -= amount;
}
}
@@ -174,12 +215,12 @@ $(() => {
});
_.eachObj(engine.station.inventory, (tool, props) => {
- let buy_button = EE('a', {'@href': '#', '%tool': tool}, 'buy').onClick((e) => {
+ let buy_button = EE('a', {'@href': '#', '%tool': tool}, ' buy for '+props.price+' cBTC').onClick((e) => {
let tool = $(e.target).get('%tool');
engine.station.sell(engine.ship, tool);
engine.update();
})
- $('#station-inventory').add(EE('li', tool+' ').add(buy_button));
+ $('#station-inventory').add(EE('li', tool).add(buy_button));
});
$('#ship-inventory a').onClick((e) => {