diff --git a/Assets/Scripts/Categories.meta b/Assets/Scripts/Categories.meta new file mode 100644 index 0000000..2751bc7 --- /dev/null +++ b/Assets/Scripts/Categories.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9191bf86efa11bc47bcd9383d3a106f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Categories/Definition.meta b/Assets/Scripts/Categories/Definition.meta new file mode 100644 index 0000000..1e2d85a --- /dev/null +++ b/Assets/Scripts/Categories/Definition.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 511dff8ba41dd7e49a817a1053ff3b90 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Categories/Definition/CategoryCatalogSO.cs b/Assets/Scripts/Categories/Definition/CategoryCatalog.cs similarity index 69% rename from Assets/Scripts/Categories/Definition/CategoryCatalogSO.cs rename to Assets/Scripts/Categories/Definition/CategoryCatalog.cs index 4120902..224706c 100644 --- a/Assets/Scripts/Categories/Definition/CategoryCatalogSO.cs +++ b/Assets/Scripts/Categories/Definition/CategoryCatalog.cs @@ -9,14 +9,14 @@ namespace YachtDice.Categories /// Аналог ModifierCatalogSO. /// [CreateAssetMenu(fileName = "CategoryCatalog", menuName = "YachtDice/Categories/Catalog")] - public class CategoryCatalogSO : ScriptableObject + public class CategoryCatalog : ScriptableObject { - [SerializeField] private List categories = new(); + [SerializeField] private List categories = new(); - public IReadOnlyList All => categories; + public IReadOnlyList All => categories; public int Count => categories.Count; - public CategoryDefinitionSO FindById(string id) + public CategoryDefinition FindById(string id) { for (int i = 0; i < categories.Count; i++) { @@ -26,7 +26,7 @@ namespace YachtDice.Categories return null; } - public int IndexOf(CategoryDefinitionSO def) + public int IndexOf(CategoryDefinition def) { for (int i = 0; i < categories.Count; i++) { @@ -37,10 +37,10 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static CategoryCatalogSO CreateForTest(List defs) + public static CategoryCatalog CreateForTest(List defs) { - var catalog = CreateInstance(); - catalog.categories = defs ?? new List(); + var catalog = CreateInstance(); + catalog.categories = defs ?? new List(); return catalog; } #endif diff --git a/Assets/Scripts/Categories/Definition/CategoryCatalog.cs.meta b/Assets/Scripts/Categories/Definition/CategoryCatalog.cs.meta new file mode 100644 index 0000000..3aad3f5 --- /dev/null +++ b/Assets/Scripts/Categories/Definition/CategoryCatalog.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e89ee3a4aac1e6d4eabd79f32b9d8d15 \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/CategoryDefinitionSO.cs b/Assets/Scripts/Categories/Definition/CategoryDefinition.cs similarity index 95% rename from Assets/Scripts/Categories/Definition/CategoryDefinitionSO.cs rename to Assets/Scripts/Categories/Definition/CategoryDefinition.cs index 66e92c3..f38ae3e 100644 --- a/Assets/Scripts/Categories/Definition/CategoryDefinitionSO.cs +++ b/Assets/Scripts/Categories/Definition/CategoryDefinition.cs @@ -8,7 +8,7 @@ namespace YachtDice.Categories /// Абстрактное определение категории для скоринга. /// Каждая категория знает как вычислить очки по набору дайсов. /// - public abstract class CategoryDefinitionSO : ScriptableObject + public abstract class CategoryDefinition : ScriptableObject { [Header("Identity")] [SerializeField] private string id; diff --git a/Assets/Scripts/Categories/Definition/CategoryDefinition.cs.meta b/Assets/Scripts/Categories/Definition/CategoryDefinition.cs.meta new file mode 100644 index 0000000..34b1fe7 --- /dev/null +++ b/Assets/Scripts/Categories/Definition/CategoryDefinition.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7b24bbcc7122ad0429210eb02f5b51a7 \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/FullHouseCategorySO.cs b/Assets/Scripts/Categories/Definition/FullHouseCategory.cs similarity index 81% rename from Assets/Scripts/Categories/Definition/FullHouseCategorySO.cs rename to Assets/Scripts/Categories/Definition/FullHouseCategory.cs index a209919..549cda5 100644 --- a/Assets/Scripts/Categories/Definition/FullHouseCategorySO.cs +++ b/Assets/Scripts/Categories/Definition/FullHouseCategory.cs @@ -9,7 +9,7 @@ namespace YachtDice.Categories /// При совпадении возвращает фиксированное число очков. /// [CreateAssetMenu(fileName = "FullHouseCategory", menuName = "YachtDice/Categories/Full House")] - public class FullHouseCategorySO : CategoryDefinitionSO + public class FullHouseCategory : CategoryDefinition { [Header("Scoring")] [Tooltip("Фиксированное число очков за фулл-хаус")] @@ -22,9 +22,9 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static FullHouseCategorySO CreateForTest(string id, string displayName, int score = 25) + public static FullHouseCategory CreateForTest(string id, string displayName, int score = 25) { - var so = CreateInstance(); + var so = CreateInstance(); so.SetTestData(id, displayName); so.fixedScore = score; return so; diff --git a/Assets/Scripts/Categories/Definition/FullHouseCategory.cs.meta b/Assets/Scripts/Categories/Definition/FullHouseCategory.cs.meta new file mode 100644 index 0000000..91fb174 --- /dev/null +++ b/Assets/Scripts/Categories/Definition/FullHouseCategory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5fbe9492ec44ebb4da7074b0719b3eda \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/NOfAKindCategorySO.cs b/Assets/Scripts/Categories/Definition/NOfAKindCategory.cs similarity index 86% rename from Assets/Scripts/Categories/Definition/NOfAKindCategorySO.cs rename to Assets/Scripts/Categories/Definition/NOfAKindCategory.cs index b22d72f..6ce0e5e 100644 --- a/Assets/Scripts/Categories/Definition/NOfAKindCategorySO.cs +++ b/Assets/Scripts/Categories/Definition/NOfAKindCategory.cs @@ -10,7 +10,7 @@ namespace YachtDice.Categories /// Используется для Тройки (3, сумма), Каре (4, сумма), Яхты (5, fixed=50). /// [CreateAssetMenu(fileName = "NOfAKindCategory", menuName = "YachtDice/Categories/N Of A Kind")] - public class NOfAKindCategorySO : CategoryDefinitionSO + public class NOfAKindCategory : CategoryDefinition { [Header("Scoring")] [Tooltip("Сколько одинаковых дайсов требуется")] @@ -33,9 +33,9 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static NOfAKindCategorySO CreateForTest(string id, string displayName, int count, bool fixedScoreMode = false, int score = 0) + public static NOfAKindCategory CreateForTest(string id, string displayName, int count, bool fixedScoreMode = false, int score = 0) { - var so = CreateInstance(); + var so = CreateInstance(); so.SetTestData(id, displayName); so.requiredCount = count; so.useFixedScore = fixedScoreMode; diff --git a/Assets/Scripts/Categories/Definition/NOfAKindCategory.cs.meta b/Assets/Scripts/Categories/Definition/NOfAKindCategory.cs.meta new file mode 100644 index 0000000..1d888ea --- /dev/null +++ b/Assets/Scripts/Categories/Definition/NOfAKindCategory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3a4bac360359f3847a088d18e67b5c8b \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/StraightCategorySO.cs b/Assets/Scripts/Categories/Definition/StraightCategory.cs similarity index 85% rename from Assets/Scripts/Categories/Definition/StraightCategorySO.cs rename to Assets/Scripts/Categories/Definition/StraightCategory.cs index 069a5fb..15b9d4a 100644 --- a/Assets/Scripts/Categories/Definition/StraightCategorySO.cs +++ b/Assets/Scripts/Categories/Definition/StraightCategory.cs @@ -10,7 +10,7 @@ namespace YachtDice.Categories /// Малый стрит: runLength=4, fixedScore=30. Большой стрит: runLength=5, fixedScore=40. /// [CreateAssetMenu(fileName = "StraightCategory", menuName = "YachtDice/Categories/Straight")] - public class StraightCategorySO : CategoryDefinitionSO + public class StraightCategory : CategoryDefinition { [Header("Scoring")] [Tooltip("Требуемая длина последовательности")] @@ -26,9 +26,9 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static StraightCategorySO CreateForTest(string id, string displayName, int run, int score) + public static StraightCategory CreateForTest(string id, string displayName, int run, int score) { - var so = CreateInstance(); + var so = CreateInstance(); so.SetTestData(id, displayName); so.runLength = run; so.fixedScore = score; diff --git a/Assets/Scripts/Categories/Definition/StraightCategory.cs.meta b/Assets/Scripts/Categories/Definition/StraightCategory.cs.meta new file mode 100644 index 0000000..61cffdc --- /dev/null +++ b/Assets/Scripts/Categories/Definition/StraightCategory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7f267a540d10bec4b91f1b9c1173257b \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/SumAllCategorySO.cs b/Assets/Scripts/Categories/Definition/SumAllCategory.cs similarity index 77% rename from Assets/Scripts/Categories/Definition/SumAllCategorySO.cs rename to Assets/Scripts/Categories/Definition/SumAllCategory.cs index 031464b..8235c19 100644 --- a/Assets/Scripts/Categories/Definition/SumAllCategorySO.cs +++ b/Assets/Scripts/Categories/Definition/SumAllCategory.cs @@ -8,7 +8,7 @@ namespace YachtDice.Categories /// Категория «Шанс»: суммирует все дайсы без условий. /// [CreateAssetMenu(fileName = "SumAllCategory", menuName = "YachtDice/Categories/Sum All (Chance)")] - public class SumAllCategorySO : CategoryDefinitionSO + public class SumAllCategory : CategoryDefinition { public override int Calculate(IReadOnlyList dice) { @@ -19,9 +19,9 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static SumAllCategorySO CreateForTest(string id, string displayName) + public static SumAllCategory CreateForTest(string id, string displayName) { - var so = CreateInstance(); + var so = CreateInstance(); so.SetTestData(id, displayName); return so; } diff --git a/Assets/Scripts/Categories/Definition/SumAllCategory.cs.meta b/Assets/Scripts/Categories/Definition/SumAllCategory.cs.meta new file mode 100644 index 0000000..85ef2ac --- /dev/null +++ b/Assets/Scripts/Categories/Definition/SumAllCategory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: aeb4a3033474e7c4b945a3c5a71df067 \ No newline at end of file diff --git a/Assets/Scripts/Categories/Definition/SumOfValueCategorySO.cs b/Assets/Scripts/Categories/Definition/SumOfValueCategory.cs similarity index 83% rename from Assets/Scripts/Categories/Definition/SumOfValueCategorySO.cs rename to Assets/Scripts/Categories/Definition/SumOfValueCategory.cs index e10a415..190014b 100644 --- a/Assets/Scripts/Categories/Definition/SumOfValueCategorySO.cs +++ b/Assets/Scripts/Categories/Definition/SumOfValueCategory.cs @@ -9,7 +9,7 @@ namespace YachtDice.Categories /// Используется для Единиц (1), Двоек (2), ... Шестёрок (6). /// [CreateAssetMenu(fileName = "SumOfValueCategory", menuName = "YachtDice/Categories/Sum Of Value")] - public class SumOfValueCategorySO : CategoryDefinitionSO + public class SumOfValueCategory : CategoryDefinition { [Header("Scoring")] [Tooltip("Значение грани для суммирования (1-6)")] @@ -26,9 +26,9 @@ namespace YachtDice.Categories } #if UNITY_EDITOR - public static SumOfValueCategorySO CreateForTest(string id, string displayName, int target) + public static SumOfValueCategory CreateForTest(string id, string displayName, int target) { - var so = CreateInstance(); + var so = CreateInstance(); so.SetTestData(id, displayName, upperSection: true); so.targetValue = target; return so; diff --git a/Assets/Scripts/Categories/Definition/SumOfValueCategory.cs.meta b/Assets/Scripts/Categories/Definition/SumOfValueCategory.cs.meta new file mode 100644 index 0000000..dc9d5fe --- /dev/null +++ b/Assets/Scripts/Categories/Definition/SumOfValueCategory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cdb02f59d2ac5894f9f28d4547d3d941 \ No newline at end of file diff --git a/Assets/Scripts/Categories/DiceCheckUtility.cs.meta b/Assets/Scripts/Categories/DiceCheckUtility.cs.meta new file mode 100644 index 0000000..cf16d0f --- /dev/null +++ b/Assets/Scripts/Categories/DiceCheckUtility.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: aa749c160e90ff54ea903f977051f51d \ No newline at end of file diff --git a/Assets/Scripts/DI/GameLifetimeScope.cs b/Assets/Scripts/DI/GameLifetimeScope.cs index 4bdb6de..af9acf0 100644 --- a/Assets/Scripts/DI/GameLifetimeScope.cs +++ b/Assets/Scripts/DI/GameLifetimeScope.cs @@ -15,7 +15,7 @@ namespace YachtDice.DI public class GameLifetimeScope : LifetimeScope { [SerializeField] private ModifierCatalogSO modifierCatalog; - [SerializeField] private CategoryCatalogSO categoryCatalog; + [SerializeField] private CategoryCatalog categoryCatalog; [Header("Scene References")] [SerializeField] private ScoringSystem scoringSystem; diff --git a/Assets/Scripts/Dice/DieDefinitionSO.cs.meta b/Assets/Scripts/Dice/DieDefinitionSO.cs.meta new file mode 100644 index 0000000..63575f5 --- /dev/null +++ b/Assets/Scripts/Dice/DieDefinitionSO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c9db7c202fb40af469cc815db88f1ad6 \ No newline at end of file diff --git a/Assets/Scripts/Dice/DieInstance.cs.meta b/Assets/Scripts/Dice/DieInstance.cs.meta new file mode 100644 index 0000000..05217f1 --- /dev/null +++ b/Assets/Scripts/Dice/DieInstance.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6ce67a0ca086c084da281c1c3ff97d5f \ No newline at end of file diff --git a/Assets/Scripts/Dice/IDie.cs.meta b/Assets/Scripts/Dice/IDie.cs.meta new file mode 100644 index 0000000..8e9c763 --- /dev/null +++ b/Assets/Scripts/Dice/IDie.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a0df5b1c4a22d7744bcdde17cd09463e \ No newline at end of file diff --git a/Assets/Scripts/Dice/StandardDieSO.cs.meta b/Assets/Scripts/Dice/StandardDieSO.cs.meta new file mode 100644 index 0000000..35c0082 --- /dev/null +++ b/Assets/Scripts/Dice/StandardDieSO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c05eaecc1af5cb34aa0cde534039784d \ No newline at end of file diff --git a/Assets/Scripts/Game/GameManager.cs b/Assets/Scripts/Game/GameManager.cs index 196cbf1..c4f2364 100644 --- a/Assets/Scripts/Game/GameManager.cs +++ b/Assets/Scripts/Game/GameManager.cs @@ -23,7 +23,7 @@ namespace YachtDice.Game public event Action OnTurnStarted; public event Action OnRollComplete; - public event Action OnScored; + public event Action OnScored; public event Action OnGameOver; private void Start() @@ -76,7 +76,7 @@ namespace YachtDice.Game Debug.Log($"Dice {index + 1} (value={diceManager.GetValue(index)}): {(isLocked ? "LOCKED" : "UNLOCKED")}"); } - public void ScoreInCategory(CategoryDefinitionSO category) + public void ScoreInCategory(CategoryDefinition category) { if (!CanScore) return; if (scoringSystem.IsCategoryUsed(category)) return; diff --git a/Assets/Scripts/Inventory/InventoryController.cs b/Assets/Scripts/Inventory/InventoryController.cs index 6e620d0..7c8a644 100644 --- a/Assets/Scripts/Inventory/InventoryController.cs +++ b/Assets/Scripts/Inventory/InventoryController.cs @@ -74,7 +74,7 @@ namespace YachtDice.Inventory RefreshView(); } - private void HandleCategoryConfirmed(CategoryDefinitionSO category, ScoreResult result) + private void HandleCategoryConfirmed(CategoryDefinition category, ScoreResult result) { model.ConsumeUseOnActive(); } diff --git a/Assets/Scripts/Modifiers/Conditions/CategoryCondition.cs b/Assets/Scripts/Modifiers/Conditions/CategoryCondition.cs index 486345f..0416d32 100644 --- a/Assets/Scripts/Modifiers/Conditions/CategoryCondition.cs +++ b/Assets/Scripts/Modifiers/Conditions/CategoryCondition.cs @@ -9,7 +9,7 @@ namespace YachtDice.Modifiers.Conditions [CreateAssetMenu(fileName = "CategoryCondition", menuName = "YachtDice/Modifiers/Conditions/Category")] public class CategoryCondition : ConditionSO { - [SerializeField] private CategoryDefinitionSO requiredCategory; + [SerializeField] private CategoryDefinition requiredCategory; public override bool Evaluate(ModifierContext context, ModifierInstance instance) { @@ -17,7 +17,7 @@ namespace YachtDice.Modifiers.Conditions } #if UNITY_EDITOR - public static CategoryCondition CreateForTest(CategoryDefinitionSO category) + public static CategoryCondition CreateForTest(CategoryDefinition category) { var so = CreateInstance(); so.requiredCategory = category; diff --git a/Assets/Scripts/Modifiers/Core/ModifierContext.cs b/Assets/Scripts/Modifiers/Core/ModifierContext.cs index a01ffb9..8887687 100644 --- a/Assets/Scripts/Modifiers/Core/ModifierContext.cs +++ b/Assets/Scripts/Modifiers/Core/ModifierContext.cs @@ -22,7 +22,7 @@ namespace YachtDice.Modifiers.Core public int[] DiceValues; /// Категория, в которую записывается результат. - public CategoryDefinitionSO Category; + public CategoryDefinition Category; // Game state (read-only snapshot) public int CurrentRoll; @@ -56,7 +56,7 @@ namespace YachtDice.Modifiers.Core public static ModifierContext CreateForScoring( int baseScore, IReadOnlyList dice, - CategoryDefinitionSO category, + CategoryDefinition category, int currentRoll, int currentTurn, int playerCurrency, diff --git a/Assets/Scripts/Scoring/ScoreResult.cs b/Assets/Scripts/Scoring/ScoreResult.cs index 88751f3..d4cdaba 100644 --- a/Assets/Scripts/Scoring/ScoreResult.cs +++ b/Assets/Scripts/Scoring/ScoreResult.cs @@ -13,11 +13,11 @@ namespace YachtDice.Scoring public int FlatBonus; public float Multiplier; public int[] DiceValues; - public CategoryDefinitionSO Category; + public CategoryDefinition Category; public int FinalScore => Mathf.FloorToInt((BaseScore + FlatBonus) * Multiplier); - public static ScoreResult Create(int baseScore, IReadOnlyList dice, CategoryDefinitionSO category) + public static ScoreResult Create(int baseScore, IReadOnlyList dice, CategoryDefinition category) { return new ScoreResult { diff --git a/Assets/Scripts/Scoring/ScoringSystem.cs b/Assets/Scripts/Scoring/ScoringSystem.cs index a257338..363c592 100644 --- a/Assets/Scripts/Scoring/ScoringSystem.cs +++ b/Assets/Scripts/Scoring/ScoringSystem.cs @@ -13,30 +13,30 @@ namespace YachtDice.Scoring { public class ScoringSystem : MonoBehaviour { - public event Action OnCategoryScored; + public event Action OnCategoryScored; public event Action OnAllCategoriesScored; - public event Action OnCategoryConfirmed; + public event Action OnCategoryConfirmed; - private readonly Dictionary scorecard = new(); - private readonly HashSet usedCategories = new(); + private readonly Dictionary scorecard = new(); + private readonly HashSet usedCategories = new(); private GameEventBus eventBus; private ModifierRegistry modifierRegistry; - private CategoryCatalogSO catalog; + private CategoryCatalog catalog; [Inject] - public void Construct(GameEventBus eventBus, ModifierRegistry modifierRegistry, CategoryCatalogSO catalog) + public void Construct(GameEventBus eventBus, ModifierRegistry modifierRegistry, CategoryCatalog catalog) { this.eventBus = eventBus; this.modifierRegistry = modifierRegistry; this.catalog = catalog; } - public CategoryCatalogSO Catalog => catalog; + public CategoryCatalog Catalog => catalog; - public bool IsCategoryUsed(CategoryDefinitionSO category) => usedCategories.Contains(category); + public bool IsCategoryUsed(CategoryDefinition category) => usedCategories.Contains(category); - public int GetCategoryScore(CategoryDefinitionSO category) + public int GetCategoryScore(CategoryDefinition category) { return scorecard.TryGetValue(category, out int score) ? score : -1; } @@ -57,7 +57,7 @@ namespace YachtDice.Scoring public bool IsComplete => CategoriesFilledCount >= TotalCategoryCount; - public ScoreResult PreviewScore(IReadOnlyList dice, CategoryDefinitionSO category, + public ScoreResult PreviewScore(IReadOnlyList dice, CategoryDefinition category, int currentRoll = 0, int currentTurn = 0, int playerCurrency = 0) { int baseScore = category.Calculate(dice); @@ -75,7 +75,7 @@ namespace YachtDice.Scoring return context.ToScoreResult(); } - public async UniTask ScoreCategoryAsync(IReadOnlyList dice, CategoryDefinitionSO category, + public async UniTask ScoreCategoryAsync(IReadOnlyList dice, CategoryDefinition category, int currentRoll, int currentTurn, int playerCurrency) { if (usedCategories.Contains(category)) @@ -118,7 +118,7 @@ namespace YachtDice.Scoring return result; } - public ScoreResult ScoreCategory(IReadOnlyList dice, CategoryDefinitionSO category) + public ScoreResult ScoreCategory(IReadOnlyList dice, CategoryDefinition category) { if (usedCategories.Contains(category)) throw new InvalidOperationException($"Category {category.DisplayName} has already been scored."); diff --git a/Assets/Scripts/Tests/Editor/ModifierEffectTests.cs b/Assets/Scripts/Tests/Editor/ModifierEffectTests.cs index e43e949..e6a028f 100644 --- a/Assets/Scripts/Tests/Editor/ModifierEffectTests.cs +++ b/Assets/Scripts/Tests/Editor/ModifierEffectTests.cs @@ -11,12 +11,12 @@ namespace YachtDice.Tests { public class ModifierEffectTests { - private CategoryDefinitionSO testCategory; + private CategoryDefinition testCategory; [SetUp] public void SetUp() { - testCategory = SumAllCategorySO.CreateForTest("chance", "Шанс"); + testCategory = SumAllCategory.CreateForTest("chance", "Шанс"); } [TearDown] diff --git a/Assets/Scripts/Tests/Editor/ModifierPipelineTests.cs b/Assets/Scripts/Tests/Editor/ModifierPipelineTests.cs index aff9dd4..fe97abc 100644 --- a/Assets/Scripts/Tests/Editor/ModifierPipelineTests.cs +++ b/Assets/Scripts/Tests/Editor/ModifierPipelineTests.cs @@ -18,12 +18,12 @@ namespace YachtDice.Tests private ModifierPipeline pipeline; // Тестовые категории - private CategoryDefinitionSO chanceCategory; - private CategoryDefinitionSO fullHouseCategory; - private CategoryDefinitionSO onesCategory; - private CategoryDefinitionSO threesCategory; - private CategoryDefinitionSO foursCategory; - private CategoryDefinitionSO sixesCategory; + private CategoryDefinition chanceCategory; + private CategoryDefinition fullHouseCategory; + private CategoryDefinition onesCategory; + private CategoryDefinition threesCategory; + private CategoryDefinition foursCategory; + private CategoryDefinition sixesCategory; [SetUp] public void SetUp() @@ -32,12 +32,12 @@ namespace YachtDice.Tests pipeline = new ModifierPipeline(registry); pipeline.TracingEnabled = false; - chanceCategory = SumAllCategorySO.CreateForTest("chance", "Шанс"); - fullHouseCategory = FullHouseCategorySO.CreateForTest("full_house", "Фулл-хаус"); - onesCategory = SumOfValueCategorySO.CreateForTest("ones", "Единицы", 1); - threesCategory = SumOfValueCategorySO.CreateForTest("threes", "Тройки", 3); - foursCategory = SumOfValueCategorySO.CreateForTest("fours", "Четвёрки", 4); - sixesCategory = SumOfValueCategorySO.CreateForTest("sixes", "Шестёрки", 6); + chanceCategory = SumAllCategory.CreateForTest("chance", "Шанс"); + fullHouseCategory = FullHouseCategory.CreateForTest("full_house", "Фулл-хаус"); + onesCategory = SumOfValueCategory.CreateForTest("ones", "Единицы", 1); + threesCategory = SumOfValueCategory.CreateForTest("threes", "Тройки", 3); + foursCategory = SumOfValueCategory.CreateForTest("fours", "Четвёрки", 4); + sixesCategory = SumOfValueCategory.CreateForTest("sixes", "Шестёрки", 6); } [TearDown] @@ -67,7 +67,7 @@ namespace YachtDice.Tests registry.TryActivate(inst); } - private ModifierContext CreateScoringContext(int baseScore, int[] dice, CategoryDefinitionSO category) + private ModifierContext CreateScoringContext(int baseScore, int[] dice, CategoryDefinition category) { return new ModifierContext { diff --git a/Assets/Scripts/Tests/Editor/ScoringSystemTests.cs b/Assets/Scripts/Tests/Editor/ScoringSystemTests.cs index 55cdf8b..f996824 100644 --- a/Assets/Scripts/Tests/Editor/ScoringSystemTests.cs +++ b/Assets/Scripts/Tests/Editor/ScoringSystemTests.cs @@ -9,11 +9,11 @@ namespace YachtDice.Tests { public class ScoringSystemTests { - private CategoryDefinitionSO yachtCategory; - private CategoryDefinitionSO onesCategory; - private CategoryDefinitionSO twosCategory; - private CategoryDefinitionSO chanceCategory; - private CategoryCatalogSO catalog; + private CategoryDefinition yachtCategory; + private CategoryDefinition onesCategory; + private CategoryDefinition twosCategory; + private CategoryDefinition chanceCategory; + private CategoryCatalog catalog; private DieDefinitionSO standardDie; [SetUp] @@ -21,12 +21,12 @@ namespace YachtDice.Tests { standardDie = DieDefinitionSO.CreateForTest("d6", "d6"); - yachtCategory = NOfAKindCategorySO.CreateForTest("yacht", "Яхта", 5, fixedScoreMode: true, score: 50); - onesCategory = SumOfValueCategorySO.CreateForTest("ones", "Единицы", 1); - twosCategory = SumOfValueCategorySO.CreateForTest("twos", "Двойки", 2); - chanceCategory = SumAllCategorySO.CreateForTest("chance", "Шанс"); + yachtCategory = NOfAKindCategory.CreateForTest("yacht", "Яхта", 5, fixedScoreMode: true, score: 50); + onesCategory = SumOfValueCategory.CreateForTest("ones", "Единицы", 1); + twosCategory = SumOfValueCategory.CreateForTest("twos", "Двойки", 2); + chanceCategory = SumAllCategory.CreateForTest("chance", "Шанс"); - catalog = CategoryCatalogSO.CreateForTest(new List + catalog = CategoryCatalog.CreateForTest(new List { onesCategory, twosCategory, yachtCategory, chanceCategory }); @@ -77,7 +77,7 @@ namespace YachtDice.Tests public void ScoreCategory_FiresOnCategoryConfirmed() { var system = CreateScoringSystem(); - CategoryDefinitionSO firedCategory = null; + CategoryDefinition firedCategory = null; ScoreResult firedResult = default; system.OnCategoryConfirmed += (cat, res) => @@ -144,7 +144,7 @@ namespace YachtDice.Tests public void SumOfValueCategory_SumsCorrectly() { var dice = CreateDice(3, 3, 3, 1, 2); - var cat = SumOfValueCategorySO.CreateForTest("threes", "Тройки", 3); + var cat = SumOfValueCategory.CreateForTest("threes", "Тройки", 3); Assert.AreEqual(9, cat.Calculate(dice)); @@ -154,7 +154,7 @@ namespace YachtDice.Tests [Test] public void NOfAKindCategory_ThreeOfAKind_ReturnsSumOrZero() { - var cat = NOfAKindCategorySO.CreateForTest("three_of_a_kind", "Тройка", 3); + var cat = NOfAKindCategory.CreateForTest("three_of_a_kind", "Тройка", 3); Assert.AreEqual(17, cat.Calculate(CreateDice(4, 4, 4, 3, 2))); // sum = 17 Assert.AreEqual(0, cat.Calculate(CreateDice(1, 2, 3, 4, 5))); // no 3-of-a-kind @@ -172,7 +172,7 @@ namespace YachtDice.Tests [Test] public void FullHouseCategory_CalculatesCorrectly() { - var cat = FullHouseCategorySO.CreateForTest("fh", "Фулл-хаус", 25); + var cat = FullHouseCategory.CreateForTest("fh", "Фулл-хаус", 25); Assert.AreEqual(25, cat.Calculate(CreateDice(3, 3, 3, 2, 2))); Assert.AreEqual(0, cat.Calculate(CreateDice(3, 3, 3, 3, 2))); @@ -183,7 +183,7 @@ namespace YachtDice.Tests [Test] public void StraightCategory_SmallStraight() { - var cat = StraightCategorySO.CreateForTest("ss", "Малый стрит", 4, 30); + var cat = StraightCategory.CreateForTest("ss", "Малый стрит", 4, 30); Assert.AreEqual(30, cat.Calculate(CreateDice(1, 2, 3, 4, 6))); Assert.AreEqual(0, cat.Calculate(CreateDice(1, 2, 3, 5, 6))); @@ -194,7 +194,7 @@ namespace YachtDice.Tests [Test] public void StraightCategory_LargeStraight() { - var cat = StraightCategorySO.CreateForTest("ls", "Большой стрит", 5, 40); + var cat = StraightCategory.CreateForTest("ls", "Большой стрит", 5, 40); Assert.AreEqual(40, cat.Calculate(CreateDice(1, 2, 3, 4, 5))); Assert.AreEqual(40, cat.Calculate(CreateDice(2, 3, 4, 5, 6))); diff --git a/Assets/Scripts/UI/CategoryRowView.cs b/Assets/Scripts/UI/CategoryRowView.cs index 8f3d6f7..eb34ec1 100644 --- a/Assets/Scripts/UI/CategoryRowView.cs +++ b/Assets/Scripts/UI/CategoryRowView.cs @@ -21,12 +21,12 @@ namespace YachtDice.UI [SerializeField] private Color previewPositiveColor = new Color(0.85f, 1f, 0.85f, 1f); [SerializeField] private Color previewZeroColor = new Color(1f, 0.88f, 0.88f, 1f); - private CategoryDefinitionSO category; + private CategoryDefinition category; private bool isUsed; - public event Action OnCategorySelected; + public event Action OnCategorySelected; - public void Initialize(CategoryDefinitionSO categoryDef) + public void Initialize(CategoryDefinition categoryDef) { category = categoryDef; isUsed = false; diff --git a/Assets/Scripts/UI/GameController.cs b/Assets/Scripts/UI/GameController.cs index 8b57dcb..6fa13ce 100644 --- a/Assets/Scripts/UI/GameController.cs +++ b/Assets/Scripts/UI/GameController.cs @@ -39,12 +39,12 @@ namespace YachtDice.UI private const int UpperBonusValue = 35; private ModifierRegistry modifierRegistry; - private CategoryCatalogSO categoryCatalog; + private CategoryCatalog categoryCatalog; private InventoryModel inventoryModel; private ShopModel shopModel; [Inject] - public void Construct(ModifierRegistry modifierRegistry, CategoryCatalogSO categoryCatalog) + public void Construct(ModifierRegistry modifierRegistry, CategoryCatalog categoryCatalog) { this.modifierRegistry = modifierRegistry; this.categoryCatalog = categoryCatalog; @@ -217,7 +217,7 @@ namespace YachtDice.UI dicePanelView.SetDieValue(index, value); } - private void HandleScored(CategoryDefinitionSO category, int finalScore) + private void HandleScored(CategoryDefinition category, int finalScore) { scoreCardView.SetCategoryScored(category, finalScore); UpdateTotalDisplay(); @@ -259,7 +259,7 @@ namespace YachtDice.UI dicePanelView.SetDieLocked(index, isLocked); } - private void HandleCategorySelected(CategoryDefinitionSO category) + private void HandleCategorySelected(CategoryDefinition category) { if (!gameManager.CanScore) return; if (scoringSystem.IsCategoryUsed(category)) return; @@ -317,7 +317,7 @@ namespace YachtDice.UI private void UpdatePreviewScores() { var dice = diceManager.GetDice(); - var previews = new Dictionary(); + var previews = new Dictionary(); var allCategories = categoryCatalog.All; for (int i = 0; i < allCategories.Count; i++) diff --git a/Assets/Scripts/UI/ScoreCardView.cs b/Assets/Scripts/UI/ScoreCardView.cs index fbfb584..a36fd50 100644 --- a/Assets/Scripts/UI/ScoreCardView.cs +++ b/Assets/Scripts/UI/ScoreCardView.cs @@ -16,19 +16,19 @@ namespace YachtDice.UI [SerializeField] private TMP_Text upperBonusText; [SerializeField] private TMP_Text totalScoreText; - public event Action OnCategorySelected; + public event Action OnCategorySelected; - private CategoryCatalogSO catalog; - private Dictionary categoryToRowIndex; + private CategoryCatalog catalog; + private Dictionary categoryToRowIndex; /// /// Инициализирует скоркарту из каталога категорий. /// Вызывается из GameController после DI. /// - public void Initialize(CategoryCatalogSO categoryCatalog) + public void Initialize(CategoryCatalog categoryCatalog) { catalog = categoryCatalog; - categoryToRowIndex = new Dictionary(); + categoryToRowIndex = new Dictionary(); var all = catalog.All; int count = Mathf.Min(categoryRows.Count, all.Count); @@ -43,7 +43,7 @@ namespace YachtDice.UI UpdateTotalDisplay(0, 0, false); } - public void UpdatePreviews(Dictionary previews) + public void UpdatePreviews(Dictionary previews) { foreach (var kvp in previews) { @@ -64,7 +64,7 @@ namespace YachtDice.UI } } - public void SetCategoryScored(CategoryDefinitionSO category, int score) + public void SetCategoryScored(CategoryDefinition category, int score) { if (categoryToRowIndex.TryGetValue(category, out int index)) categoryRows[index].SetRecordedScore(score); @@ -91,7 +91,7 @@ namespace YachtDice.UI UpdateTotalDisplay(0, 0, false); } - private void HandleCategorySelected(CategoryDefinitionSO category) + private void HandleCategorySelected(CategoryDefinition category) { OnCategorySelected?.Invoke(category); }