Standardize all class, interface, file, method, event, field, and variable
names from the inconsistent "Die" form to "Dice", matching the existing
DiceManager/DiceCatalog/DiceCollection convention.
Renamed files (7 + meta): IDie→IDice, DieInstance→DiceInstance,
DieDefinitionSO→DiceDefinitionSO, StandardDieSO→StandardDiceSO,
DieValueCondition→DiceValueCondition, AddPerDieEffect→AddPerDiceEffect,
MultiplyPerDieEffect→MultiplyPerDiceEffect.
Updated all 31 consumer and test files with matching reference changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert serialized private fields with public arrow getters to
[field: SerializeField] auto-properties across ScriptableObjects
(DieDefinitionSO, CategoryDefinition, ModifierDefinition, Effect,
ModifierBehavior, SumOfValueCategory) and select MonoBehaviours
(DiceRoller, Dice.Entry struct). Fields with type-changing getters
(List→IReadOnlyList) or computed getters are intentionally kept as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generalize the shop from selling only ModifierDefinition to any IShopItem
(modifiers + dice). Add purchase condition checks, hover tooltips, and
fixed prices. Introduce PlayerModel as a facade over CurrencyBank,
InventoryModel, and DiceCollection for centralized state and save/load.
New files:
- IShopItem interface for purchasable items
- ShopCatalog SO (unified catalog for all item types)
- ShopTooltipView (description on hover)
- PlayerModel (aggregates player state)
- DiceCollection (owned dice tracking)
- DiceCatalog SO (dice definition registry)
- DiceCollectionTests
Modified:
- ModifierDefinition/DieDefinitionSO implement IShopItem
- ShopModel/ShopView/ShopItemView/ShopController use IShopItem
- SaveData v3 with OwnedDiceIds
- GameController uses PlayerModel for save/load
- GameLifetimeScope registers new services
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add abstract dice system (IDie interface, DieDefinitionSO, StandardDieSO, DieInstance)
to support future custom dice types while keeping backward compat via int[] DiceValues
- Replace YachtCategory enum and CategoryScorer switch with CategoryDefinitionSO hierarchy:
SumOfValueCategorySO, NOfAKindCategorySO, FullHouseCategorySO, StraightCategorySO, SumAllCategorySO
- Add CategoryCatalogSO for ordered category collections and DiceCheckUtility for shared logic
- Refactor ScoringSystem, Views, GameManager, GameController to use SO references
- Update CategoryCondition modifier to use SO reference instead of enum
- Update all editor tests to use SO-based categories and DieInstance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements the core game loop for Yacht dice: 5-dice rolling with
lock/unlock, 3 rolls per turn, 13 standard scoring categories, and
an extensible ScriptableObject-based modifier system that applies
additive then multiplicative bonuses (chips+mult pattern).
Includes two test modifiers: BonusForOnes (+10 per 1) and
MultiplierForSixes (x6 per 6).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>