Commit Graph
83 Commits
Author SHA1 Message Date
horooko f2173d2c73 [Add] Game Loop Playable 2026-03-28 12:53:34 +07:00
horooko 78ad76120f [Temp] UI Fix 2026-03-28 02:51:46 +07:00
horooko 537ae1ce5c [Add] GameLoop base 2026-03-18 09:13:48 +07:00
horooko c819c0d045 [Fix] Test 2026-03-09 22:34:20 +07:00
horooko 6a3d419b1e [Fix] Move files 2026-03-08 11:36:31 +07:00
horooko 8ddcfb5018 [Fix] Closest Quaternion 2026-03-08 00:45:14 +07:00
horooko 9236d66022 [Rem] Upper sum Text & upper bonus text | previewText & recordedScoreText (move to scoreText) 2026-03-08 00:34:45 +07:00
horooko dc82e93322 [Add] Dice return script 2026-03-07 14:42:31 +07:00
horooko 26dbe82f47 [Add] Master Dice 2026-03-07 05:54:25 +07:00
horooko 73b941d5eb [Add] Master Category 2026-03-06 23:29:46 +07:00
horooko 9580d76a53 [Add] Tests summary & fix scene 2026-03-05 10:21:05 +07:00
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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horookoandClaude Opus 4.6 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
horooko 263259f3fc [Add] Base Roll UI 2026-02-27 04:14:19 +07:00
horooko 788dbc69e0 [Add] meta 2026-02-27 03:49:04 +07:00
horooko 58db4df9c4 Merge branch 'claude/nifty-turing' 2026-02-27 03:45:03 +07:00
horookoandClaude Opus 4.6 d06ad78645 [Add] MVC UI for Yacht Dice scorecard
View layer: CategoryRowView (reusable x13 row with preview/recorded
score display), ScoreCardView (full scorecard panel with Russian
category names, upper bonus tracking), DicePanelView (5 dice buttons
with lock toggle + roll counter), GameInfoView (turn display + game
over overlay).

Controller layer: GameController bridges Model and View — subscribes
to model events in Awake() to catch GameManager.Start(), routes UI
clicks to game logic, computes preview scores for all unfilled
categories after each roll, handles upper section bonus (63+ = +35).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 03:44:37 +07:00
horooko 15608d4994 [Add] Unity MCP 2026-02-27 03:43:41 +07:00
horooko 9557633ff3 [Fix] Move files in project, add color folders 2026-02-27 03:23:21 +07:00
horooko 6ee2053a7a [Rem] Docs 2026-02-27 03:19:23 +07:00
horooko 442544a84a [Fix] Move VFavorites & VFolders 2026-02-27 03:18:12 +07:00
horooko d924cf78f5 [Add] vFolders 2 2026-02-27 03:17:32 +07:00
horooko e04f8a4395 [Add] vFavorites 2 2026-02-27 03:17:04 +07:00
horooko b37579153b [Add] Hot Reload 2026-02-27 03:16:18 +07:00
horooko 5067cb51a1 [Add] System to Scene 2026-02-27 03:06:55 +07:00
horookoandClaude Opus 4.6 f49cda7cdc [Add] Yacht scoring system with Balatro-like modifier pipeline
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>
2026-02-27 03:01:19 +07:00
horooko b33017a320 [Add] New Dice 2026-02-26 23:14:26 +07:00
horooko 6da112fb97 [Add] Dice to Scene 2026-02-26 16:06:30 +07:00
horookoandClaude Opus 4.6 55e4857af4 [Add] DiceRoller — beautiful physics-based dice throw animation
Adds a coroutine-driven roller that tosses the dice with random impulse
and torque, waits for physics to settle, then smoothly snaps to the
nearest aligned face via Slerp. Exposes OnRollFinished event with the
rolled value.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:46:38 +07:00
horooko 688b623625 [Add] Base Scene 2026-02-26 07:09:51 +07:00
horooko 91b4f3f119 [Add] Dice Final 2026-02-23 23:57:45 +07:00
horooko d39b1e88b5 [Add] TextMeshPro and Base Dice System 2026-02-23 23:19:57 +07:00
horooko 2f9e082d75 [Fix] All in one + add dice 2026-02-23 22:24:46 +07:00
horooko 4f942cd7c0 [Add] All in one shader 2026-02-23 22:01:07 +07:00
horooko ec0aa86ac2 Init Project 2026-02-23 21:56:13 +07:00