2015-08-25 16:04:47 +02:00
|
|
|
// Theme: Reversed
|
|
|
|
|
2015-08-24 16:28:52 +02:00
|
|
|
class Engine {
|
|
|
|
constructor() {
|
|
|
|
this.ticks = 0;
|
2015-08-25 09:16:58 +02:00
|
|
|
this.current_asteroid = new Asteroid();
|
|
|
|
this.asteroids = [this.current_asteroid];
|
2015-08-24 16:28:52 +02:00
|
|
|
this.resources = {
|
2015-08-24 16:42:43 +02:00
|
|
|
dust: 0,
|
2015-08-25 16:04:47 +02:00
|
|
|
stone: 0,
|
|
|
|
carbon: 0,
|
|
|
|
metal: 0
|
2015-08-24 16:28:52 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tick() {
|
|
|
|
this.ticks++;
|
|
|
|
}
|
|
|
|
|
|
|
|
update() {
|
|
|
|
document.querySelector('#time').innerHTML = this.ticks + ' hours';
|
2015-08-25 16:04:47 +02:00
|
|
|
document.querySelector('#asteroid-classification').innerHTML = this.current_asteroid.classification;
|
|
|
|
|
2015-08-24 16:28:52 +02:00
|
|
|
document.querySelector('#res-dust').innerHTML = this.resources.dust;
|
2015-08-25 16:04:47 +02:00
|
|
|
document.querySelector('#res-stone').innerHTML = this.resources.stone;
|
|
|
|
document.querySelector('#res-carbon').innerHTML = this.resources.carbon;
|
|
|
|
document.querySelector('#res-metal').innerHTML = this.resources.metal;
|
2015-08-24 16:28:52 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class Player {
|
|
|
|
constructor(engine) {
|
|
|
|
this.engine = engine;
|
|
|
|
}
|
|
|
|
|
|
|
|
mine() {
|
2015-08-25 09:16:58 +02:00
|
|
|
let type = this.engine.current_asteroid.mine_resource();
|
|
|
|
this.engine.resources[type]++;
|
2015-08-24 16:28:52 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-08-24 16:42:43 +02:00
|
|
|
class Asteroid {
|
2015-08-25 16:04:47 +02:00
|
|
|
constructor() {
|
|
|
|
// Determine the class
|
|
|
|
this.classification = [
|
|
|
|
'A', // small, stone, dust, random
|
|
|
|
'C', // dark carbon
|
|
|
|
'S', // stone
|
|
|
|
'X' // metal
|
|
|
|
][Helper.random_number(0, 4)];
|
|
|
|
}
|
|
|
|
|
2015-08-24 16:42:43 +02:00
|
|
|
mine_resource() {
|
2015-08-25 16:04:47 +02:00
|
|
|
let resources = {
|
|
|
|
'A': ['dust', 'dust', 'stone'],
|
|
|
|
'C': ['dust', 'carbon', 'carbon', 'carbon'],
|
|
|
|
'S': ['dust', 'stone', 'stone'],
|
|
|
|
'X': ['metal']
|
|
|
|
}[this.classification];
|
|
|
|
return resources[Helper.random_number(0, resources.length)];
|
2015-08-24 16:42:43 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-08-24 16:28:52 +02:00
|
|
|
var engine = new Engine();
|
|
|
|
var player = new Player(engine);
|
|
|
|
|
2015-08-24 15:40:02 +02:00
|
|
|
var bootstrap = function() {
|
2015-08-24 16:28:52 +02:00
|
|
|
setInterval(() => {
|
|
|
|
engine.tick();
|
|
|
|
engine.update();
|
|
|
|
}, 1000);
|
|
|
|
|
|
|
|
document.querySelector('#btn-mine').onclick = () => {
|
|
|
|
player.mine();
|
|
|
|
engine.update();
|
|
|
|
};
|
2015-08-25 16:04:47 +02:00
|
|
|
|
|
|
|
engine.update();
|
2015-08-24 15:40:02 +02:00
|
|
|
};
|