diff --git a/frontend/src/js/fight_scene.js b/frontend/src/js/fight_scene.js index 08cbaeef7c3c60f20f9ddced56d67a70f83b74a3..b8f3c8b60c4b3c319f70ef4abda3862d6f9d02e8 100644 --- a/frontend/src/js/fight_scene.js +++ b/frontend/src/js/fight_scene.js @@ -1,15 +1,13 @@ import Phaser from "phaser"; -import enemy from "./enemy"; +import Foe from "./foe"; import backend from "./backend"; import levenshtein from "damerau-levenshtein"; const fightScene = new Phaser.Scene("fight"); -let onscreenEnemies = []; -window.onscreenEnemies = onscreenEnemies; - +fightScene.foes = []; fightScene.preload = preload; fightScene.create = create; @@ -217,7 +215,7 @@ function initAndBindGuessPreview(scene) { event.keyCode === Phaser.Input.Keyboard.KeyCodes.ENTER && textEntry.text.length > 0 ) { - submitTranscription(textEntry.text); + submitTranscription(textEntry.text, scene); textEntry.text = textEntry.text.substr(0, 0); } }); @@ -256,7 +254,7 @@ function shootSpear(enemy, hit, scene = fightScene) { message.destroy(); }); // TODO: ew. - window.onscreenEnemies.splice(window.onscreenEnemies.indexOf(enemy), 1); + scene.foes.splice(scene.foes.indexOf(enemy), 1); } let curve = new Phaser.Curves.QuadraticBezier( @@ -327,13 +325,13 @@ function shootSpear(enemy, hit, scene = fightScene) { spear.anims.play("spearAni"); } -function submitTranscription(transcription) { - if (window.onscreenEnemies.length < 1) return; +function submitTranscription(transcription, scene) { + if (scene.foes.length < 1) return; let similarity = 0; let match = null; - window.onscreenEnemies.forEach((foe) => { + scene.foes.forEach((foe) => { const s = levenshtein( transcription.toLowerCase(), foe.word.ocr_transcript.toLowerCase(), @@ -368,11 +366,8 @@ function gameStart(scene) { } function dispatchEnemy(scene) { - let e = new enemy(scene); - window.onscreenEnemies.push(e); - backend.post("GetImage", {}).then(function (response) { - e.word = response.data; + let e = new Foe(scene, response.data); scene.textures.addBase64(`WORD-${response.data.id}`, response.data.image); scene.textures.once( diff --git a/frontend/src/js/enemy.js b/frontend/src/js/foe.js similarity index 94% rename from frontend/src/js/enemy.js rename to frontend/src/js/foe.js index 7fe3af9f3f8dd6f21cf40a7249f4fc5c250c23da..ea8619f6e07ba34b6237d3b9d7fd92ba496a4265 100644 --- a/frontend/src/js/enemy.js +++ b/frontend/src/js/foe.js @@ -1,11 +1,11 @@ let enemies = ["bear", "wolf", "deer", "boar"]; let enemiesSpeed = 50000; -class enemy { - word = null; - - constructor(scene) { +class Foe { + constructor(scene, word) { this.scene = scene; + this.scene.foes.push(this); + this.word = word; } run(callback) { @@ -72,4 +72,4 @@ function setAnimation(obj, idleKey) { obj.play({ key: idleKey, repeat: -1 }); } -export default enemy; +export default Foe;