接入Rogue真实强化效果并降低升级门槛便于测试
This commit is contained in:
@@ -13,10 +13,18 @@ Point point = { 0, 0 };
|
||||
Point target = { 0, 0 };
|
||||
MenuState menuState = { 0, 2 };
|
||||
PlayerStats classicStats = { 0, 1, 0, 0, 0 };
|
||||
PlayerStats rogueStats = { 0, 1, 0, 100, 0 };
|
||||
PlayerStats rogueStats = { 0, 1, 0, 30, 0, 100, 100, 0 };
|
||||
UpgradeUiState upgradeUiState = { 0, 0, 0, 0, {} };
|
||||
int currentScreen = SCREEN_MENU;
|
||||
int currentMode = MODE_CLASSIC;
|
||||
int currentFallInterval = 500;
|
||||
|
||||
enum UpgradeId
|
||||
{
|
||||
UPGRADE_SCORE_MULTIPLIER = 0,
|
||||
UPGRADE_EXP_MULTIPLIER = 1,
|
||||
UPGRADE_SLOW_FALL = 2
|
||||
};
|
||||
|
||||
int bricks[7][4][4][4] =
|
||||
{
|
||||
@@ -151,8 +159,11 @@ static void ResetPlayerStats(PlayerStats& stats, bool useRogueRules)
|
||||
stats.score = 0;
|
||||
stats.level = 1;
|
||||
stats.exp = 0;
|
||||
stats.requiredExp = useRogueRules ? 100 : 0;
|
||||
stats.requiredExp = useRogueRules ? 30 : 0;
|
||||
stats.totalLinesCleared = 0;
|
||||
stats.scoreMultiplierPercent = 100;
|
||||
stats.expMultiplierPercent = 100;
|
||||
stats.slowFallStacks = 0;
|
||||
}
|
||||
|
||||
static int GetRogueScoreByLines(int linesCleared)
|
||||
@@ -187,7 +198,7 @@ static int ApplyLevelProgress(PlayerStats& stats)
|
||||
{
|
||||
stats.exp -= stats.requiredExp;
|
||||
stats.level++;
|
||||
stats.requiredExp = 100 + stats.level * 50;
|
||||
stats.requiredExp = 20 + stats.level * 10;
|
||||
levelUps++;
|
||||
}
|
||||
|
||||
@@ -199,17 +210,44 @@ static void FillUpgradeOptions()
|
||||
upgradeUiState.optionCount = 3;
|
||||
upgradeUiState.selectedIndex = 0;
|
||||
|
||||
upgradeUiState.options[0].id = UPGRADE_SCORE_MULTIPLIER;
|
||||
upgradeUiState.options[0].name = _T("\u5206\u6570\u500d\u7387");
|
||||
upgradeUiState.options[0].category = _T("\u5f97\u5206");
|
||||
upgradeUiState.options[0].description = _T("\u6240\u6709\u5f97\u5206\u5c0f\u5e45\u63d0\u5347\u3002");
|
||||
upgradeUiState.options[0].description = _T("\u6240\u6709\u5f97\u5206\u63d0\u9ad8 20%\u3002");
|
||||
|
||||
upgradeUiState.options[1].id = UPGRADE_EXP_MULTIPLIER;
|
||||
upgradeUiState.options[1].name = _T("\u7ecf\u9a8c\u5f3a\u5316");
|
||||
upgradeUiState.options[1].category = _T("\u6210\u957f");
|
||||
upgradeUiState.options[1].description = _T("\u540e\u7eed\u6d88\u884c\u53ef\u4ee5\u83b7\u5f97\u66f4\u591a EXP\u3002");
|
||||
upgradeUiState.options[1].description = _T("\u540e\u7eed\u6d88\u884c\u83b7\u5f97 EXP \u63d0\u9ad8 25%\u3002");
|
||||
|
||||
upgradeUiState.options[2].id = UPGRADE_SLOW_FALL;
|
||||
upgradeUiState.options[2].name = _T("\u6162\u901f\u4e0b\u843d");
|
||||
upgradeUiState.options[2].category = _T("\u64cd\u4f5c");
|
||||
upgradeUiState.options[2].description = _T("\u964d\u4f4e\u81ea\u7136\u4e0b\u843d\u901f\u5ea6\uff0c\u63d0\u9ad8\u5bb9\u9519\u3002");
|
||||
upgradeUiState.options[2].description = _T("\u81ea\u7136\u4e0b\u843d\u53d8\u6162\uff0c\u6bcf\u6b21\u63d0\u9ad8 80ms\u3002");
|
||||
}
|
||||
|
||||
static int GetRogueFallInterval()
|
||||
{
|
||||
return 500 + rogueStats.slowFallStacks * 80;
|
||||
}
|
||||
|
||||
static void ApplyUpgradeById(int upgradeId)
|
||||
{
|
||||
switch (upgradeId)
|
||||
{
|
||||
case UPGRADE_SCORE_MULTIPLIER:
|
||||
rogueStats.scoreMultiplierPercent += 20;
|
||||
break;
|
||||
case UPGRADE_EXP_MULTIPLIER:
|
||||
rogueStats.expMultiplierPercent += 25;
|
||||
break;
|
||||
case UPGRADE_SLOW_FALL:
|
||||
rogueStats.slowFallStacks++;
|
||||
currentFallInterval = GetRogueFallInterval();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void ApplyLineClearResult(int linesCleared)
|
||||
@@ -227,9 +265,15 @@ static void ApplyLineClearResult(int linesCleared)
|
||||
return;
|
||||
}
|
||||
|
||||
int scoreGain = GetRogueScoreByLines(linesCleared);
|
||||
scoreGain = scoreGain * rogueStats.scoreMultiplierPercent / 100;
|
||||
|
||||
int expGain = GetRogueExpByLines(linesCleared);
|
||||
expGain = expGain * rogueStats.expMultiplierPercent / 100;
|
||||
|
||||
rogueStats.totalLinesCleared += linesCleared;
|
||||
rogueStats.score += GetRogueScoreByLines(linesCleared);
|
||||
rogueStats.exp += GetRogueExpByLines(linesCleared);
|
||||
rogueStats.score += scoreGain;
|
||||
rogueStats.exp += expGain;
|
||||
upgradeUiState.pendingCount += ApplyLevelProgress(rogueStats);
|
||||
tScore = rogueStats.score;
|
||||
|
||||
@@ -610,6 +654,7 @@ void Restart()
|
||||
gameOverFlag = false;
|
||||
suspendFlag = false;
|
||||
targetFlag = true;
|
||||
currentFallInterval = 500;
|
||||
|
||||
ResetPlayerStats(classicStats, false);
|
||||
ResetPlayerStats(rogueStats, true);
|
||||
@@ -633,6 +678,7 @@ void StartGameWithMode(int mode)
|
||||
currentMode = mode;
|
||||
currentScreen = SCREEN_PLAYING;
|
||||
Restart();
|
||||
currentFallInterval = (currentMode == MODE_ROGUE) ? GetRogueFallInterval() : 500;
|
||||
tScore = (currentMode == MODE_CLASSIC) ? classicStats.score : rogueStats.score;
|
||||
}
|
||||
|
||||
@@ -668,6 +714,7 @@ void ConfirmUpgradeSelection()
|
||||
return;
|
||||
}
|
||||
|
||||
ApplyUpgradeById(upgradeUiState.options[upgradeUiState.selectedIndex].id);
|
||||
upgradeUiState.totalChosenCount++;
|
||||
|
||||
if (upgradeUiState.pendingCount > 0)
|
||||
|
||||
Reference in New Issue
Block a user