Commit Graph

73 Commits

Author SHA1 Message Date
horooko 05c2619de4 [Fix] Limited Use Modifier 2026-03-05 09:52:26 +07:00
horooko 72bbdc76af [Fix] ScoringSystem 2026-03-05 09:41:23 +07:00
horooko dc901b9895 [Add] Debugger Inventory & small ui fixes 2026-03-05 09:03:19 +07:00
horooko d75dad3fa3 [Add] Coliders & max Rolls set debug 2026-03-05 07:08:19 +07:00
horooko 74c99a6ebc [Add] Game info 2026-03-05 07:02:13 +07:00
horooko 86ce7c2888 [Add] Dice Panel 2026-03-05 06:41:55 +07:00
horooko 3b464f0be1 [Add] Category UI 2026-03-04 22:58:40 +07:00
horooko 3793686dcf [Refactor] Final fix GameManager & GameController 2026-03-04 07:20:42 +07:00
horooko 3031d2e4c2 [Refactor] Fix GameController 2026-03-04 06:48:21 +07:00
horooko 244f635062 [Add] UI and fix modifiers 2026-03-04 06:39:06 +07:00
horooko f52131f755 [Fix] Refactor project 2026-03-02 12:49:12 +07:00
horooko f65976796d [Add] Dice & Refactor private names 2026-03-02 11:22:01 +07:00
horooko 4890fa946e [Fix] Add PlaceHolder 2026-03-02 08:43:49 +07:00
horooko 1d6a6b3b7a [Fix] Временный перевод на русский язык 2026-03-02 08:29:30 +07:00
horooko c51ae03032 [Add] Modifiers 2026-03-02 08:20:30 +07:00
horooko 82483442cf [Add] ModifierCatalog 2026-03-02 07:09:37 +07:00
horooko d35bfdc6b4 [Add] Place Holder 2026-03-02 06:19:00 +07:00
horooko d6b79036b7 [Fix] Conflicts 2026-03-02 05:43:11 +07:00
horooko 0cce4a74f0 Merge branch 'claude/vibrant-tereshkova'
# Conflicts:
#	Assets/Scripts/Dice/DiceCatalog.cs
#	Assets/Scripts/Dice/DiceDefinitionSO.cs
#	Assets/Scripts/Dice/DiceDefinitionSO.cs.meta
#	Assets/Scripts/Dice/DiceInstance.cs
#	Assets/Scripts/Dice/DiceRoller.cs
#	Assets/Scripts/Dice/DieDefinitionSO.cs
#	Assets/Scripts/Dice/DieDefinitionSO.cs.meta
#	Assets/Scripts/Dice/DiсeDefinition.cs
#	Assets/Scripts/Dice/DiсeDefinition.cs.meta
#	Assets/Scripts/Dice/IDice.cs
#	Assets/Scripts/Dice/StandardDiceSO.cs
#	Assets/Scripts/Dice/StandardDiceSO.cs.meta
#	Assets/Scripts/Dice/StandardDieSO.cs
#	Assets/Scripts/Dice/StandardDieSO.cs.meta
#	Assets/Scripts/Dice/StandardDiсe.cs
#	Assets/Scripts/Dice/StandardDiсe.cs.meta
#	Assets/Scripts/Player/DiceCollection.cs
#	Assets/Scripts/Shop/ShopModel.cs
#	Assets/Scripts/Tests/Editor/DiceCollectionTests.cs
#	Assets/Scripts/Tests/Editor/ScoringSystemTests.cs
#	Assets/Scripts/Tests/Editor/ShopModelTests.cs
2026-03-02 05:39:54 +07:00
horooko 13b18b0a8b [Rename] Unify Die → Dice naming across the entire project
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>
2026-03-02 05:37:12 +07:00
horooko 29ee43807e [Add] Data 2026-03-02 05:25:05 +07:00
horooko 06a75436fe Merge branch 'claude/vibrant-tereshkova'
# Conflicts:
#	Assets/Scripts/Dice/DiceRoller.cs
2026-03-01 21:30:39 +07:00
horooko ddc3b4af47 [Refactor] Replace [SerializeField] + getter with [field: SerializeField] auto-properties 2026-03-01 21:29:47 +07:00
horooko f6c354d41c [Refactor] Replace [SerializeField] + getter with [field: SerializeField] auto-properties
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>
2026-03-01 21:28:48 +07:00
horooko 30f9532fd7 [Add] Meta 2026-03-01 21:12:51 +07:00
horooko fcceb0ce45 Rework shop to support multiple item types and add unified PlayerModel
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>
2026-03-01 21:04:34 +07:00
horooko 62864dc103 [Refactor] Replace [SerializeField] + getter with [field: SerializeField] auto-properties
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:33:15 +07:00
horooko 85d639aa70 [Fix] Name & add meta 2026-03-01 16:23:41 +07:00
horooko 3c50415111 Extend VContainer DI: eliminate manual composition and duplicate references
- Register InventoryModel, ShopModel as container-managed singletons
- Register GameController, ShopController, InventoryController via RegisterComponent
- Replace [SerializeField] with [Inject] for service dependencies in controllers
- Move maxActiveModifierSlots config to GameLifetimeScope (composition root)
- Remove manual model creation and Initialize() calls from GameController
- Add ToggleVisibility() to ShopController/InventoryController, removing GetComponentInChildren
- Move event subscriptions from Awake to Start for safe VContainer injection order
- Transfer game startup orchestration to GameController.Start()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 16:14:44 +07:00
horooko 6c10a35bf9 [Fix] Naming 2026-03-01 11:52:15 +07:00
horooko 0f9b162061 [Refactor] Replace hardcoded categories with data-driven SO system and abstract dice
- 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>
2026-03-01 11:46:50 +07:00
horooko 6a48d68f75 Delete Editor.meta 2026-03-01 06:32:50 +07:00
horooko 549fffd69e [Fix] DI 2026-03-01 06:31:21 +07:00
horooko 10a9417039 [Fix] 2026-03-01 06:29:09 +07:00
horooko 85aedc6def [Add] Meta 2026-03-01 06:25:06 +07:00
horooko 68c4abace3 [Refactor] Replace enum-driven modifier system with data-driven SO composition
Replace the entire static, enum-based modifier pipeline with a
composition-based, data-driven architecture using ScriptableObject
polymorphism. New modifiers can now be created by assembling SO building
blocks (Conditions + Effects + Behaviors) — no core code edits needed.

New architecture:
- Core/: TriggerType, ModifierPhase, ModifierContext, ICondition, IEffect
- Definition/: ModifierDefinitionSO, ModifierBehaviorSO, ConditionSO, EffectSO, ModifierCatalogSO
- Conditions/: DieValueCondition, CategoryCondition, MinScoreCondition, DiceCountCondition
- Effects/: AddFlat, AddPerDie, Multiply, MultiplyPerDie, PostMultiply, AddCurrency, ConsumeCharge
- Runtime/: ModifierInstance, ModifierRegistry (non-static service)
- Pipeline/: async ModifierPipeline with phase ordering, tracing, anti-recursion
- Editor/: ModifierDefinitionValidator with menu items
- Events/: GameEventBus (non-static typed dispatcher)
- DI/: GameLifetimeScope (VContainer composition root)

Deleted old system: ModifierData, ModifierEffect, ModifierEnums,
ModifierPipeline (static), ModifierRuntime, ModifierTarget, ShopCatalog,
ModifierAssetCreator.

Updated: ScoringSystem (VContainer + async), InventoryModel (delegates to
ModifierRegistry), ShopModel (uses ModifierDefinitionSO), GameController
(VContainer injection), SaveData (uses Runtime.ModifierSaveEntry), all
views/controllers, and all test files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 06:20:23 +07:00
horooko 6e19de2f3d [Add] VContainer 2026-02-28 20:15:13 +07:00
horooko 159cfd49a9 [Add] Unitask 2026-02-28 19:33:34 +07:00
horooko e24b30743b [Fix] Code visual 2026-02-28 19:25:26 +07:00
horooko bee20fd1f8 [Refactor] Add folder-based namespaces to all C# scripts
Wrap all 39 scripts and 6 test files in namespaces matching their folder
structure (e.g. Assets/Scripts/Dice/ → YachtDice.Dice). Add cross-namespace
using directives where types are referenced across modules. Set rootNamespace
in both .asmdef files (YachtDice, YachtDice.Tests).

Namespace mapping:
- YachtDice.Dice — Dice, DiceRoller
- YachtDice.Economy — CurrencyBank
- YachtDice.Game — GameManager, DiceManager, DebugGameInput
- YachtDice.Inventory — InventoryController/Model/SlotView/View
- YachtDice.Modifiers — ModifierData/Effect/Enums/Pipeline/Runtime/Target
- YachtDice.Persistence — SaveData, SaveSystem
- YachtDice.Scoring — CategoryScorer, ScoreResult, ScoringSystem, YachtCategory
- YachtDice.Shop — ShopCatalog/Controller/ItemView/Model/View
- YachtDice.UI — CategoryRowView, DicePanelView, GameController, GameInfoView, ScoreCardView
- YachtDice.Editor — ModifierAssetCreator
- YachtDice.Tests — all test files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 19:06:57 +07:00
horooko d3594f23f9 [Add] Project meta 2026-02-28 06:43:59 +07:00
horooko ba626acb9b [Add] Universal modifier system, shop, inventory & persistence
Replace hardcoded BonusForOnes/MultiplierForSixes with data-driven
modifier system supporting 2 scopes (SelectedCategory, AnyCategoryClosed),
4 effect types, durability modes (Permanent, LimitedUses), and
configurable targets via ScriptableObject (ModifierData).

- Modifier domain: ModifierEnums, ModifierTarget, ModifierData,
  ModifierRuntime, ModifierEffect (dict-based strategy), ModifierPipeline
  (4-pass: cat-additive → cat-multiplicative → final-additive → final-multiplicative)
- ScoringSystem: replaced old modifier list with ModifierPipeline integration,
  added OnCategoryConfirmed event
- Shop MVC: ShopCatalog (SO), ShopModel, ShopView, ShopItemView, ShopController
- Inventory MVC: InventoryModel (activate/deactivate/sell/durability),
  InventoryView, InventorySlotView, InventoryController
- CurrencyBank: editor-adjustable balance with events
- Persistence: SaveData + SaveSystem (Newtonsoft JSON + PlayerPrefs)
- Editor: ModifierAssetCreator menu item to generate 6 example modifiers + catalog
- Tests: 6 test classes covering effects, pipeline, scoring, shop, inventory, save
- GameController: wired shop/inventory/save lifecycle
- GameInfoView: added currency display, shop/inventory toggle buttons

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 06:40:33 +07:00
horooko 4f8db3158f [Add] Category Row 2026-02-28 05:02:49 +07:00
horooko 2b4daff8ee Merge branch 'claude/keen-pasteur' 2026-02-27 19:16:53 +07:00
horooko c56d145714 [Update] Split CategoryRowView scoreText into preview and recorded fields
Separate the single scoreText into previewText (potential score) and
recordedScoreText (committed value) so both are visible simultaneously.
Public API preserved — no changes needed in ScoreCardView or GameController.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 19:15:44 +07:00
horooko 545e27c145 [Rem] Demo 2026-02-27 17:06:33 +07:00
horooko 6340a011f9 [Add] Ultimate Preview 2026-02-27 04:40:03 +07:00
horooko 37076cfaaf Update SampleScene.unity 2026-02-27 04:33:57 +07:00
horooko d7c6488e74 Update SampleScene.unity 2026-02-27 04:19:24 +07:00
horooko 3b02df06fa [Fix] Move UnityMCP 2026-02-27 04:19:03 +07:00