Skip to content

Commit 7c67c15

Browse files
committed
Add score variable
1 parent 2851ce1 commit 7c67c15

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

src/components/TodoList.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<p>Level: {{ levels.toLocaleString("en-US") }}</p>
44
<p>XP: {{ xps.toLocaleString("en-US") }}</p>
55
<p>Daily Streak: {{ dailyStreaks.toLocaleString("en-US") }}</p>
6+
<p>Score: {{ scores.toLocaleString("en-US") }}</p>
67
<!--show circular progress bar filled with level progress--><ve-progress
78
:progress="progresses"
89
>Level {{ levels.toLocaleString("en-US") }}</ve-progress
@@ -99,6 +100,9 @@ export default defineComponent({
99100
progresses() {
100101
return store.getters.getProgress; //get current progress
101102
},
103+
scores() {
104+
return store.getters.getScore; //get current score
105+
},
102106
dailyStreaks() {
103107
return store.getters.getDailyStreak; //get current daily streak
104108
},

src/store/index.ts

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default createStore({
99
level: 1 as number, //set level to 1 as total XP is 0 when state is created
1010
xp: 0 as number,
1111
progress: 0 as number,
12+
score: 0 as number, //set score to 0 when state is created
1213
dailyStreak: 0 as number, //set daily streak to 0 and last completion date to undefined when state is created
1314
lastCompletionDate: undefined as string | undefined, //last completion date in YYYY-MM-DD string
1415
},
@@ -18,6 +19,7 @@ export default createStore({
1819
getXp: (state) => state.user.xp, //get user XP
1920
getLevel: (state) => state.user.level, //get user level
2021
getProgress: (state) => state.user.progress, //get user level progress
22+
getScore: (state) => state.user.score, //get user score
2123
getDailyStreak: (state) => state.user.dailyStreak, //get user daily streak
2224
getLastCompletionDate: (state) => state.user.lastCompletionDate, //get user last completion date
2325
},
@@ -38,6 +40,7 @@ export default createStore({
3840
let streakMultiplier: number; //calculate task streak XP multiplier based on task streak, if task is completed before the due date then the streak increases else if the task is completed overdue (after the due date) reset task streak to 0
3941
let repeatMultiplier: number; //calculate task repetition XP multiplier based on task repetition occurrence and task repetition frequency
4042
let dailyStreakMultiplier: number; //calculate daily streak XP multiplier based on daily streak
43+
let levelMultiplier: number; //calculate level score multiplier based on user level
4144
//calculate task repetition XP multiplier
4245
if (task.repeatFrequency == 1) {
4346
//if task repetition is daily
@@ -171,7 +174,39 @@ export default createStore({
171174
} else {
172175
streakMultiplier = 3.8; //3.8x task streak XP multiplier from 10000 task streak
173176
}
174-
//calculate amount of XP earned when task is completed
177+
//calculate level score multiplier based on user level
178+
if (state.user.level == 1) {
179+
levelMultiplier = 1; //1x level score multiplier if user level is 1
180+
} else if (state.user.level < 3) {
181+
levelMultiplier = 1 + 0.1 * (state.user.level - 1); //1x level score multiplier from level 1 plus 0.1x level score multiplier for each level
182+
} else if (state.user.level < 5) {
183+
levelMultiplier = 1.2 + 0.05 * (state.user.level - 3); //1.2x level score multiplier from level 3 plus 0.05x level score multiplier for each level
184+
} else if (state.user.level < 10) {
185+
levelMultiplier = 1.3 + 0.04 * (state.user.level - 5); //1.3x level score multiplier from level 5 plus 0.04x level score multiplier for each level
186+
} else if (state.user.level < 20) {
187+
levelMultiplier = 1.5 + 0.03 * (state.user.level - 10); //1.5x level score multiplier from level 1 plus 0.03x level score multiplier for each level
188+
} else if (state.user.level < 50) {
189+
levelMultiplier = 1.8 + 0.02 * (state.user.level - 20); //1.8x level score multiplier from level 20 plus 0.02x level score multiplier for each level
190+
} else if (state.user.level < 100) {
191+
levelMultiplier = 2.4 + 0.012 * (state.user.level - 50); //2.4x level score multiplier from level 50 plus 0.012x level score multiplier for each level
192+
} else if (state.user.level < 200) {
193+
levelMultiplier = 3 + 0.01 * (state.user.level - 100); //3x level score multiplier from level 100 plus 0.01x level score multiplier for each level
194+
} else if (state.user.level < 300) {
195+
levelMultiplier = 4 + 0.005 * (state.user.level - 200); //4x level score multiplier from level 200 plus 0.005x level score multiplier for each level
196+
} else if (state.user.level < 500) {
197+
levelMultiplier = 4.5 + 0.0025 * (state.user.level - 300); //4.5x level score multiplier from level 300 plus 0.0025x level score multiplier for each level
198+
} else if (state.user.level < 1000) {
199+
levelMultiplier = 5 + 0.002 * (state.user.level - 500); //5x level score multiplier from level 500 plus 0.002x level score multiplier for each level
200+
} else if (state.user.level < 2000) {
201+
levelMultiplier = 6 + 0.001 * (state.user.level - 1000); //6x level score multiplier from level 1000 plus 0.001x level score multiplier for each level
202+
} else if (state.user.level < 5000) {
203+
levelMultiplier = 7 + 0.0005 * (state.user.level - 2000); //7x level score multiplier from level 2000 plus 0.0005x level score multiplier for each level
204+
} else if (state.user.level < 10000) {
205+
levelMultiplier = 8.5 + 0.0002 * (state.user.level - 5000); //8.5x level score multiplier from level 5000 plus 0.0002x level score multiplier for each level
206+
} else {
207+
levelMultiplier = 9.5; //9.5 level score multiplier from level 10000
208+
}
209+
//calculate amount of XP earned and points earned when task is completed
175210
const xp: number = Math.max(
176211
Math.floor(
177212
task.difficulty *
@@ -184,7 +219,22 @@ export default createStore({
184219
1
185220
); //get at least 1 XP when the task is completed
186221
state.user.xp += xp; //get amount of XP earned based on task difficulty, task priority, task due date, task repetition, task streak and daily streak multipliers
187-
alert(`Task ${task.task} completed!\nYou earned ${xp} XP!`); //alert user to show how many XP they earned after completing the task
222+
const score: number = Math.max(
223+
Math.floor(
224+
task.difficulty *
225+
task.priority *
226+
dateMultiplier *
227+
repeatMultiplier *
228+
streakMultiplier *
229+
dailyStreakMultiplier *
230+
levelMultiplier
231+
),
232+
1
233+
); //get at least 1 point when the task is completed
234+
state.user.score += score; //get amount of points earned based on task difficulty, task priority, task due date, task repetition, task streak, daily streak and user level multipliers
235+
alert(
236+
`Task ${task.task} completed!\nYou earned ${xp} XP!\nYou earned ${score} points!`
237+
); //alert user to show how many XP they earned and points earned after completing the task
188238
//check if user has leveled up
189239
const userLevel: number = state.user.level; //set userLevel variable before calculating user level state
190240
state.user.level = Math.max(

0 commit comments

Comments
 (0)