UNPKG

bp-prism-game

Version:
81 lines 8.09 kB
import { ImageLoadedEnum } from '../enum/image-loaded.enum'; /** * The water service */ export class WaterService { /** * The constructor */ constructor(gameboard) { this.gameboard = gameboard; } /** * Determine the water value * @param dx The y coordinate of the water * @param dy The x coordinate of the water */ determineWaterValue(dy, dx) { let value = 0; value += this.determineNorthWaterValue(dy, dx); value += this.determineEastWaterValue(dy, dx); value += this.determineWestWaterValue(dy, dx); value += this.determineSouthWaterValue(dy, dx); return ImageLoadedEnum[`water${value}`]; } /** * is the asset water * @param value The value of the asset */ isWater(value, waterKey) { return value === 4 || value === 15 ? 0 : waterKey; } /** * Determine the north water value * @param dy The y coordinate of the water * @param dx The x coordinate of the water */ determineNorthWaterValue(dy, dx) { dy--; if (dy < 0) { return 1; } return this.isWater(this.gameboard[dy][dx], 1); } /** * Determine the east water value * @param dy The y coordinate of the water * @param dx The x coordinate of the water */ determineEastWaterValue(dy, dx) { dx++; if (dy < 0 || dy >= this.gameboard.length || dx >= this.gameboard[dy].length) { return 2; } return this.isWater(this.gameboard[dy][dx], 2); } /** * Determine the west water value * @param dy The y coordinate of the water * @param dx The x coordinate of the water */ determineWestWaterValue(dy, dx) { dx--; if (dx < 0 || dy >= this.gameboard.length || dy < 0) { return 8; } return this.isWater(this.gameboard[dy][dx], 8); } /** * Determine the south water value * @param dy The y coordinate of the water * @param dx The x coordinate of the water */ determineSouthWaterValue(dy, dx) { dy++; if (dy >= this.gameboard.length) { return 4; } return this.isWater(this.gameboard[dy][dx], 4); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaXNtL3NyYy9saWIvc2VydmljZS93YXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOztPQUVHO0lBQ0gsWUFBb0IsU0FBcUI7UUFBckIsY0FBUyxHQUFULFNBQVMsQ0FBWTtJQUFHLENBQUM7SUFFN0M7Ozs7T0FJRztJQUNJLG1CQUFtQixDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQy9DLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLEtBQUssSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLEtBQUssSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLEtBQUssSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sZUFBZSxDQUFDLFFBQVEsS0FBSyxFQUFFLENBQW9CLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNLLE9BQU8sQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDN0MsT0FBTyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssd0JBQXdCLENBQUMsRUFBVSxFQUFFLEVBQVU7UUFDckQsRUFBRSxFQUFFLENBQUM7UUFDTCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx1QkFBdUIsQ0FBQyxFQUFVLEVBQUUsRUFBVTtRQUNwRCxFQUFFLEVBQUUsQ0FBQztRQUNMLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzVFLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHVCQUF1QixDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3BELEVBQUUsRUFBRSxDQUFDO1FBQ0wsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHdCQUF3QixDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3JELEVBQUUsRUFBRSxDQUFDO1FBQ0wsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDL0IsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltYWdlTG9hZGVkRW51bSB9IGZyb20gJy4uL2VudW0vaW1hZ2UtbG9hZGVkLmVudW0nO1xuXG4vKipcbiAqIFRoZSB3YXRlciBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBXYXRlclNlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdhbWVib2FyZDogbnVtYmVyW11bXSkge31cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSB3YXRlciB2YWx1ZVxuICAgKiBAcGFyYW0gZHggVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgd2F0ZXJcbiAgICogQHBhcmFtIGR5IFRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHdhdGVyXG4gICAqL1xuICBwdWJsaWMgZGV0ZXJtaW5lV2F0ZXJWYWx1ZShkeTogbnVtYmVyLCBkeDogbnVtYmVyKTogSW1hZ2VMb2FkZWRFbnVtIHtcbiAgICBsZXQgdmFsdWUgPSAwO1xuICAgIHZhbHVlICs9IHRoaXMuZGV0ZXJtaW5lTm9ydGhXYXRlclZhbHVlKGR5LCBkeCk7XG4gICAgdmFsdWUgKz0gdGhpcy5kZXRlcm1pbmVFYXN0V2F0ZXJWYWx1ZShkeSwgZHgpO1xuICAgIHZhbHVlICs9IHRoaXMuZGV0ZXJtaW5lV2VzdFdhdGVyVmFsdWUoZHksIGR4KTtcbiAgICB2YWx1ZSArPSB0aGlzLmRldGVybWluZVNvdXRoV2F0ZXJWYWx1ZShkeSwgZHgpO1xuXG4gICAgcmV0dXJuIEltYWdlTG9hZGVkRW51bVtgd2F0ZXIke3ZhbHVlfWBdIGFzIEltYWdlTG9hZGVkRW51bTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpcyB0aGUgYXNzZXQgd2F0ZXJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgYXNzZXRcbiAgICovXG4gIHByaXZhdGUgaXNXYXRlcih2YWx1ZTogbnVtYmVyLCB3YXRlcktleTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDQgfHwgdmFsdWUgPT09IDE1ID8gMCA6IHdhdGVyS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgbm9ydGggd2F0ZXIgdmFsdWVcbiAgICogQHBhcmFtIGR5IFRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIHdhdGVyXG4gICAqIEBwYXJhbSBkeCBUaGUgeCBjb29yZGluYXRlIG9mIHRoZSB3YXRlclxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlcm1pbmVOb3J0aFdhdGVyVmFsdWUoZHk6IG51bWJlciwgZHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgZHktLTtcbiAgICBpZiAoZHkgPCAwKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pc1dhdGVyKHRoaXMuZ2FtZWJvYXJkW2R5XVtkeF0sIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgZWFzdCB3YXRlciB2YWx1ZVxuICAgKiBAcGFyYW0gZHkgVGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgd2F0ZXJcbiAgICogQHBhcmFtIGR4IFRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHdhdGVyXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZUVhc3RXYXRlclZhbHVlKGR5OiBudW1iZXIsIGR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGR4Kys7XG4gICAgaWYgKGR5IDwgMCB8fCBkeSA+PSB0aGlzLmdhbWVib2FyZC5sZW5ndGggfHwgZHggPj0gdGhpcy5nYW1lYm9hcmRbZHldLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNXYXRlcih0aGlzLmdhbWVib2FyZFtkeV1bZHhdLCAyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHdlc3Qgd2F0ZXIgdmFsdWVcbiAgICogQHBhcmFtIGR5IFRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIHdhdGVyXG4gICAqIEBwYXJhbSBkeCBUaGUgeCBjb29yZGluYXRlIG9mIHRoZSB3YXRlclxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlcm1pbmVXZXN0V2F0ZXJWYWx1ZShkeTogbnVtYmVyLCBkeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBkeC0tO1xuICAgIGlmIChkeCA8IDAgfHwgZHkgPj0gdGhpcy5nYW1lYm9hcmQubGVuZ3RoIHx8IGR5IDwgMCkge1xuICAgICAgcmV0dXJuIDg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNXYXRlcih0aGlzLmdhbWVib2FyZFtkeV1bZHhdLCA4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHNvdXRoIHdhdGVyIHZhbHVlXG4gICAqIEBwYXJhbSBkeSBUaGUgeSBjb29yZGluYXRlIG9mIHRoZSB3YXRlclxuICAgKiBAcGFyYW0gZHggVGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgd2F0ZXJcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lU291dGhXYXRlclZhbHVlKGR5OiBudW1iZXIsIGR4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGR5Kys7XG4gICAgaWYgKGR5ID49IHRoaXMuZ2FtZWJvYXJkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNXYXRlcih0aGlzLmdhbWVib2FyZFtkeV1bZHhdLCA0KTtcbiAgfVxufVxuIl19