bp-prism-game
Version:
The BP Prism Game
59 lines • 6.32 kB
JavaScript
import { BaseClass } from '../base.class';
import { KEY, BLOCK_SIZE } from '../../gameboard/gameboard-constants';
import { ObservableTypeEnum } from '../../enum/observable-type.enum';
import { ImageLoadedEnum } from '../../enum/image-loaded.enum';
/**
* The Prism Base Class
*/
export class PrismBaseClass extends BaseClass {
/**
* Constructor
* @param gameService The GameService
* @param ctx The ctx
* @param guid The guid of the alien
*/
constructor(gameService, ctx, guid) {
super(gameService, ctx, guid);
/**
* moves
*/
this.moves = {
[KEY.P]: true
};
this.loadPrismBaseImages();
this.assetScale = {
x: 0.2,
y: 0.2
};
}
/**
* Load the alien Images
*/
loadPrismBaseImages() {
const imagesToLoad = [ImageLoadedEnum.prismBase];
imagesToLoad.map((key) => {
this.images.push(this.gameService.getImage(key));
this.isImageLoaded = true;
});
this.currentBase = this.images[0];
}
/**
* Press Key Stroke
* @param event The Key event
*/
processKeyStroke(event) {
const eventCode = event.stringData;
const keyDown = event.type === ObservableTypeEnum.keyDownEvent;
if (this.moves[eventCode] && keyDown) {
this.gameService.emitMasterObservableEvent({
type: ObservableTypeEnum.prismBlastLaunched,
assetCoordinateData: {
x: this.x,
y: this.y - BLOCK_SIZE
},
booleanData: true
});
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20tYmFzZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaXNtL3NyYy9saWIvYmFzZS9wcmlzbS1iYXNlL3ByaXNtLWJhc2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsU0FBUztJQVEzQzs7Ozs7T0FLRztJQUNILFlBQVksV0FBd0IsRUFBRSxHQUE2QixFQUFFLElBQVk7UUFDL0UsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFkaEM7O1dBRUc7UUFDSyxVQUFLLEdBQUc7WUFDZCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQVVBLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsQ0FBQyxFQUFFLEdBQUc7WUFDTixDQUFDLEVBQUUsR0FBRztTQUNZLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFvQixFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZ0JBQWdCLENBQUMsS0FBc0I7UUFDL0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFlBQVksQ0FBQztRQUUvRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0I7Z0JBQzNDLG1CQUFtQixFQUFFO29CQUNuQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ1QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVTtpQkFDYjtnQkFDWCxXQUFXLEVBQUUsSUFBSTthQUNDLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9nYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZUNsYXNzIH0gZnJvbSAnLi4vYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBLRVksIEJMT0NLX1NJWkUgfSBmcm9tICcuLi8uLi9nYW1lYm9hcmQvZ2FtZWJvYXJkLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9vYnNlcnZhYmxlLm1vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGVUeXBlRW51bSB9IGZyb20gJy4uLy4uL2VudW0vb2JzZXJ2YWJsZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgSUFzc2V0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlL2Fzc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBc3NldFNjYWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9hc3NldC1zY2FsZS5tb2RlJztcbmltcG9ydCB7IEltYWdlTG9hZGVkRW51bSB9IGZyb20gJy4uLy4uL2VudW0vaW1hZ2UtbG9hZGVkLmVudW0nO1xuXG4vKipcbiAqIFRoZSBQcmlzbSBCYXNlIENsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmlzbUJhc2VDbGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7XG4gIC8qKlxuICAgKiBtb3Zlc1xuICAgKi9cbiAgcHJpdmF0ZSBtb3ZlcyA9IHtcbiAgICBbS0VZLlBdOiB0cnVlXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBnYW1lU2VydmljZSBUaGUgR2FtZVNlcnZpY2VcbiAgICogQHBhcmFtIGN0eCBUaGUgY3R4XG4gICAqIEBwYXJhbSBndWlkIFRoZSBndWlkIG9mIHRoZSBhbGllblxuICAgKi9cbiAgY29uc3RydWN0b3IoZ2FtZVNlcnZpY2U6IEdhbWVTZXJ2aWNlLCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCwgZ3VpZDogbnVtYmVyKSB7XG4gICAgc3VwZXIoZ2FtZVNlcnZpY2UsIGN0eCwgZ3VpZCk7XG4gICAgdGhpcy5sb2FkUHJpc21CYXNlSW1hZ2VzKCk7XG5cbiAgICB0aGlzLmFzc2V0U2NhbGUgPSB7XG4gICAgICB4OiAwLjIsXG4gICAgICB5OiAwLjJcbiAgICB9IGFzIEFzc2V0U2NhbGVNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBhbGllbiBJbWFnZXNcbiAgICovXG4gIHByaXZhdGUgbG9hZFByaXNtQmFzZUltYWdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBpbWFnZXNUb0xvYWQgPSBbSW1hZ2VMb2FkZWRFbnVtLnByaXNtQmFzZV07XG5cbiAgICBpbWFnZXNUb0xvYWQubWFwKChrZXk6IEltYWdlTG9hZGVkRW51bSkgPT4ge1xuICAgICAgdGhpcy5pbWFnZXMucHVzaCh0aGlzLmdhbWVTZXJ2aWNlLmdldEltYWdlKGtleSkpO1xuICAgICAgdGhpcy5pc0ltYWdlTG9hZGVkID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudEJhc2UgPSB0aGlzLmltYWdlc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVzcyBLZXkgU3Ryb2tlXG4gICAqIEBwYXJhbSBldmVudCBUaGUgS2V5IGV2ZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgcHJvY2Vzc0tleVN0cm9rZShldmVudDogT2JzZXJ2YWJsZU1vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRDb2RlID0gZXZlbnQuc3RyaW5nRGF0YTtcbiAgICBjb25zdCBrZXlEb3duID0gZXZlbnQudHlwZSA9PT0gT2JzZXJ2YWJsZVR5cGVFbnVtLmtleURvd25FdmVudDtcblxuICAgIGlmICh0aGlzLm1vdmVzW2V2ZW50Q29kZV0gJiYga2V5RG93bikge1xuICAgICAgdGhpcy5nYW1lU2VydmljZS5lbWl0TWFzdGVyT2JzZXJ2YWJsZUV2ZW50KHtcbiAgICAgICAgdHlwZTogT2JzZXJ2YWJsZVR5cGVFbnVtLnByaXNtQmxhc3RMYXVuY2hlZCxcbiAgICAgICAgYXNzZXRDb29yZGluYXRlRGF0YToge1xuICAgICAgICAgIHg6IHRoaXMueCxcbiAgICAgICAgICB5OiB0aGlzLnkgLSBCTE9DS19TSVpFXG4gICAgICAgIH0gYXMgSUFzc2V0LFxuICAgICAgICBib29sZWFuRGF0YTogdHJ1ZVxuICAgICAgfSBhcyBPYnNlcnZhYmxlTW9kZWwpO1xuICAgIH1cbiAgfVxufVxuIl19