forked from maxbogue/planetwars
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinternal.js
More file actions
67 lines (61 loc) · 1.88 KB
/
Copy pathinternal.js
File metadata and controls
67 lines (61 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const assign = require('lodash/assign');
const fs = require('fs');
const path = require('path');
const { Fleet, Planet } = require('./dataTypes');
const MAP_DIR = path.join(__dirname, 'maps');
const AI_DIR = path.join(__dirname, 'ai');
function loadMap(mapPath) {
let planets = [];
let fleets = [];
let contents = fs.readFileSync(mapPath, 'utf8');
let lines = contents.split('\n');
for (let line of lines) {
if (line.indexOf('#') >= 0) {
line = line.slice(0, line.indexOf('#'));
}
let tokens = line.split(/\s/);
if (tokens.length === 0) {
continue;
} else if (tokens[0] === 'P') {
let x = parseFloat(tokens[1]);
let y = parseFloat(tokens[2]);
let owner = parseInt(tokens[3]);
let ships = parseInt(tokens[4]);
let growth = parseInt(tokens[5]);
planets.push(new Planet(planets.length, x, y, owner, ships, growth));
} else if (tokens[0] === 'F') {
let owner = parseInt(tokens[1]);
let ships = parseInt(tokens[2]);
let source = parseInt(tokens[3]);
let destination = parseInt(tokens[4]);
let totalTurns = parseInt(tokens[5]);
let remainingTurns = parseInt(tokens[6]);
fleets.push(new Fleet(
owner, ships, source, destination, totalTurns, remainingTurns));
}
}
return [planets, fleets];
}
function loadAllMaps() {
let maps = {};
let mapFiles = fs.readdirSync(MAP_DIR);
for (let mapFile of mapFiles) {
let mapPath = path.join(MAP_DIR, mapFile);
let mapName = path.parse(mapPath).name;
maps[mapName] = loadMap(mapPath);
}
return maps;
}
function loadAllAIs() {
let ais = {};
let aiFiles = fs.readdirSync(AI_DIR);
for (let aiFile of aiFiles) {
let aiPath = path.join(AI_DIR, aiFile);
let attrs = path.parse(aiPath);
if (attrs.ext === '.js') {
assign(ais, require(aiPath));
}
}
return ais;
}
module.exports = { loadAllAIs, loadAllMaps };