Spaces:
Running
Running
import tile from './tile'; | |
import * as CONST from '../../constants'; | |
export default class building extends tile { | |
constructor (options) { | |
options.type = CONST.T_BUILDING; | |
options.layerDepth = CONST.DEPTH_BUILDING; | |
super(options); | |
} | |
check () { | |
if (!super.check()) return false; | |
if (![1,2,3,4,5,6,7,8,9,10,11,12,13,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,153,154,155,156,157, | |
158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, | |
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193, | |
194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211, | |
212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229, | |
230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, | |
248,249,250,251,252,253,254,255].includes(this.id)) | |
return false; | |
return true; | |
} | |
get (id) { | |
let tile = super.get(id); | |
//if (!this.flip(tile)) this.props.flip = true; | |
return tile; | |
} | |
position () { | |
this.x = this.cell.position.center.x + this.props.offsetX; | |
this.y = this.cell.position.top.y - this.cell.position.seaLevel; | |
} | |
create () { | |
if (!this.cell.position.corners.key || !this.props.draw) return; | |
if (this.tile.size == 2) this.depth.additional = 1; | |
if (this.tile.size == 3) this.depth.additional = 32; | |
if (this.tile.size == 4) this.depth.additional = 32; | |
super.create(); | |
if (this.props.flip) this.sprite.setFlipX(true); | |
this.sprite.setOrigin(0.5, 1); | |
} | |
logic () { | |
if (!this.tile.logic) return; | |
if (this.tile.logic.create) this[this.tile.logic.create](); | |
} | |
// rotate pier sections to match orientation with the crane onshore | |
pier () { | |
let cellX = 0; | |
let cellY = 0; | |
let pierDirection; | |
//let pierCrane = false; | |
this.props.flip = false; | |
//if (this.id == 224) pierCrane = true; | |
// check tiles in each direction to determine pier orientation | |
if (this.id == 223) { | |
// north | |
for (let x = 1; x < 5; x++) { | |
cellX = this.cell.x + x; | |
cellY = this.cell.y; | |
if (this.map.cells[cellX][cellY].tiles.getId(CONST.T_BUILDING) == 224) { | |
pierDirection = CONST.D_NORTH; | |
continue; | |
} | |
} | |
// west | |
for (let y = 1; y < 5; y++) { | |
cellX = this.cell.x; | |
cellY = this.cell.y + y; | |
if (this.map.cells[cellX][cellY].tiles.getId(CONST.T_BUILDING) == 224) { | |
pierDirection = CONST.D_WEST; | |
continue; | |
} | |
} | |
// south | |
for (let x = -5; x < 0; x++) { | |
cellX = this.cell.x + x; | |
cellY = this.cell.y; | |
if (this.map.cells[cellX][cellY].tiles.getId(CONST.T_BUILDING) == 224) { | |
pierDirection = CONST.D_SOUTH; | |
continue; | |
} | |
} | |
// east | |
for (let y = -5; y < 0; y++) { | |
cellX = this.cell.x; | |
cellY = this.cell.y + y; | |
if (this.map.cells[cellX][cellY].tiles.getId(CONST.T_BUILDING) == 224) { | |
pierDirection = CONST.D_EAST; | |
continue; | |
} | |
} | |
} | |
// rotate tile | |
if ((pierDirection == CONST.D_EAST || pierDirection == CONST.D_WEST) && [1,3].includes(this.city.cameraRotation)) | |
this.props.flip = true; | |
if ((pierDirection == CONST.D_NORTH || pierDirection == CONST.D_SOUTH) && [0,2].includes(this.city.cameraRotation)) | |
this.props.flip = true; | |
} | |
} |