补全Rogue侧边HUD与局内结算反馈提示

This commit is contained in:
2026-04-24 20:02:43 +08:00
parent bbaa89e21d
commit 8ee470b059
5 changed files with 272 additions and 45 deletions
+38 -2
View File
@@ -15,6 +15,7 @@ MenuState menuState = { 0, 2 };
PlayerStats classicStats = { 0, 1, 0, 0, 0 };
PlayerStats rogueStats = { 0, 1, 0, 30, 0, 100, 100, 0 };
UpgradeUiState upgradeUiState = { 0, 0, 0, 0, {} };
FeedbackState feedbackState = { 0, _T(""), _T("") };
int currentScreen = SCREEN_MENU;
int currentMode = MODE_CLASSIC;
int currentFallInterval = 500;
@@ -246,6 +247,13 @@ static bool IsUpgradeSelectable(const UpgradeEntry& entry)
return GetUpgradeCurrentLevel(entry.id) < entry.maxLevel;
}
static void SetFeedbackMessage(const TCHAR* title, const TCHAR* detail, int ticks)
{
feedbackState.visibleTicks = ticks;
lstrcpyn(feedbackState.title, title, sizeof(feedbackState.title) / sizeof(TCHAR));
lstrcpyn(feedbackState.detail, detail, sizeof(feedbackState.detail) / sizeof(TCHAR));
}
static void ResetNextQueue()
{
for (int i = 0; i < 3; i++)
@@ -410,9 +418,23 @@ static void ApplyLineClearResult(int linesCleared)
rogueStats.totalLinesCleared += linesCleared;
rogueStats.score += scoreGain;
rogueStats.exp += expGain;
upgradeUiState.pendingCount += ApplyLevelProgress(rogueStats);
int levelUps = ApplyLevelProgress(rogueStats);
upgradeUiState.pendingCount += levelUps;
tScore = rogueStats.score;
TCHAR feedbackTitle[64];
TCHAR feedbackDetail[128];
_stprintf_s(feedbackTitle, _T("+%d Score +%d EXP"), scoreGain, expGain);
if (levelUps > 0)
{
_stprintf_s(feedbackDetail, _T("Level Up x%d \u5f53\u524d Lv.%d"), levelUps, rogueStats.level);
}
else
{
_stprintf_s(feedbackDetail, _T("\u6d88\u884c %d \u8fde\u51fb %d"), linesCleared, rogueStats.comboChain);
}
SetFeedbackMessage(feedbackTitle, feedbackDetail, 10);
if (upgradeUiState.pendingCount > 0)
{
OpenUpgradeMenu();
@@ -677,6 +699,11 @@ void Fixing()
{
DeleteOneLine(nGameHeight - 1);
}
SetFeedbackMessage(
_T("\u6700\u540e\u4e00\u640f\u89e6\u53d1"),
_T("\u81ea\u52a8\u6e05\u9664\u5e95\u90e8 3 \u884c\uff0c\u672c\u5c40\u7ee7\u7eed\u3002"),
14);
}
else
{
@@ -810,6 +837,9 @@ void Restart()
upgradeUiState.optionCount = 0;
upgradeUiState.pendingCount = 0;
upgradeUiState.totalChosenCount = 0;
feedbackState.visibleTicks = 0;
feedbackState.title[0] = _T('\0');
feedbackState.detail[0] = _T('\0');
tScore = 0;
ResetNextQueue();
@@ -869,8 +899,14 @@ void ConfirmUpgradeSelection()
return;
}
ApplyUpgradeById(upgradeUiState.options[upgradeUiState.selectedIndex].id);
UpgradeOption selectedOption = upgradeUiState.options[upgradeUiState.selectedIndex];
ApplyUpgradeById(selectedOption.id);
upgradeUiState.totalChosenCount++;
TCHAR feedbackTitle[64];
TCHAR feedbackDetail[128];
_stprintf_s(feedbackTitle, _T("\u5df2\u83b7\u5f97\uff1a%s"), selectedOption.name);
_stprintf_s(feedbackDetail, _T("%s"), selectedOption.description);
SetFeedbackMessage(feedbackTitle, feedbackDetail, 12);
if (upgradeUiState.pendingCount > 0)
{