-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path18.bundle.js.map
1 lines (1 loc) · 15.9 KB
/
18.bundle.js.map
1
{"version":3,"sources":["webpack:///./src/games/template/meta.ts","webpack:///./src/core/ui/components/games/baseMainGameComponent.ts","webpack:///./src/games/template/assets.ts","webpack:///./src/games/template/components/mainComponent.ts","webpack:///./src/games/template/components/questionComponent.ts","webpack:///./src/games/template/levels.ts","webpack:///./src/games/template/logic.ts"],"names":[],"mappings":"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","file":"18.bundle.js","sourcesContent":["import {IGameMetaData} from \"core/logic\"\nimport {LevelOptions, ScoreOptions} from \"core/types\"\nimport {Images, Sounds} from \"./assets\"\nimport {MainComponent} from \"./components/mainComponent\"\nimport {levels} from \"./levels\"\nimport {Logic} from \"./logic\"\n\nexport const gameId = \"template\"\nconst scoreOptions: ScoreOptions = {\n scoreAnswer: 100,\n scoreBonus: 0,\n scoreBonusPerLevel: 5\n}\nconst levelOptions: LevelOptions = {\n levels,\n levelsSeqCounts: [{seqCount: 3, maxLevel: 100}]\n}\nexport const metaData: IGameMetaData = {\n gameId,\n title: \"Template\",\n logic: Logic,\n component: MainComponent,\n scoreOptions,\n levelOptions,\n darkBg: true,\n images: Images.data,\n sounds: Sounds.keys,\n atlasCount: 1,\n tutorialTaskCount: 3,\n size: {\n width: 2048,\n height: 1280,\n heightMin: 1152\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/meta.ts","import {CoreSounds} from \"core/assets\"\nimport {AssetUtl} from \"core/assets/assetUtl\"\nimport {Sys} from \"core/logic/sys\"\nimport {audioService} from \"core/services\"\nimport {GameComponentContext} from \"core/types\"\nimport {Signals} from \"core/ui/animations/signals\"\nimport {AnswerControlType} from \"core/ui/components/answers/answerControlType\"\nimport {GameComponent} from \"core/ui/components/games/gameComponent\"\nimport {Img} from \"core/ui/controls\"\nimport {screenSizeService} from \"core/ui/services/instances\"\nimport {Dev} from \"dev\"\nimport {toJS} from \"mobx\"\n\nconst bgLeftKey = \"bg_left\"\n\nconst introInterval = 2000\nconst introDelay = 300\n\nexport const durations = {\n introAnimationDelay: 100,\n introInterval,\n introDelay\n}\n\nexport abstract class BaseMainGameComponent<S = {}> extends GameComponent<{}, S> {\n\n statusOptions = {\n offset: 0,\n waitCompleteBeforeNewTask: false,\n }\n\n introOptions = {\n disableSound: false,\n runOnNewTaskAfter: false\n }\n\n initialState(): S {\n return {} as any\n }\n\n answersControl = AnswerControlType.None\n\n constructor(context: GameComponentContext) {\n super(context)\n context.uiService.rootComponent = this\n context.gameState = this.initialState()\n\n this.fixedToCamera = true\n this.onDestroy.addOnce(() => {\n this.context.uiService.mainComponent.onNewTask.dispose()\n this.context.uiService.mainComponent.onAnswer.dispose()\n audioService.stopAll()\n })\n\n this.onChangeForRun(\n x => screenSizeService.screenSize,\n x => {\n this.cameraOffset.y = screenSizeService.topOffset\n })\n\n }\n\n get cameraBottom() {\n const bottom = screenSizeService.height - this.cameraOffset.y\n return bottom\n }\n\n prepareDefaultIntroAnimation(delay = durations.introDelay) {\n let bgLeftOffset = 0\n let bgLeft: Img | undefined = undefined\n if (!screenSizeService.isPortrait && AssetUtl.checkImageKey(this.gameKey(bgLeftKey))) {\n bgLeft = this.addImage([bgLeftKey, [0, 0]])\n const width = -bgLeft.width + 2\n bgLeft.x = width\n bgLeftOffset = -width\n }\n this.cameraOffset.x = -screenSizeService.realLeftOffset + bgLeftOffset\n const tween = this.game.add.tween(this.cameraOffset).to(\n {x: 0}, durations.introInterval, Phaser.Easing.Cubic.InOut, false, delay\n )\n if (bgLeft) {\n tween.onComplete.addOnce(() => this.remove(bgLeft, true))\n }\n return tween\n }\n\n introAnimation(): { start: () => void, onComplete: Phaser.Signal } {\n const tween = this.prepareDefaultIntroAnimation()\n return tween\n }\n\n startIntro() {\n if (Sys.devMode && !Dev.devModeIntro) {\n this.context.uiService.mainComponent.onIntroComplete.dispatch()\n return Signals.memorize()\n }\n if (!this.introOptions.disableSound) {\n this.playSound(CoreSounds.intro, false, true)\n }\n const tween = this.introAnimation()\n const signal = Signals.bind(this.delay(durations.introAnimationDelay), () => {\n tween.start()\n return tween.onComplete\n })\n signal.addOnce(() => this.context.uiService.mainComponent.onIntroComplete.dispatch())\n this.disableInputOn(signal)\n return signal\n }\n\n onAfterInit() {\n this.initTaskRendering()\n }\n\n private initTaskRendering() {\n\n this.onChangeFor(() => this.gameState.lastAnswer, x => {\n this.context.uiService.mainComponent.onAnswer.dispatch(x)\n })\n this.onChangeFor(() => this.context.gameService.gameCycleService.state.levelTask.task,\n x => {\n if (this.statusOptions.waitCompleteBeforeNewTask) {\n this.disableInputOn(this.context.uiService.answerStatus.onAnimationComplete).addOnce(() => {\n this.callRenderNewTask(x)\n })\n } else {\n this.callRenderNewTask(x)\n }\n })\n this.callRenderNewTask(this.context.gameService.gameCycleService.state.levelTask.task)\n }\n\n private callRenderNewTask(task: any) {\n if (this.introOptions.runOnNewTaskAfter && this.isFirstTask) {\n this.context.uiService.mainComponent.onIntroComplete.addOnce(() => {\n this.context.uiService.mainComponent.onNewTask.dispatch(toJS(task))\n })\n } else {\n this.context.uiService.mainComponent.onNewTask.dispatch(toJS(task))\n }\n }\n\n playBackgroundLoop() {\n this.context.uiService.mainComponent.onIntroComplete.addOnce(() => this.playSound(\"bg\", true))\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/ui/components/games/baseMainGameComponent.ts","import {ImagesMetaData} from \"core/types\"\n\nexport module Sounds {\n export const keys: string[] = []\n}\n\nexport module Translations {\n}\n\nexport module Fonts {\n}\n\nexport module Images {\n export const bg = \"bg\"\n export const data: ImagesMetaData = {\n sprites: []\n }\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/assets.ts","import {Sizes} from \"core/ui/common/sizes\"\nimport {BaseMainGameComponent} from \"core/ui/components/games/baseMainGameComponent\"\nimport {OnInit} from \"core/ui/components/onInit\"\nimport {Btn} from \"core/ui/controls/btn\"\nimport {Images} from \"../assets\"\nimport {QuestionComponent} from './questionComponent'\nimport {Task} from '../logic'\n\nconst durations = {}\n\nexport class MainComponent extends BaseMainGameComponent implements OnInit {\n positions = Sizes.create({\n question: {x: 800, y: 400},\n })\n biPositions = Sizes.bi({\n left: {x: 1200, y: 400},\n right: {x: 1300, y: 400}\n }, {\n left: {x: 800, y: 800},\n right: {x: 900, y: 800}\n })\n\n bg = this.addImage(Images.bg)\n\n question = this.add(this.createComponent(QuestionComponent)).setPos(this.positions.question)\n\n createAnswerBtn(right: boolean) {\n return this.addAnswerBehavior(this.add(new Btn(right ? \"<\" : \">\", () => {\n })), right ? \"right\" : \"left\", {})\n }\n\n onInit(): void {\n this.createAnswerBtn(true).setBiPos(this.biPositions.left)\n this.createAnswerBtn(false).setBiPos(this.biPositions.right)\n this.startIntro()\n }\n\n onNewTask(task: Task) {\n\n }\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/components/mainComponent.ts","import {GameComponent} from \"core/ui/components/games/gameComponent\"\nimport {Txt} from \"core/ui/controls/txt\"\nimport {Task} from \"../logic\"\n\nexport class QuestionComponent extends GameComponent {\n\n text = this.add(new Txt(\"\"))\n\n onNewTask(task: Task): void {\n this.text.text = `${task.left} ? ${task.right}`\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/components/questionComponent.ts","import {createLevelsFromArray} from \"core/types/logic\"\n\nexport interface Level {\n numberLength: number\n}\n\nfunction level(numberLength: number): Level {\n return {numberLength}\n}\n\nexport const levels = createLevelsFromArray([\n level(3),\n level(4),\n level(5),\n])\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/levels.ts","import {GameLogic} from \"core/logic\"\nimport {Sys} from \"core/logic/sys\"\nimport {RandomGenerator} from \"core/utils\"\nimport {Level} from \"./levels\"\n\nexport type Task = {\n left: number\n right: number\n answers: string[]\n}\n\nexport class Logic extends GameLogic<Task, Level> {\n rng = new RandomGenerator()\n\n nextTask(level: Level) {\n const left = this.rng.int(10 * level.numberLength)\n const right = this.rng.int(10 * level.numberLength)\n const answers = [left > right ? \"left\" : \"right\"]\n\n const task: Task = {\n left,\n right,\n answers\n }\n return task\n }\n\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/games/template/logic.ts"],"sourceRoot":""}