Spaces:
Build error
Build error
File size: 4,392 Bytes
670a607 |
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
// methods
import Init from './Init.js'
import Reset from './Reset.js';
import CreateChess from './chess/CreateChess.js';
import Fill from './Fill.js';
import BreakMatch3 from './BreakMatch3.js';
import PreTest from './PreTest.js';
import GetAllMatch from './match/GetAllMatch.js';
const GetValue = Phaser.Utils.Objects.GetValue;
class Board {
constructor(bejeweled, config) {
var scene = bejeweled.scene;
this.scene = scene;
this.rexBoard = bejeweled.rexBoard;
this.board = this.rexBoard.add.board(GetValue(config, 'board', undefined));
this.match = this.rexBoard.add.match(GetValue(config, 'match', undefined));
this.match.setBoard(this.board);
this.initSymbolsMap = GetValue(config, 'initMap', undefined); // 2d array
// configuration of chess
this.chessTileZ = GetValue(config, 'chess.tileZ', 1);
this.candidateSymbols = GetValue(config, 'chess.symbols', undefined);
this.chessCallbackScope = GetValue(config, 'chess.scope', undefined);
this.chessCreateCallback = GetValue(config, 'chess.create', undefined);
this.chessMoveTo = GetValue(config, 'chess.moveTo', {});
this.chessMoveTo.occupiedTest = true;
// Mask & layer
this.rowMaskGameObject = undefined;
this.rowMask = undefined;
this.layer = undefined;
if (GetValue(config, 'mask', false)) {
this.resetBoardMask();
}
if (GetValue(config, 'layer', false)) {
this.enableBoardLayer();
}
}
shutdown() {
this.match.destroy();
this.board.destroy();
if (this.rowMaskGameObject) {
this.layer.setMask();
this.rowMaskGameObject.destroy();
this.rowMask.destroy();
}
if (this.layer) {
this.layer.destroy();
}
this.board = undefined;
this.match = undefined;
this.initSymbolsMap = undefined;
this.candidateSymbols = undefined;
this.chessCallbackScope = undefined;
this.chessCreateCallback = undefined;
this.chessMoveTo = undefined;
return this;
}
destroy() {
this.shutdown();
return this;
}
setBoardWidth(width) {
this.board.setBoardWidth(width);
return this;
}
setBoardHeight(height) {
this.board.setBoardHeight(height);
return this;
}
setInitSymbolsMap(map) {
this.initSymbolsMap = map; // 2d array
return this;
}
enableBoardLayer() {
if (!this.layer) {
this.layer = this.scene.add.layer();
}
return this;
}
resetBoardMask() {
if (!this.rowMaskGameObject) {
this.rowMaskGameObject = this.scene.make.graphics().setVisible(false);
this.rowMask = this.rowMaskGameObject.createGeometryMask().setInvertAlpha();
this.enableBoardLayer();
this.layer.setMask(this.rowMask);
}
// Rectangle of upper rows
var board = this.board;
var grid = board.grid;
var x = grid.x - (grid.width / 2);
var y = grid.y - (grid.height / 2);
var width = board.width * grid.width;
var height = (board.height / 2) * grid.height;
this.rowMaskGameObject.fillRect(x, y, width, height);
return this;
}
worldXYToChess(worldX, worldY) {
return this.board.worldXYToChess(worldX, worldY, this.chessTileZ);
}
tileXYToChess(tileX, tileY) {
return this.board.tileXYZToChess(tileX, tileY, this.chessTileZ);
}
getNeighborChessAtAngle(chess, angle) {
var direction = this.board.angleSnapToDirection(chess, angle);
return this.getNeighborChessAtDirection(chess, direction);
}
getNeighborChessAtDirection(chess, direction) {
var neighborTileXY = this.board.getNeighborTileXY(chess, direction);
var neighborChess = (neighborTileXY) ?
this.board.tileXYZToChess(neighborTileXY.x, neighborTileXY.y, this.chessTileZ) :
null;
return neighborChess;
}
}
var methods = {
init: Init,
reset: Reset,
createChess: CreateChess,
fill: Fill,
breakMatch3: BreakMatch3,
preTest: PreTest,
getAllMatch: GetAllMatch,
}
Object.assign(
Board.prototype,
methods
);
export default Board; |