improcket/js/game/edit.mjs
2018-03-05 00:57:33 +00:00

66 lines
1.3 KiB
JavaScript

import * as game from './index.mjs';
import * as graphics from '../graphics/index.mjs';
import * as world from '../world/index.mjs';
import * as consts from '../consts.mjs';
export let tiles = new Map();
export let width = 0;
export let height = 0;
export let position = [0, 0];
export let bounds = [0, 0, 0, 0];
export let currentModule = null;
export function init() {
let ship = world.playerShip;
let modules = ship.modules;
let margin = consts.EDIT_MARGIN;
modules.forEach(m => {
let pos = [m.x, m.y];
tiles.set(posId(...pos), new Tile(...pos, m));
});
let [sx, ex, sy, ey] = getBoundaries();
[width, height] = [ex - sx + margin * 2 + 1, ey - sy + margin * 2 + 1];
position = [sx - margin, sy - margin];
let neededZoom = graphics.canvas.width / (Math.max(width, height) + 10);
graphics.changePerspective('planet', 0, -5);
graphics.setZoom(neededZoom);
}
export function end() {
}
export function getTile(x, y) {
let id = posId(x, y);
if (!tiles.has(id))
tiles.set(id, new Tile(x, y, null));
return tiles.get(id);
}
function posId(x, y) {
return `${x}.${y}`;
}
function getBoundaries() {
return [0, 0, 0, 2];
}
class Tile {
constructor(x, y, module) {
this.module = module;
this.x = x;
this.y = y;
}
get valid() {
return true;
}
get drawPos() {
let [px, py] = pos;
return [this.x + px, this.y + py];
}
}