From 5cc1c6e6c0fa9e7ca0b14c0fa8930a75b32b2751 Mon Sep 17 00:00:00 2001 From: Paolo Brasolin <paolo.brasolin@eurac.edu> Date: Thu, 10 Mar 2022 11:06:42 +0100 Subject: [PATCH] refactor: #fe attach foes to scene --- frontend/src/js/fight_scene.js | 21 ++++++++------------- frontend/src/js/{enemy.js => foe.js} | 10 +++++----- 2 files changed, 13 insertions(+), 18 deletions(-) rename frontend/src/js/{enemy.js => foe.js} (94%) diff --git a/frontend/src/js/fight_scene.js b/frontend/src/js/fight_scene.js index 08cbaee..b8f3c8b 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 7fe3af9..ea8619f 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; -- GitLab