Spaces:
Running
Running
| import tile from './tile'; | |
| import * as CONST from '../../constants'; | |
| export default class edge extends tile { | |
| constructor (options) { | |
| options.type = CONST.T_EDGE; | |
| options.layerDepth = CONST.DEPTH_EDGE; | |
| super(options); | |
| } | |
| check () { | |
| if (!super.check()) return false; | |
| if (this.cell.x != 127 && this.cell.y != 127) return false; | |
| return true; | |
| } | |
| hide (type) { | |
| if (this.sprite.length > 0) { | |
| this.sprite.forEach((sprite) => { | |
| if (!sprite.visible || (type && sprite.subtype != type)) return; | |
| sprite.setVisible(false); | |
| }); | |
| } | |
| } | |
| show (type) { | |
| if (this.sprite.length > 0) { | |
| this.sprite.forEach((sprite) => { | |
| if (sprite.visible || (type && sprite.subtype != type)) return; | |
| sprite.setVisible(true); | |
| }); | |
| } | |
| } | |
| calculatePosition () { | |
| this.x = this.cell.position.topLeft.x; | |
| this.y = this.cell.position.topLeft.y; | |
| if (this.cell.z < this.cell.scene.city.waterLevel && ([CONST.TERRAIN_SUBMERGED, CONST.TERRAIN_SHORE].includes(this.cell.water.type))) | |
| this.y -= this.cell.position.seaLevel; | |
| } | |
| create () { | |
| this.calculatePosition(); | |
| let sprites = []; | |
| let waterDepth = this.cell.scene.city.waterLevel - this.cell.z; | |
| // water | |
| if (this.cell.water.type != CONST.TERRAIN_DRY) { | |
| for (let i = 0; i < waterDepth; i++) { | |
| let offset = Math.abs((CONST.LAYER_OFFSET * i) - this.cell.position.seaLevel); | |
| let sprite = this.cell.scene.add.sprite(this.x, this.y + offset, CONST.TILE_ATLAS).play(this.get(284).image); | |
| sprite.type = this.type; | |
| sprite.subtype = CONST.TERRAIN_WATER; | |
| sprite.cell = this.cell; | |
| sprite.setScale(CONST.SCALE); | |
| sprite.setOrigin(CONST.ORIGIN_X, CONST.ORIGIN_Y); | |
| sprite.setDepth(this.depth.cell + this.depth.layer + this.depth.tile + this.depth.additional + (i * 2)); | |
| this.cell.tiles.addSprite(sprite, this.type); | |
| sprites.push(sprite); | |
| } | |
| } | |
| // bedrock | |
| for (let i = 0; i < this.cell.z; i++) { | |
| let offset = CONST.LAYER_OFFSET * (i + 1); | |
| if (this.cell.water.type != CONST.TERRAIN_DRY) | |
| offset = CONST.LAYER_OFFSET * (i + waterDepth + 1); | |
| let sprite = this.cell.scene.add.sprite(this.x, this.y + offset, CONST.TILE_ATLAS, this.get(269).textures[0]); | |
| sprite.type = this.type; | |
| sprite.subtype = CONST.TERRAIN_BEDROCK; | |
| sprite.cell = this.cell; | |
| sprite.setScale(CONST.SCALE); | |
| sprite.setOrigin(CONST.ORIGIN_X, CONST.ORIGIN_Y); | |
| sprite.setDepth(this.depth.cell + this.depth.layer + this.depth.tile + this.depth.additional + (this.cell.z - i * 2) - 32); | |
| this.cell.tiles.addSprite(sprite, this.type); | |
| sprites.push(sprite); | |
| } | |
| this.sprite = sprites; | |
| } | |
| } |