1
1
package com.github.ilovegamecoding.intellijcodexp.toolWindow
2
2
3
- import com.github.ilovegamecoding.intellijcodexp.StringUtil
4
3
import com.github.ilovegamecoding.intellijcodexp.form.CodeXPChallengeForm
5
4
import com.github.ilovegamecoding.intellijcodexp.form.CodeXPDashboard
6
5
import com.github.ilovegamecoding.intellijcodexp.listeners.CodeXPListener
6
+ import com.github.ilovegamecoding.intellijcodexp.manager.CodeXPNotificationManager
7
7
import com.github.ilovegamecoding.intellijcodexp.model.CodeXPChallenge
8
8
import com.github.ilovegamecoding.intellijcodexp.services.CodeXPService
9
+ import com.github.ilovegamecoding.intellijcodexp.util.StringUtil
9
10
import com.intellij.openapi.application.ApplicationManager
10
11
import com.intellij.openapi.project.Project
11
12
import com.intellij.openapi.wm.ToolWindow
@@ -160,7 +161,7 @@ class CodeXPToolWindowFactory : ToolWindowFactory {
160
161
* @param codeXPDashboard CodeXP dashboard.
161
162
*/
162
163
private fun updateNickname (codeXPService : CodeXPService , codeXPDashboard : CodeXPDashboard ) {
163
- codeXPDashboard.tfNickname.text = codeXPService.state.nickname
164
+ codeXPService.state.nickname = codeXPDashboard.tfNickname.text
164
165
}
165
166
166
167
/* *
@@ -172,10 +173,16 @@ class CodeXPToolWindowFactory : ToolWindowFactory {
172
173
private fun updateXPInfo (codeXPService : CodeXPService , codeXPDashboard : CodeXPDashboard ) {
173
174
val totalXP = codeXPService.state.xp
174
175
codeXPDashboard.lblTotalXP.text = StringUtil .numberToStringWithCommas(totalXP)
175
- val (currentLevel, xpIntoCurrentLevel, progressToNextLevel) = calculateLevelAndProgress(
176
+ val (currentLevel, xpIntoCurrentLevel, progressToNextLevel, xpToNextLevel ) = calculateLevelAndProgress(
176
177
totalXP
177
178
)
178
179
180
+
181
+ val beforeLevel = codeXPDashboard.lblCurrentLevel.text.toInt()
182
+ if (beforeLevel != currentLevel && beforeLevel != 0 ) {
183
+ CodeXPNotificationManager .notifyLevelUp(codeXPService.state.nickname, currentLevel, xpToNextLevel)
184
+ }
185
+
179
186
codeXPDashboard.lblCurrentLevel.text = StringUtil .numberToStringWithCommas(currentLevel.toLong())
180
187
codeXPDashboard.lblNextLevel.text = StringUtil .numberToStringWithCommas((currentLevel + 1 ).toLong())
181
188
codeXPDashboard.lblCurrentLevelXP.text = StringUtil .numberToStringWithCommas(xpIntoCurrentLevel)
@@ -261,7 +268,12 @@ class CodeXPToolWindowFactory : ToolWindowFactory {
261
268
/* *
262
269
* Progress to the next level.
263
270
*/
264
- val progressToNextLevel : Int
271
+ val progressToNextLevel : Int ,
272
+
273
+ /* *
274
+ * XP needed to reach the next level.
275
+ */
276
+ val xpToNextLevel : Long
265
277
)
266
278
267
279
/* *
@@ -284,7 +296,7 @@ class CodeXPToolWindowFactory : ToolWindowFactory {
284
296
val xpIntoCurrentLevel = totalXP - (xp - currentLevelXP)
285
297
val progress = (xpIntoCurrentLevel / currentLevelXP) * 100
286
298
287
- return LevelInfo (level, xpIntoCurrentLevel.toLong(), progress.toInt())
299
+ return LevelInfo (level, xpIntoCurrentLevel.toLong(), progress.toInt(), currentLevelXP.toLong() )
288
300
}
289
301
}
290
302
0 commit comments