[Refactor] Fix GameController

This commit is contained in:
2026-03-04 06:48:21 +07:00
parent 244f635062
commit 3031d2e4c2
24 changed files with 708 additions and 303 deletions
@@ -0,0 +1,51 @@
using YachtDice.Categories;
using YachtDice.Scoring;
namespace YachtDice.UI.Presentation
{
public sealed class ScoreSummaryService : IScoreSummaryService
{
private const int UpperBonusThreshold = 63;
private const int UpperBonusValue = 35;
private readonly ScoringSystem _scoringSystem;
private readonly CategoryCatalog _categoryCatalog;
public ScoreSummaryService(ScoringSystem scoringSystem, CategoryCatalog categoryCatalog)
{
_scoringSystem = scoringSystem;
_categoryCatalog = categoryCatalog;
}
public ScoreSummary Calculate()
{
var upperSum = CalculateUpperSum();
var hasUpperBonus = upperSum >= UpperBonusThreshold;
var total = _scoringSystem.TotalScore;
if (hasUpperBonus)
total += UpperBonusValue;
return new ScoreSummary(total, upperSum, hasUpperBonus);
}
private int CalculateUpperSum()
{
var upperSum = 0;
var allCategories = _categoryCatalog.All;
for (var i = 0; i < allCategories.Count; i++)
{
var category = allCategories[i];
if (!category.IsUpperSection)
continue;
var categoryScore = _scoringSystem.GetCategoryScore(category);
if (categoryScore >= 0)
upperSum += categoryScore;
}
return upperSum;
}
}
}