import * as obfuscater from "./obfuscator.js"; import * as generator from "./generator.js"; import * as marker from "./marker.js"; import * as flagger from "./flagger.js"; import * as placer from "./placer.js"; export class World { constructor(options) { this.mines = options.mines; this.width = options.width * 1; this.height = options.height * 1; this.isGenerated = false; this.isObfuscated = false; this.isMarked = false; this.data = Array.from(Array(this.width), () => new Array(this.height)); for (let x = 0; x < this.width; x++) { for (let y = 0; y < this.height; y++) { this.data[x][y] = { type: 1, flag: 0, mask: true }; } } } click(x, y, mode, player) { if (this.isGenerated) { if (mode === 2) { this.data = flagger.flag(x, y, this.data, player); } if (mode === 0) { this.data = placer.place(x, y, this.data); } } else { this.generate(x, y).mark(); this.data = placer.place(x, y, this.data); } } generate(x, y) { if (this.isGenerated) return console.log("Already Generated"); return generator.generate(x, y, this); } mark() { if (this.isMarked) return console.log("Already Marked!"); return marker.mark(this); } obfuscate() { if (this.isObfuscated) return console.log("already done"); const tempWorld = JSON.parse(JSON.stringify(this)); ; return obfuscater.obfuscate(tempWorld); } }