升级改为四选一并重做赌徒与方块改造机制

This commit is contained in:
2026-04-25 12:19:37 +08:00
parent 4bcc62f01a
commit 332573a28c
6 changed files with 1349 additions and 102 deletions
+42 -15
View File
@@ -362,7 +362,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
hdc,
_T("\u7ecf\u5178\u6a21\u5f0f\uff1a\u4fdd\u6301\u539f\u7248\u4fc4\u7f57\u65af\u65b9\u5757\u73a9\u6cd5\uff0c\u4ee5\u6d88\u884c\u548c\u751f\u5b58\u4e3a\u4e3b\u3002\r\n\r\n")
_T("Rogue \u6a21\u5f0f\uff1a\u6d88\u884c\u540e\u9664\u4e86\u83b7\u5f97\u5206\u6570\uff0c\u8fd8\u4f1a\u83b7\u5f97 EXP\u3002EXP \u8fbe\u5230\u9608\u503c\u540e\u89e6\u53d1\u5347\u7ea7\uff0c\u4ece\u4e09\u4e2a\u5f3a\u5316\u4e2d\u9009\u4e00\u4e2a\u3002\r\n\r\n")
_T("\u5f53\u524d\u5df2\u63a5\u5165\uff1a\u5206\u6570\u500d\u7387\u3001EXP \u500d\u7387\u3001\u6162\u901f\u4e0b\u843d\u3001Hold \u89e3\u9501\u3001\u51cf\u538b\u3001\u6e05\u626b\u8005\u3001\u7206\u7834\u65b9\u5757\u3001\u7a33\u5b9a\u7ed3\u6784\u3001\u53cc\u500d\u6210\u957f\u3001\u65b9\u5757\u6539\u8fd0\u3001\u8d4c\u5f92\u3002\r\n\r\n")
_T("\u5f53\u524d\u5df2\u63a5\u5165\uff1a\u5206\u6570\u500d\u7387\u3001EXP \u500d\u7387\u3001\u6162\u901f\u4e0b\u843d\u3001Hold \u89e3\u9501\u3001\u51cf\u538b\u3001\u6e05\u626b\u8005\u3001\u7206\u7834\u65b9\u5757\u3001\u7a33\u5b9a\u7ed3\u6784\u3001\u53cc\u500d\u6210\u957f\u3001\u65b9\u5757\u6539\u9020\u3001\u8d4c\u5f92\u3002\r\n\r\n")
_T("\u63d0\u793a\uff1a\u6682\u505c\u3001\u5931\u8d25\u548c\u5347\u7ea7\u4f1a\u8fdb\u5165\u4e0d\u540c\u754c\u9762\uff0c\u8bf7\u6839\u636e\u5c4f\u5e55\u63d0\u793a\u64cd\u4f5c\u3002"),
-1,
&rulesBody,
@@ -699,10 +699,18 @@ void TDrawScreen(HDC hdc, HWND hWnd)
TextOut(hdc, combatRect.left + SS(18), combatRect.top + SS(178), growthText, lstrlen(growthText));
}
if (rogueStats.luckyRollLevel > 0)
int tunedPieces = 0;
for (int pieceType = 0; pieceType < 7; pieceType++)
{
if (rogueStats.pieceTuningLevels[pieceType] > 0)
{
tunedPieces++;
}
}
if (tunedPieces > 0)
{
TCHAR luckyText[96];
_stprintf_s(luckyText, _T("\u6539\u8fd0\u91cd\u63b7 %d \u6b21"), rogueStats.luckyRollLevel > 3 ? 3 : rogueStats.luckyRollLevel);
_stprintf_s(luckyText, _T("\u65b9\u5757\u6539\u9020 %d \u79cd\u5df2\u8c03\u6574"), tunedPieces);
TextOut(hdc, combatRect.left + SS(18), combatRect.top + SS(210), luckyText, lstrlen(luckyText));
}
@@ -710,11 +718,11 @@ void TDrawScreen(HDC hdc, HWND hWnd)
{
TCHAR gamblerText[96];
int variance = 20 + (rogueStats.gamblerLevel - 1) * 10;
if (variance > 50)
if (variance > 40)
{
variance = 50;
variance = 40;
}
_stprintf_s(gamblerText, _T("\u8d4c\u5f92\u6ce2\u52a8 \u00b1%d%%"), variance);
_stprintf_s(gamblerText, _T("\u8d4c\u5f92\u6982\u7387 \u53cc\u500d/%u\u6548 %d%%"), variance, variance);
TextOut(hdc, combatRect.left + SS(18), combatRect.top + SS(242), gamblerText, lstrlen(gamblerText));
}
@@ -788,9 +796,24 @@ void TDrawScreen(HDC hdc, HWND hWnd)
{
_stprintf_s(upgradeSummary + lstrlen(upgradeSummary), 512 - lstrlen(upgradeSummary), _T("\u53cc\u500d\u6210\u957f Lv.%d\r\n"), rogueStats.doubleGrowthLevel);
}
if (rogueStats.luckyRollLevel > 0)
int tunedPieceCount = 0;
for (int pieceType = 0; pieceType < 7; pieceType++)
{
_stprintf_s(upgradeSummary + lstrlen(upgradeSummary), 512 - lstrlen(upgradeSummary), _T("\u65b9\u5757\u6539\u8fd0 Lv.%d\r\n"), rogueStats.luckyRollLevel);
if (rogueStats.pieceTuningLevels[pieceType] > 0)
{
tunedPieceCount++;
_stprintf_s(
upgradeSummary + lstrlen(upgradeSummary),
512 - lstrlen(upgradeSummary),
_T("%s \u65b9\u5757\u6539\u9020 Lv.%d\r\n"),
(pieceType == 0 ? _T("I") :
pieceType == 1 ? _T("T") :
pieceType == 2 ? _T("L") :
pieceType == 3 ? _T("J") :
pieceType == 4 ? _T("O") :
pieceType == 5 ? _T("S") : _T("Z")),
rogueStats.pieceTuningLevels[pieceType]);
}
}
if (rogueStats.gamblerLevel > 0)
{
@@ -1108,22 +1131,26 @@ void TDrawScreen(HDC hdc, HWND hWnd)
DrawText(hdc, _T("\u8bf7\u4ece\u4e09\u4e2a\u9009\u9879\u4e2d\u9009\u62e9\u4e00\u4e2a\u5f3a\u5316"), -1, &overlaySubtitleRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
int gap = SS(18);
int cardWidth = (overlayRect.right - overlayRect.left - SS(72) - gap * 2) / 3;
int cardTop = overlayRect.top + SS(138);
int cardBottom = overlayRect.bottom - SS(72);
int horizontalPadding = SS(36);
int verticalTop = overlayRect.top + SS(138);
int cardWidth = (overlayRect.right - overlayRect.left - horizontalPadding * 2 - gap) / 2;
int cardHeight = (overlayRect.bottom - verticalTop - SS(72) - gap) / 2;
for (int i = 0; i < upgradeUiState.optionCount; i++)
{
bool isSelected = (i == upgradeUiState.selectedIndex);
int left = overlayRect.left + SS(36) + i * (cardWidth + gap);
int column = i % 2;
int row = i / 2;
int left = overlayRect.left + horizontalPadding + column * (cardWidth + gap);
int top = verticalTop + row * (cardHeight + gap);
int right = left + cardWidth;
RECT cardRect =
{
left,
cardTop,
top,
right,
cardBottom
top + cardHeight
};
HBRUSH cardBrush = CreateSolidBrush(isSelected ? RGB(255, 235, 242) : RGB(255, 247, 250));
@@ -1219,7 +1246,7 @@ void TDrawScreen(HDC hdc, HWND hWnd)
overlayRect.right - SS(30),
overlayRect.bottom - SS(18)
};
DrawText(hdc, _T("A / D \u6216\u65b9\u5411\u952e\u5207\u6362\uff0cEnter \u6216 Space \u786e\u8ba4"), -1, &hintRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
DrawText(hdc, _T("W/A/S/D \u6216\u65b9\u5411\u952e\u5207\u6362\uff0cEnter \u6216 Space \u786e\u8ba4"), -1, &hintRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
SelectObject(hdc, oldFont);