From 1554795b3609195a40d437a4db62151ff6811008 Mon Sep 17 00:00:00 2001
From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com>
Date: Tue, 19 Mar 2024 17:47:45 +0100
Subject: [PATCH 01/13] Adaptive Tutor WIP
---
client/src/game/container.js | 4 +
client/src/services/data/concepts.js | 38 +++
client/src/views/game/Game.vue | 5 +-
.../views/game/components/menu/HeaderBar.vue | 6 +
.../game/components/tutor/AdaptiveTutor.vue | 217 ++++++++++++++++++
5 files changed, 269 insertions(+), 1 deletion(-)
create mode 100644 client/src/services/data/concepts.js
create mode 100644 client/src/views/game/components/tutor/AdaptiveTutor.vue
diff --git a/client/src/game/container.js b/client/src/game/container.js
index 6f258c4c8..d4b2e0f79 100644
--- a/client/src/game/container.js
+++ b/client/src/game/container.js
@@ -1,6 +1,7 @@
import * as PIXI from 'pixi.js-legacy'
import { Viewport } from 'pixi-viewport'
import Map from './map'
+import eventBus from '../eventBus'
import gameHelper from '../services/gameHelper'
import textureService from './texture'
@@ -133,10 +134,12 @@ class GameContainer {
zoomIn () {
this.viewport.zoomPercent(0.5, true)
+ eventBus.$emit('onZoom')
}
zoomOut () {
this.viewport.zoomPercent(-0.3, true)
+ eventBus.$emit('onZoom')
}
setupViewport (game) {
@@ -260,6 +263,7 @@ class GameContainer {
let zoomPercent = this.getViewportZoomPercentage()
this.map.refreshZoom(zoomPercent)
+ eventBus.$emit('onZoom')
}
setMode (mode, args) {
diff --git a/client/src/services/data/concepts.js b/client/src/services/data/concepts.js
new file mode 100644
index 000000000..494f96438
--- /dev/null
+++ b/client/src/services/data/concepts.js
@@ -0,0 +1,38 @@
+import GameHelper from '../gameHelper'
+import MENU_STATES from './menuStates'
+
+export default [
+ {
+ title: "Camera zoom",
+ text: "Zoom in and out with the MOUSE WHEEL or + and - keys.",
+ onZoom: function (concept) {
+ this.markLearned(concept, 10)
+ }
+ },
+ {
+ title: "Carriers",
+ text: "Carriers are used to transport Ships through hyperspace to reach other Stars. They can only be built at Stars and must hold a minimum of 1 Ship.\nCarriers are displayed as small ship icons with a circular coloured halo, much like stars. The number of ships that a carrier has will be displayed when zoomed in.\nClick on the carrier to view it in detail.",
+ onMenuRequested: function (concept, menuState) {
+ if (menuState.state === MENU_STATES.CARRIER_DETAIL) {
+ this.markLearned(concept, 40)
+ }
+ }
+ },
+ {
+ title: "Capital Star",
+ text: "The Capital Star is your home world. You can recognize as it has 9 points.\nSelect your Capital Star and view its details.",
+ onMenuRequested: function (concept, menuState) {
+ if (menuState.state === MENU_STATES.STAR_DETAIL) {
+ const starId = menuState.args
+ const star = GameHelper.getStarById(this.$store.state.game, starId)
+ if (star.homeStar) {
+ this.markLearned(concept)
+ }
+ }
+ }
+ },
+ {
+ title: "Bulk Upgrade",
+ text: "TODO."
+ },
+]
diff --git a/client/src/views/game/Game.vue b/client/src/views/game/Game.vue
index d4a460cdc..9d9da0f64 100644
--- a/client/src/views/game/Game.vue
+++ b/client/src/views/game/Game.vue
@@ -16,6 +16,7 @@
+
@@ -28,6 +29,7 @@ import GameContainer from './components/GameContainer.vue'
import MENU_STATES from '../../services/data/menuStates'
import MainBar from './components/menu/MainBar.vue'
import Chat from './components/inbox/Chat.vue'
+import AdaptiveTutor from './components/tutor/AdaptiveTutor.vue'
import GameApiService from '../../services/api/game'
import UserApiService from '../../services/api/user'
import GameHelper from '../../services/gameHelper'
@@ -42,7 +44,8 @@ export default {
'loading-spinner': LoadingSpinnerVue,
'game-container': GameContainer,
'main-bar': MainBar,
- 'chat': Chat
+ 'adaptive-tutor': AdaptiveTutor,
+ 'chat': Chat,
},
data () {
return {
diff --git a/client/src/views/game/components/menu/HeaderBar.vue b/client/src/views/game/components/menu/HeaderBar.vue
index c1adc84a4..52177dce7 100644
--- a/client/src/views/game/components/menu/HeaderBar.vue
+++ b/client/src/views/game/components/menu/HeaderBar.vue
@@ -42,6 +42,12 @@
Tutorial
+
+
+
diff --git a/client/src/views/game/components/tutor/AdaptiveTutor.vue b/client/src/views/game/components/tutor/AdaptiveTutor.vue
new file mode 100644
index 000000000..c07780cf1
--- /dev/null
+++ b/client/src/views/game/components/tutor/AdaptiveTutor.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
Learning Helper
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ concept.title }} ({{ concept.progress }}%)
+
+
+
+
+
+
+
+
+
{{ activeConcept.title }}
+
+
+
+
+
+
+
+
+
+
+
Already Learned
+
+
+
+
+
+
+
+
+
From ccbd9729e1474a39996dfba509d8bf57853c7aac Mon Sep 17 00:00:00 2001
From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com>
Date: Tue, 19 Mar 2024 20:24:37 +0100
Subject: [PATCH 02/13] track concepts used
---
client/src/services/data/concepts.js | 35 +++++++++++++++----
client/src/services/learningHelper.js | 19 ++++++++++
.../components/carrier/CombatCalculator.vue | 2 ++
.../views/game/components/menu/HeaderBar.vue | 6 ----
.../star/BulkInfrastructureUpgrade.vue | 3 ++
.../game/components/tutor/AdaptiveTutor.vue | 11 +++++-
6 files changed, 62 insertions(+), 14 deletions(-)
create mode 100644 client/src/services/learningHelper.js
diff --git a/client/src/services/data/concepts.js b/client/src/services/data/concepts.js
index 494f96438..71e089ed2 100644
--- a/client/src/services/data/concepts.js
+++ b/client/src/services/data/concepts.js
@@ -1,38 +1,59 @@
import GameHelper from '../gameHelper'
+import LearningHelper from '../learningHelper'
import MENU_STATES from './menuStates'
export default [
{
+ id: LearningHelper.id.CAMERA_ZOOM,
title: "Camera zoom",
text: "Zoom in and out with the MOUSE WHEEL or + and - keys.",
- onZoom: function (concept) {
- this.markLearned(concept, 10)
+ priority: 10,
+ onZoom: function (self) {
+ this.markLearned(self, 10)
}
},
{
+ id: LearningHelper.id.CARRIERS,
title: "Carriers",
text: "Carriers are used to transport Ships through hyperspace to reach other Stars. They can only be built at Stars and must hold a minimum of 1 Ship.\nCarriers are displayed as small ship icons with a circular coloured halo, much like stars. The number of ships that a carrier has will be displayed when zoomed in.\nClick on the carrier to view it in detail.",
- onMenuRequested: function (concept, menuState) {
+ priority: 20,
+ onMenuRequested: function (self, menuState) {
if (menuState.state === MENU_STATES.CARRIER_DETAIL) {
- this.markLearned(concept, 40)
+ this.markLearned(self, 40)
}
}
},
{
+ id: LearningHelper.id.CAPITAL_STAR,
title: "Capital Star",
text: "The Capital Star is your home world. You can recognize as it has 9 points.\nSelect your Capital Star and view its details.",
- onMenuRequested: function (concept, menuState) {
+ priority: 30,
+ onMenuRequested: function (self, menuState) {
if (menuState.state === MENU_STATES.STAR_DETAIL) {
const starId = menuState.args
const star = GameHelper.getStarById(this.$store.state.game, starId)
if (star.homeStar) {
- this.markLearned(concept)
+ this.markLearned(self)
}
}
}
},
{
+ id: LearningHelper.id.BULK_UPGRADE,
title: "Bulk Upgrade",
- text: "TODO."
+ text: "TODO.",
+ priority: 100,
+ onConceptUsed: function (self) {
+ this.markLearned(self)
+ }
+ },
+ {
+ id: LearningHelper.id.COMBAT_CALCULATOR,
+ title: "Combat Calculator",
+ text: "TODO.",
+ priority: 100,
+ onConceptUsed: function (self) {
+ this.markLearned(self)
+ }
},
]
diff --git a/client/src/services/learningHelper.js b/client/src/services/learningHelper.js
new file mode 100644
index 000000000..021f79de7
--- /dev/null
+++ b/client/src/services/learningHelper.js
@@ -0,0 +1,19 @@
+import eventBus from "../eventBus"
+
+const CONCEPT_IDS = {
+ BULK_UPGRADE: 'bulk-upgrade',
+ CAMERA_ZOOM: 'camera-zoom',
+ CAPITAL_STAR: 'capital-star',
+ CARRIERS: 'carriers',
+ COMBAT_CALCULATOR: 'combat-calculator',
+}
+
+class LearningHelper {
+ id = CONCEPT_IDS
+
+ conceptUsed(conceptId) {
+ eventBus.$emit('onConceptUsed', conceptId)
+ }
+}
+
+export default new LearningHelper()
\ No newline at end of file
diff --git a/client/src/views/game/components/carrier/CombatCalculator.vue b/client/src/views/game/components/carrier/CombatCalculator.vue
index 348d2dd53..732ff1ac0 100644
--- a/client/src/views/game/components/carrier/CombatCalculator.vue
+++ b/client/src/views/game/components/carrier/CombatCalculator.vue
@@ -100,6 +100,7 @@ import LoadingSpinnerVue from '../../../components/LoadingSpinner'
import MenuTitle from '../MenuTitle'
import FormErrorList from '../../../components/FormErrorList'
import GameHelper from '../../../../services/gameHelper'
+import LearningHelper from '../../../../services/learningHelper'
import CarrierApiService from '../../../../services/api/carrier'
import GameContainer from '../../../../game/container'
@@ -232,6 +233,7 @@ export default {
console.error(err)
}
+ LearningHelper.conceptUsed(LearningHelper.concept.COMBAT_CALCULATOR)
this.isLoading = false
}
}
diff --git a/client/src/views/game/components/menu/HeaderBar.vue b/client/src/views/game/components/menu/HeaderBar.vue
index 52177dce7..c1adc84a4 100644
--- a/client/src/views/game/components/menu/HeaderBar.vue
+++ b/client/src/views/game/components/menu/HeaderBar.vue
@@ -42,12 +42,6 @@
Tutorial
-
-
-
diff --git a/client/src/views/game/components/star/BulkInfrastructureUpgrade.vue b/client/src/views/game/components/star/BulkInfrastructureUpgrade.vue
index d7389558f..8667353a9 100644
--- a/client/src/views/game/components/star/BulkInfrastructureUpgrade.vue
+++ b/client/src/views/game/components/star/BulkInfrastructureUpgrade.vue
@@ -119,6 +119,7 @@ import MenuTitle from '../MenuTitle'
import FormErrorList from '../../../components/FormErrorList'
import starService from '../../../../services/api/star'
import GameHelper from '../../../../services/gameHelper'
+import LearningHelper from '../../../../services/learningHelper'
import AudioService from '../../../../game/audio'
import GameContainer from '../../../../game/container'
import BulkInfrastructureUpgradeStarTableVue from './BulkInfrastructureUpgradeStarTable'
@@ -275,6 +276,7 @@ export default {
this.errors = err.response.data.errors || []
}
+ LearningHelper.conceptUsed(LearningHelper.concept.BULK_UPGRADE)
this.hasChecked = false
this.isUpgrading = false
},
@@ -287,3 +289,4 @@ export default {
+../../../../services/data/learningHelper
\ No newline at end of file
diff --git a/client/src/views/game/components/tutor/AdaptiveTutor.vue b/client/src/views/game/components/tutor/AdaptiveTutor.vue
index c07780cf1..05f850722 100644
--- a/client/src/views/game/components/tutor/AdaptiveTutor.vue
+++ b/client/src/views/game/components/tutor/AdaptiveTutor.vue
@@ -1,5 +1,5 @@
-
+
@@ -71,10 +71,12 @@ export default {
},
mounted () {
// TODO: These event names should be global constants
+ eventBus.$on('onConceptUsed', this.onConceptUsed)
eventBus.$on('onMenuRequested', this.onMenuRequested)
eventBus.$on('onZoom', this.onZoom)
},
destroyed () {
+ eventBus.$off('onConceptUsed', this.onConceptUsed)
eventBus.$off('onMenuRequested', this.onMenuRequested)
eventBus.$off('onZoom', this.onZoom)
},
@@ -119,6 +121,13 @@ export default {
onMarkLearned () {
this.markLearned(this.activeConcept)
},
+ onConceptUsed (conceptId) {
+ for (const concept of this.CONCEPTS) {
+ if (concept.id === conceptId && !concept.learned && concept.onConceptUsed) {
+ concept.onConceptUsed.call(this, concept)
+ }
+ }
+ },
onMenuRequested (menuState) {
for (const concept of this.CONCEPTS) {
if (!concept.learned && concept.onMenuRequested) {
From 8ca5e3f74df2de3a1da36182f0023faf0cbef332 Mon Sep 17 00:00:00 2001
From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com>
Date: Tue, 19 Mar 2024 20:31:03 +0100
Subject: [PATCH 03/13] use LearningHelper directly
---
client/src/game/container.js | 8 ++++----
client/src/services/data/concepts.js | 12 ++++++------
client/src/services/learningHelper.js | 2 +-
.../views/game/components/tutor/AdaptiveTutor.vue | 9 ---------
4 files changed, 11 insertions(+), 20 deletions(-)
diff --git a/client/src/game/container.js b/client/src/game/container.js
index d4b2e0f79..be6f1d192 100644
--- a/client/src/game/container.js
+++ b/client/src/game/container.js
@@ -1,8 +1,8 @@
import * as PIXI from 'pixi.js-legacy'
import { Viewport } from 'pixi-viewport'
import Map from './map'
-import eventBus from '../eventBus'
import gameHelper from '../services/gameHelper'
+import LearningHelper from '../services/learningHelper'
import textureService from './texture'
class GameContainer {
@@ -134,12 +134,12 @@ class GameContainer {
zoomIn () {
this.viewport.zoomPercent(0.5, true)
- eventBus.$emit('onZoom')
+ LearningHelper.conceptUsed(LearningHelper.concept.CAMERA_ZOOM)
}
zoomOut () {
this.viewport.zoomPercent(-0.3, true)
- eventBus.$emit('onZoom')
+ LearningHelper.conceptUsed(LearningHelper.concept.CAMERA_ZOOM)
}
setupViewport (game) {
@@ -263,7 +263,7 @@ class GameContainer {
let zoomPercent = this.getViewportZoomPercentage()
this.map.refreshZoom(zoomPercent)
- eventBus.$emit('onZoom')
+ LearningHelper.conceptUsed(LearningHelper.concept.CAMERA_ZOOM)
}
setMode (mode, args) {
diff --git a/client/src/services/data/concepts.js b/client/src/services/data/concepts.js
index 71e089ed2..2b78ffa7c 100644
--- a/client/src/services/data/concepts.js
+++ b/client/src/services/data/concepts.js
@@ -4,16 +4,16 @@ import MENU_STATES from './menuStates'
export default [
{
- id: LearningHelper.id.CAMERA_ZOOM,
+ id: LearningHelper.concept.CAMERA_ZOOM,
title: "Camera zoom",
text: "Zoom in and out with the MOUSE WHEEL or + and - keys.",
priority: 10,
- onZoom: function (self) {
+ onConceptUsed: function (self) {
this.markLearned(self, 10)
}
},
{
- id: LearningHelper.id.CARRIERS,
+ id: LearningHelper.concept.CARRIERS,
title: "Carriers",
text: "Carriers are used to transport Ships through hyperspace to reach other Stars. They can only be built at Stars and must hold a minimum of 1 Ship.\nCarriers are displayed as small ship icons with a circular coloured halo, much like stars. The number of ships that a carrier has will be displayed when zoomed in.\nClick on the carrier to view it in detail.",
priority: 20,
@@ -24,7 +24,7 @@ export default [
}
},
{
- id: LearningHelper.id.CAPITAL_STAR,
+ id: LearningHelper.concept.CAPITAL_STAR,
title: "Capital Star",
text: "The Capital Star is your home world. You can recognize as it has 9 points.\nSelect your Capital Star and view its details.",
priority: 30,
@@ -39,7 +39,7 @@ export default [
}
},
{
- id: LearningHelper.id.BULK_UPGRADE,
+ id: LearningHelper.concept.BULK_UPGRADE,
title: "Bulk Upgrade",
text: "TODO.",
priority: 100,
@@ -48,7 +48,7 @@ export default [
}
},
{
- id: LearningHelper.id.COMBAT_CALCULATOR,
+ id: LearningHelper.concept.COMBAT_CALCULATOR,
title: "Combat Calculator",
text: "TODO.",
priority: 100,
diff --git a/client/src/services/learningHelper.js b/client/src/services/learningHelper.js
index 021f79de7..60b2eeb68 100644
--- a/client/src/services/learningHelper.js
+++ b/client/src/services/learningHelper.js
@@ -9,7 +9,7 @@ const CONCEPT_IDS = {
}
class LearningHelper {
- id = CONCEPT_IDS
+ concept = CONCEPT_IDS
conceptUsed(conceptId) {
eventBus.$emit('onConceptUsed', conceptId)
diff --git a/client/src/views/game/components/tutor/AdaptiveTutor.vue b/client/src/views/game/components/tutor/AdaptiveTutor.vue
index 05f850722..205cf044d 100644
--- a/client/src/views/game/components/tutor/AdaptiveTutor.vue
+++ b/client/src/views/game/components/tutor/AdaptiveTutor.vue
@@ -73,12 +73,10 @@ export default {
// TODO: These event names should be global constants
eventBus.$on('onConceptUsed', this.onConceptUsed)
eventBus.$on('onMenuRequested', this.onMenuRequested)
- eventBus.$on('onZoom', this.onZoom)
},
destroyed () {
eventBus.$off('onConceptUsed', this.onConceptUsed)
eventBus.$off('onMenuRequested', this.onMenuRequested)
- eventBus.$off('onZoom', this.onZoom)
},
methods: {
toggle () {
@@ -135,13 +133,6 @@ export default {
}
}
},
- onZoom () {
- for (const concept of this.CONCEPTS) {
- if (!concept.learned && concept.onZoom) {
- concept.onZoom.call(this, concept)
- }
- }
- }
},
computed: {
filteredConcepts () {
From 4d770fc5b668ba1495c1673dc2896ac1e2497555 Mon Sep 17 00:00:00 2001
From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com>
Date: Tue, 19 Mar 2024 22:54:40 +0100
Subject: [PATCH 04/13] lower distractions
---
client/src/services/data/concepts.js | 86 ++++++++++---------
client/src/services/learningHelper.js | 4 +-
.../game/components/tutor/AdaptiveTutor.vue | 84 +++++++++++++++++-
3 files changed, 128 insertions(+), 46 deletions(-)
diff --git a/client/src/services/data/concepts.js b/client/src/services/data/concepts.js
index 2b78ffa7c..510eaa395 100644
--- a/client/src/services/data/concepts.js
+++ b/client/src/services/data/concepts.js
@@ -4,56 +4,60 @@ import MENU_STATES from './menuStates'
export default [
{
- id: LearningHelper.concept.CAMERA_ZOOM,
- title: "Camera zoom",
- text: "Zoom in and out with the MOUSE WHEEL or + and - keys.",
- priority: 10,
- onConceptUsed: function (self) {
- this.markLearned(self, 10)
- }
+ id: LearningHelper.concept.CAMERA_ZOOM,
+ title: "Camera zoom",
+ text: "Zoom in and out with the MOUSE WHEEL or + and - keys.",
+ priority: 10,
+ onConceptUsed: function (self) {
+ this.markLearned(self, 20)
+ }
},
{
- id: LearningHelper.concept.CARRIERS,
- title: "Carriers",
- text: "Carriers are used to transport Ships through hyperspace to reach other Stars. They can only be built at Stars and must hold a minimum of 1 Ship.\nCarriers are displayed as small ship icons with a circular coloured halo, much like stars. The number of ships that a carrier has will be displayed when zoomed in.\nClick on the carrier to view it in detail.",
- priority: 20,
- onMenuRequested: function (self, menuState) {
- if (menuState.state === MENU_STATES.CARRIER_DETAIL) {
- this.markLearned(self, 40)
+ id: LearningHelper.concept.CARRIERS,
+ title: "Carriers",
+ text: "Carriers are used to transport Ships through hyperspace to reach other Stars. They can only be built at Stars and must hold a minimum of 1 Ship.\nCarriers are displayed as small ship icons with a circular coloured halo, much like stars. The number of ships that a carrier has will be displayed when zoomed in.\nClick on the carrier to view it in detail.",
+ priority: 20,
+ pre: [LearningHelper.concept.CAMERA_ZOOM],
+ onMenuRequested: function (self, menuState) {
+ if (menuState.state === MENU_STATES.CARRIER_DETAIL) {
+ this.markLearned(self, 40)
+ }
}
- }
},
{
- id: LearningHelper.concept.CAPITAL_STAR,
- title: "Capital Star",
- text: "The Capital Star is your home world. You can recognize as it has 9 points.\nSelect your Capital Star and view its details.",
- priority: 30,
- onMenuRequested: function (self, menuState) {
- if (menuState.state === MENU_STATES.STAR_DETAIL) {
- const starId = menuState.args
- const star = GameHelper.getStarById(this.$store.state.game, starId)
- if (star.homeStar) {
- this.markLearned(self)
- }
+ id: LearningHelper.concept.CAPITAL_STAR,
+ title: "Capital Star",
+ text: "The Capital Star is your home world. You can recognize as it has 9 points.\nSelect your Capital Star and view its details.",
+ priority: 20,
+ pre: [LearningHelper.concept.CAMERA_ZOOM],
+ onMenuRequested: function (self, menuState) {
+ if (menuState.state === MENU_STATES.STAR_DETAIL) {
+ const starId = menuState.args
+ const star = GameHelper.getStarById(this.$store.state.game, starId)
+ if (star.homeStar) {
+ this.markLearned(self)
+ }
+ }
}
- }
},
{
- id: LearningHelper.concept.BULK_UPGRADE,
- title: "Bulk Upgrade",
- text: "TODO.",
- priority: 100,
- onConceptUsed: function (self) {
- this.markLearned(self)
- }
+ id: LearningHelper.concept.BULK_UPGRADE,
+ title: "Bulk Upgrade",
+ text: "Improve your infrastructure by spending your budget on the cheapest expansions first.\nAccess Bulk Upgrade from the menu / sidebar or using the b keyboard shortcut.",
+ priority: 100,
+ pre: [LearningHelper.concept.CARRIERS],
+ onConceptUsed: function (self) {
+ this.markLearned(self)
+ }
},
{
- id: LearningHelper.concept.COMBAT_CALCULATOR,
- title: "Combat Calculator",
- text: "TODO.",
- priority: 100,
- onConceptUsed: function (self) {
- this.markLearned(self)
- }
+ id: LearningHelper.concept.COMBAT_CALCULATOR,
+ title: "Combat Calculator",
+ text: "Use this handy tool to predict the outcome of combat based on the weapon levels and numbers of the Attacker and Defender.\nAccess the Combat Calculator from the menu / sidebar, using the c keyboard shortcut or from the Carrier detail window.",
+ priority: 100,
+ pre: [LearningHelper.concept.CARRIERS],
+ onConceptUsed: function (self) {
+ this.markLearned(self)
+ }
},
]
diff --git a/client/src/services/learningHelper.js b/client/src/services/learningHelper.js
index 60b2eeb68..71be786c7 100644
--- a/client/src/services/learningHelper.js
+++ b/client/src/services/learningHelper.js
@@ -1,4 +1,4 @@
-import eventBus from "../eventBus"
+import eventBus from '../eventBus'
const CONCEPT_IDS = {
BULK_UPGRADE: 'bulk-upgrade',
@@ -16,4 +16,4 @@ class LearningHelper {
}
}
-export default new LearningHelper()
\ No newline at end of file
+export default new LearningHelper()
diff --git a/client/src/views/game/components/tutor/AdaptiveTutor.vue b/client/src/views/game/components/tutor/AdaptiveTutor.vue
index 205cf044d..b4ed677bf 100644
--- a/client/src/views/game/components/tutor/AdaptiveTutor.vue
+++ b/client/src/views/game/components/tutor/AdaptiveTutor.vue
@@ -19,7 +19,7 @@