优化帮助页逻辑
This commit is contained in:
+18
-9
@@ -980,8 +980,21 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
|
||||
if (currentScreen != SCREEN_MENU && IsPointInRect(GetBackButtonRect(hWnd), mouseX, mouseY))
|
||||
{
|
||||
if (currentScreen == SCREEN_PLAYING && IsRogueSkillDemoMode())
|
||||
{
|
||||
OpenSkillDemoScreen();
|
||||
}
|
||||
else if (currentScreen == SCREEN_RULES && helpState.currentPage != 0)
|
||||
{
|
||||
helpState.selectedIndex = (helpState.currentPage == 5) ? 3 : helpState.currentPage - 1;
|
||||
helpState.currentPage = 0;
|
||||
helpScrollOffset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ReturnToMainMenu();
|
||||
}
|
||||
InvalidateRect(hWnd, nullptr, FALSE);
|
||||
break;
|
||||
}
|
||||
@@ -1076,15 +1089,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
else if (IsPointInRect(GetHelpBackHintRect(hWnd), mouseX, mouseY))
|
||||
{
|
||||
if (helpState.currentPage == 4)
|
||||
{
|
||||
ReturnToMainMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
helpState.selectedIndex = (helpState.currentPage == 5) ? 3 : helpState.currentPage - 1;
|
||||
helpState.currentPage = 0;
|
||||
helpScrollOffset = 0;
|
||||
}
|
||||
InvalidateRect(hWnd, nullptr, FALSE);
|
||||
}
|
||||
else if (helpState.currentPage == 4 && IsPointInRect(GetCreditArrowRect(hWnd, -1), mouseX, mouseY))
|
||||
@@ -1387,7 +1394,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
else if (helpState.currentPage == 4)
|
||||
{
|
||||
ReturnToMainMenu();
|
||||
helpState.currentPage = 0;
|
||||
helpState.selectedIndex = 3;
|
||||
helpScrollOffset = 0;
|
||||
}
|
||||
else if (helpState.currentPage == 5)
|
||||
{
|
||||
@@ -1535,7 +1544,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
else if (wParam == VK_ESCAPE || wParam == VK_BACK || wParam == 'M')
|
||||
{
|
||||
ReturnToMainMenu();
|
||||
OpenSkillDemoScreen();
|
||||
InvalidateRect(hWnd, nullptr, FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
+12
-35
@@ -166,46 +166,18 @@ struct RogueDemoStep
|
||||
|
||||
static const RogueDemoStep kRogueDemoSteps[] =
|
||||
{
|
||||
{ DEMO_SCORE_MULTIPLIER, _T("赏金纹章"), _T("Space 消一行,观察得分倍率提高后的分数收益。") },
|
||||
{ DEMO_EXP_MULTIPLIER, _T("成长印记"), _T("Space 消一行,观察 EXP 倍率提高后的成长收益。") },
|
||||
{ DEMO_SLOW_FALL, _T("缓坠羽翼"), _T("当前下落速度已放慢,练习在慢速节奏中调整落点。") },
|
||||
{ DEMO_COMBO_BONUS, _T("连击律动"), _T("连续完成两次消行,第二次会获得连击收益。") },
|
||||
{ DEMO_PREVIEW_PLUS_ONE, _T("先见之眼"), _T("右侧预览增加到 2 个,便于提前规划落点。") },
|
||||
{ DEMO_LAST_CHANCE, _T("最后一搏"), _T("Space 固定触顶方块,濒死时自动清理底部 3 行。") },
|
||||
{ DEMO_HOLD, _T("备用仓"), _T("按 C / Shift 换出备用 I 块,再用 Space 填平底行缺口。") },
|
||||
{ DEMO_PRESSURE_RELIEF, _T("卸压清场"), _T("进入场景时只演示卸压清场:最高占用行被清除。") },
|
||||
{ DEMO_SWEEPER, _T("底线清道夫"), _T("Space 消去底行,充能满后自动再清扫底部。") },
|
||||
{ DEMO_BLACK_HOLE, _T("黑洞奇点"), _T("按 Z 吞噬场上最多的粉色方块,观察棋盘变化。") },
|
||||
{ DEMO_SCREEN_BOMB, _T("清屏炸弹"), _T("按 X 主动引爆,清理底部 5 行高压区。") },
|
||||
{ DEMO_AIR_RESHAPE, _T("空中换形"), _T("按 V 把当前方块变为 I 块,再用 Space 完成落位。") },
|
||||
{ DEMO_EXPLOSIVE, _T("爆破核心"), _T("用方向键微调红框方块,Space 落地后清除 3x3 区域。") },
|
||||
{ DEMO_STABLE_STRUCTURE, _T("稳定结构"), _T("Space 落地后只触发稳定结构,自动填补局部空洞。") },
|
||||
{ DEMO_DOUBLE_GROWTH, _T("成长核心"), _T("Space 消一行,观察得分与 EXP 同时提高。") },
|
||||
{ DEMO_PIECE_TUNING, _T("方块改造"), _T("预览队列固定给出更多 I 块,展示改造后的出块倾向。") },
|
||||
{ DEMO_GAMBLER, _T("赌徒契约"), _T("Space 消一行,观察随机波动后的收益变化。") },
|
||||
{ DEMO_CHAIN_BLAST, _T("连锁火花"), _T("Space 消行后,在清除行附近追加随机破坏。") },
|
||||
{ DEMO_CHAIN_BOMB, _T("连环炸弹"), _T("Space 落下红框方块,演示更大的连环爆破范围。") },
|
||||
{ DEMO_LASER, _T("棱镜激光"), _T("把青色边框方块落到中列,落地后贯穿整列。") },
|
||||
{ DEMO_THUNDER_TETRIS, _T("雷霆四消"), _T("Space 完成四消,额外轰击随机 2 行。") },
|
||||
{ DEMO_THUNDER_LASER, _T("雷霆棱镜"), _T("Space 完成四消,额外发射 2 道激光。") },
|
||||
{ DEMO_FEVER_MODE, _T("狂热节拍"), _T("Space 消一行补满充能,进入狂热收益状态。") },
|
||||
{ DEMO_RAGE_STACK, _T("怒火连段"), _T("连续消行时得分倍率追加,当前已预置连击层数。") },
|
||||
{ DEMO_INFINITE_FEVER, _T("无尽狂热"), _T("狂热期间消行会延长狂热时间。") },
|
||||
{ DEMO_SCREEN_BOMB, _T("清屏炸弹"), _T("按 X 主动引爆,清理底部 5 行高压区。") },
|
||||
{ DEMO_TERMINAL_CLEAR, _T("终末清场"), _T("Space 固定触顶方块,最后一搏会连带引爆清屏炸弹。") },
|
||||
{ DEMO_DUAL_CHOICE, _T("双重抉择"), _T("演示升级规则:每次升级可选择 2 个强化。") },
|
||||
{ DEMO_DESTINY_WHEEL, _T("命运轮盘"), _T("演示升级规则:6 选 2,并可能出现诅咒选项。") },
|
||||
{ DEMO_PERFECT_ROTATE, _T("完美旋转"), _T("靠墙旋转受阻时,系统会尝试左右修正。") },
|
||||
{ DEMO_TIME_DILATION, _T("时间缓流"), _T("高堆叠开局会自动减速,玩家可用慢速窗口整理局面。") },
|
||||
{ DEMO_HIGH_PRESSURE, _T("高压悬赏"), _T("下落速度提高,但 Space 消行后得分与 EXP 更高。") },
|
||||
{ DEMO_TETRIS_GAMBLE, _T("豪赌四消"), _T("Space 完成四消,展示四消收益暴增。") },
|
||||
{ DEMO_EXTREME_PLAYER, _T("极限玩家"), _T("Space 完成四消,触发短暂缓速补位窗口。") },
|
||||
{ DEMO_UPGRADE_SHOCKWAVE, _T("升级冲击波"), _T("Space 消一行立刻升级,不弹强化菜单并清除底部 2 行。") },
|
||||
{ DEMO_EVOLUTION_IMPACT, _T("进化冲击"), _T("Space 消一行立刻升级,清除底部 3 行并进入狂热。") },
|
||||
{ DEMO_CONTROL_MASTER, _T("操控大师"), _T("按 C / Shift 使用备用仓后,触发短暂减速并增加预览。") },
|
||||
{ DEMO_BLOCK_STORM, _T("方块风暴"), _T("连续用 I 块清理竖井,后续预览也固定为 I 块。") },
|
||||
{ DEMO_CROSS, _T("十字方块"), _T("把绿色边框方块落到交叉点,清除一行一列。") },
|
||||
{ DEMO_BLACK_HOLE, _T("黑洞奇点"), _T("按 Z 吞噬场上最多的粉色方块,观察棋盘重力补位。") },
|
||||
{ DEMO_AIR_RESHAPE, _T("空中换形"), _T("按 V 把当前方块变为 I 块,再用 Space 完成四消。") },
|
||||
{ DEMO_RAINBOW, _T("彩虹方块"), _T("把紫色边框方块落到彩色层,按中心行主色触发清除。") },
|
||||
{ DEMO_VOID_CORE, _T("虚空核心"), _T("按 Z 释放黑洞后,下一枚方块会被召唤成彩虹方块。") }
|
||||
{ DEMO_VOID_CORE, _T("虚空核心"), _T("按 Z 释放黑洞后,下一枚方块会被召唤成彩虹方块。") },
|
||||
{ DEMO_UPGRADE_SHOCKWAVE, _T("升级冲击波"), _T("Space 消一行立刻升级,不弹强化菜单并清除底部 2 行。") },
|
||||
{ DEMO_STABLE_STRUCTURE, _T("稳定结构"), _T("Space 落地后只触发稳定结构,自动填补局部空洞。") }
|
||||
};
|
||||
|
||||
static constexpr int kRogueDemoStepCount = sizeof(kRogueDemoSteps) / sizeof(kRogueDemoSteps[0]);
|
||||
@@ -3061,7 +3033,12 @@ static void ResetRogueDemoBoard()
|
||||
*/
|
||||
static void ShowRogueDemoFloatingName(const TCHAR* name)
|
||||
{
|
||||
(void)name;
|
||||
floatingTextEffects[0].ticks = 70;
|
||||
floatingTextEffects[0].totalTicks = 70;
|
||||
floatingTextEffects[0].boardX = 500;
|
||||
floatingTextEffects[0].boardY = 1000;
|
||||
floatingTextEffects[0].color = RGB(255, 248, 250);
|
||||
lstrcpyn(floatingTextEffects[0].text, name, sizeof(floatingTextEffects[0].text) / sizeof(TCHAR));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user