修复exp

This commit is contained in:
2026-04-26 14:50:15 +08:00
parent 01d06f1a5f
commit 24c24acf44
4 changed files with 55 additions and 0 deletions
+1
View File
@@ -266,6 +266,7 @@ void TriggerLineClearEffect(const int* rows, int rowCount, int linesCleared);
void PlayPendingLineClearEffect();
void TriggerCellClearEffect(const Point* cells, int cellCount, bool strongBurst);
void AwardRogueSkillClearRewards(int clearedCells, int& scoreGain, int& expGain, bool allowLevelProgress);
void CheckRogueLevelProgress();
void ApplyBoardGravity();
int GetRogueFallInterval();
int GetRoguePlayableHeight();
+3
View File
@@ -608,6 +608,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (!gameOverFlag)
{
DeleteLines();
CheckRogueLevelProgress();
}
}
@@ -911,6 +912,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (!gameOverFlag)
{
DeleteLines();
CheckRogueLevelProgress();
}
}
break;
@@ -924,6 +926,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (!gameOverFlag)
{
DeleteLines();
CheckRogueLevelProgress();
}
break;
case 'C':
+4
View File
@@ -1152,6 +1152,10 @@ void TDrawScreen(HDC hdc, HWND hWnd)
{
expFillRect.right = expFillRect.left;
}
if (expFillRect.right > expBarRect.right)
{
expFillRect.right = expBarRect.right;
}
HBRUSH expFillBrush = CreateSolidBrush(accentColor);
FillRect(hdc, &expFillRect, expFillBrush);
DeleteObject(expFillBrush);
+47
View File
@@ -1572,6 +1572,53 @@ void AwardRogueSkillClearRewards(int clearedCells, int& scoreGain, int& expGain,
}
}
void CheckRogueLevelProgress()
{
if (currentMode != MODE_ROGUE || currentScreen != SCREEN_PLAYING)
{
return;
}
int levelUps = ApplyLevelProgress(rogueStats);
if (levelUps <= 0)
{
return;
}
upgradeUiState.pendingCount += levelUps;
int shockwaveRows = 0;
if (rogueStats.evolutionImpactLevel > 0)
{
shockwaveRows = 3;
rogueStats.feverTicks = kFeverDurationTicks;
currentFallInterval = GetRogueFallInterval();
}
else if (rogueStats.upgradeShockwaveLevel > 0)
{
shockwaveRows = 2;
}
if (shockwaveRows > 0)
{
pendingUpgradeShockwaveRows = shockwaveRows;
pendingEvolutionImpactShockwave = rogueStats.evolutionImpactLevel > 0;
}
TCHAR feedbackTitle[64];
TCHAR feedbackDetail[128];
_stprintf_s(feedbackTitle, _T("灵感涌现 x%d"), levelUps);
_stprintf_s(
feedbackDetail,
_T("等级 Lv.%d EXP %d/%d 选择新的强化"),
rogueStats.level,
rogueStats.exp,
rogueStats.requiredExp);
SetFeedbackMessage(feedbackTitle, feedbackDetail, 10);
OpenUpgradeMenu();
}
void ApplyBoardGravity()
{
int playableHeight = GetRoguePlayableHeight();