[Add] Master Category
This commit is contained in:
@@ -12,17 +12,19 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: e89ee3a4aac1e6d4eabd79f32b9d8d15, type: 3}
|
m_Script: {fileID: 11500000, guid: e89ee3a4aac1e6d4eabd79f32b9d8d15, type: 3}
|
||||||
m_Name: CategoryCatalog
|
m_Name: CategoryCatalog
|
||||||
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.CategoryCatalog
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.CategoryCatalog
|
||||||
|
upperBonusThreshold: 63
|
||||||
|
upperBonusValue: 35
|
||||||
categories:
|
categories:
|
||||||
- {fileID: 11400000, guid: ad75115a9ee3dd34598b1521d1f34a08, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d201, type: 2}
|
||||||
- {fileID: 11400000, guid: 5be00d38f4e40664788d28114856e446, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d202, type: 2}
|
||||||
- {fileID: 11400000, guid: 7474d22b4785b4b42a16be1fe12e53e3, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d203, type: 2}
|
||||||
- {fileID: 11400000, guid: 492827790313e6f43944e19a0f3a6a9c, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d204, type: 2}
|
||||||
- {fileID: 11400000, guid: 7e18f115081820946a1a4a53d56f4f0f, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d205, type: 2}
|
||||||
- {fileID: 11400000, guid: 4b1c9794957ddfb48a7674531139919b, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d206, type: 2}
|
||||||
- {fileID: 11400000, guid: 89432fbaba032e646994088d85b96c99, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d207, type: 2}
|
||||||
- {fileID: 11400000, guid: 9ea1413e6e9091d4996ee74dd769d671, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d208, type: 2}
|
||||||
- {fileID: 11400000, guid: 24c8bd19b58357749a1819c0e0c124d9, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d209, type: 2}
|
||||||
- {fileID: 11400000, guid: 0ed686ef060a26a48a9892d467f83bc2, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d210, type: 2}
|
||||||
- {fileID: 11400000, guid: e9bf7be35c88f2845a4ad5dc81c5b9d2, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d211, type: 2}
|
||||||
- {fileID: 11400000, guid: 3241fb265c623174fac9d0d1ca1f5f05, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d212, type: 2}
|
||||||
- {fileID: 11400000, guid: 0822490ecb8ce224d861379ddb7b76ab, type: 2}
|
- {fileID: 11400000, guid: 8b91a7af0ef2405ab2cf880b4ee6d213, type: 2}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d111
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc004, type: 3}
|
||||||
|
m_Name: 10_MasterKindCategory_4
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterKindCategory
|
||||||
|
<Id>k__BackingField: master_four_of_a_kind
|
||||||
|
<DisplayName>k__BackingField: "\u041A\u0430\u0440\u0435"
|
||||||
|
<Description>k__BackingField: "\u0427\u0435\u0442\u044B\u0440\u0435 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B\u0445: \u0441\u0443\u043C\u043C\u0430 \u0433\u0440\u0443\u043F\u043F\u044B + n"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
requiredCount: 4
|
||||||
|
valueBonusMultiplier: 1
|
||||||
|
flatBonus: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d210
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc004, type: 3}
|
||||||
|
m_Name: 11_MasterKindCategory_5
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterKindCategory
|
||||||
|
<Id>k__BackingField: master_poker
|
||||||
|
<DisplayName>k__BackingField: "\u041F\u043E\u043A\u0435\u0440"
|
||||||
|
<Description>k__BackingField: "\u041F\u044F\u0442\u044C \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B\u0445: \u0441\u0443\u043C\u043C\u0430 \u0433\u0440\u0443\u043F\u043F\u044B + n * 2"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
requiredCount: 5
|
||||||
|
valueBonusMultiplier: 2
|
||||||
|
flatBonus: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d211
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc004, type: 3}
|
||||||
|
m_Name: 12_MasterKindCategory_6
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterKindCategory
|
||||||
|
<Id>k__BackingField: master_master
|
||||||
|
<DisplayName>k__BackingField: "\u041C\u0430\u0441\u0442\u0435\u0440"
|
||||||
|
<Description>k__BackingField: "\u0428\u0435\u0441\u0442\u044C \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B\u0445: \u0441\u0443\u043C\u043C\u0430 \u0433\u0440\u0443\u043F\u043F\u044B + n * 3"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
requiredCount: 6
|
||||||
|
valueBonusMultiplier: 3
|
||||||
|
flatBonus: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d212
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: aeb4a3033474e7c4b945a3c5a71df067, type: 3}
|
||||||
|
m_Name: 13_SumAllCategory
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.SumAllCategory
|
||||||
|
<Id>k__BackingField: chance
|
||||||
|
<DisplayName>k__BackingField: "\u0428\u0430\u043D\u0441"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u043A\u0443\u0431\u0438\u043A\u043E\u0432 \u0432 \u043B\u044E\u0431\u043E\u0439 \u043C\u043E\u043C\u0435\u043D\u0442"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d213
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 1_MasterValueCategory1
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_ones
|
||||||
|
<DisplayName>k__BackingField: "\u0415\u0434\u0438\u043D\u0438\u0446\u044B"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u0435\u0434\u0438\u043D\u0438\u0446 + 1 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 1
|
||||||
|
<CategoryBonus>k__BackingField: 1
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d201
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 2_MasterValueCategory2
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_twos
|
||||||
|
<DisplayName>k__BackingField: "\u0414\u0432\u043E\u0439\u043A\u0438"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u0434\u0432\u043E\u0435\u043A + 2 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 2
|
||||||
|
<CategoryBonus>k__BackingField: 2
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d202
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 3_MasterValueCategory3
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_threes
|
||||||
|
<DisplayName>k__BackingField: "\u0422\u0440\u043E\u0439\u043A\u0438"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u0442\u0440\u043E\u0435\u043A + 3 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 3
|
||||||
|
<CategoryBonus>k__BackingField: 3
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d203
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 4_MasterValueCategory4
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_fours
|
||||||
|
<DisplayName>k__BackingField: "\u0427\u0435\u0442\u0432\u0435\u0440\u043A\u0438"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u0432\u0435\u0440\u043E\u043A + 4 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 4
|
||||||
|
<CategoryBonus>k__BackingField: 4
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d204
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 5_MasterValueCategory5
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_fives
|
||||||
|
<DisplayName>k__BackingField: "\u041F\u044F\u0442\u0435\u0440\u043A\u0438"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u043F\u044F\u0442\u0435\u0440\u043E\u043A + 5 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 5
|
||||||
|
<CategoryBonus>k__BackingField: 5
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d205
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001, type: 3}
|
||||||
|
m_Name: 6_MasterValueCategory6
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterValueCategory
|
||||||
|
<Id>k__BackingField: master_sixes
|
||||||
|
<DisplayName>k__BackingField: "\u0428\u0435\u0441\u0442\u0435\u0440\u043A\u0438"
|
||||||
|
<Description>k__BackingField: "\u0421\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u0448\u0435\u0441\u0442\u0435\u0440\u043E\u043A + 6 \u0431\u043E\u043D\u0443\u0441 \u043A\u0430\u0442\u0435\u0433\u043E\u0440\u0438\u0438"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 1
|
||||||
|
<TargetValue>k__BackingField: 6
|
||||||
|
<CategoryBonus>k__BackingField: 6
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d206
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc002, type: 3}
|
||||||
|
m_Name: 7_MasterStraightCategory
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterStraightCategory
|
||||||
|
<Id>k__BackingField: master_straight
|
||||||
|
<DisplayName>k__BackingField: "\u0421\u0442\u0440\u0438\u0442"
|
||||||
|
<Description>k__BackingField: "1-2-3-4-5-6: \u0441\u0443\u043C\u043C\u0430 \u0432\u0441\u0435\u0445 \u043A\u0443\u0431\u0438\u043A\u043E\u0432 + 20"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
flatBonus: 20
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d207
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc003, type: 3}
|
||||||
|
m_Name: 8_MasterGroupedSetsCategory_smallfull
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterGroupedSetsCategory
|
||||||
|
<Id>k__BackingField: master_small_full
|
||||||
|
<DisplayName>k__BackingField: "\u041C\u0430\u043B\u044B\u0439 \u0444\u0443\u043B"
|
||||||
|
<Description>k__BackingField: "\u0422\u0440\u0438 \u043F\u0430\u0440\u044B: \u0441\u0443\u043C\u043C\u0430 \u043F\u0430\u0440 + 10"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
groupSize: 2
|
||||||
|
requiredGroups: 3
|
||||||
|
flatBonus: 10
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d208
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc003, type: 3}
|
||||||
|
m_Name: 9_MasterGroupedSetsCategory_bigfull
|
||||||
|
m_EditorClassIdentifier: YachtDice.Runtime::YachtDice.Categories.MasterGroupedSetsCategory
|
||||||
|
<Id>k__BackingField: master_big_full
|
||||||
|
<DisplayName>k__BackingField: "\u0411\u043E\u043B\u044C\u0448\u043E\u0439 \u0444\u0443\u043B"
|
||||||
|
<Description>k__BackingField: "\u0414\u0432\u0435 \u0442\u0440\u043E\u0439\u043A\u0438: \u0441\u0443\u043C\u043C\u0430 \u0433\u0440\u0443\u043F\u043F + 10"
|
||||||
|
<Icon>k__BackingField: {fileID: 21300000, guid: 8188071e2bba56c438a87b21f8d55641, type: 3}
|
||||||
|
<IsUpperSection>k__BackingField: 0
|
||||||
|
groupSize: 3
|
||||||
|
requiredGroups: 2
|
||||||
|
flatBonus: 10
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b91a7af0ef2405ab2cf880b4ee6d209
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -12,9 +12,13 @@ namespace YachtDice.Categories
|
|||||||
public class CategoryCatalog : ScriptableObject
|
public class CategoryCatalog : ScriptableObject
|
||||||
{
|
{
|
||||||
[SerializeField] private List<CategoryDefinition> categories = new();
|
[SerializeField] private List<CategoryDefinition> categories = new();
|
||||||
|
[SerializeField] private int upperBonusThreshold = 63;
|
||||||
|
[SerializeField] private int upperBonusValue = 35;
|
||||||
|
|
||||||
public IReadOnlyList<CategoryDefinition> All => categories;
|
public IReadOnlyList<CategoryDefinition> All => categories;
|
||||||
public int Count => categories.Count;
|
public int Count => categories.Count;
|
||||||
|
public int UpperBonusThreshold => upperBonusThreshold;
|
||||||
|
public int UpperBonusValue => upperBonusValue;
|
||||||
|
|
||||||
public CategoryDefinition FindById(string id)
|
public CategoryDefinition FindById(string id)
|
||||||
{
|
{
|
||||||
@@ -38,10 +42,12 @@ namespace YachtDice.Categories
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
public static CategoryCatalog CreateForTest(List<CategoryDefinition> defs)
|
public static CategoryCatalog CreateForTest(List<CategoryDefinition> defs, int upperBonusThreshold = 63, int upperBonusValue = 35)
|
||||||
{
|
{
|
||||||
var catalog = CreateInstance<CategoryCatalog>();
|
var catalog = CreateInstance<CategoryCatalog>();
|
||||||
catalog.categories = defs ?? new List<CategoryDefinition>();
|
catalog.categories = defs ?? new List<CategoryDefinition>();
|
||||||
|
catalog.upperBonusThreshold = upperBonusThreshold;
|
||||||
|
catalog.upperBonusValue = upperBonusValue;
|
||||||
return catalog;
|
return catalog;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using YachtDice.Dice;
|
||||||
|
|
||||||
|
namespace YachtDice.Categories
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "MasterGroupedSetsCategory", menuName = "YachtDice/Categories/Master/Grouped Sets")]
|
||||||
|
public class MasterGroupedSetsCategory : CategoryDefinition
|
||||||
|
{
|
||||||
|
[Header("Scoring")]
|
||||||
|
[Tooltip("How many equal dice each group must contain.")]
|
||||||
|
[SerializeField, Min(1)] private int groupSize = 2;
|
||||||
|
|
||||||
|
[Tooltip("How many groups are required.")]
|
||||||
|
[SerializeField, Min(1)] private int requiredGroups = 3;
|
||||||
|
|
||||||
|
[Tooltip("Flat bonus added when the grouped pattern is valid.")]
|
||||||
|
[SerializeField] private int flatBonus;
|
||||||
|
|
||||||
|
public override int Calculate(IReadOnlyList<IDice> dice)
|
||||||
|
{
|
||||||
|
var values = DiceCheckUtility.ExtractValues(dice);
|
||||||
|
if (!DiceCheckUtility.TryGetGroupedSetSum(values, groupSize, requiredGroups, out var groupedSum))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return groupedSum + flatBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
public static MasterGroupedSetsCategory CreateForTest(
|
||||||
|
string id,
|
||||||
|
string displayName,
|
||||||
|
int groupSize,
|
||||||
|
int requiredGroups,
|
||||||
|
int flatBonus = 0)
|
||||||
|
{
|
||||||
|
var so = CreateInstance<MasterGroupedSetsCategory>();
|
||||||
|
so.SetTestData(id, displayName);
|
||||||
|
so.groupSize = groupSize;
|
||||||
|
so.requiredGroups = requiredGroups;
|
||||||
|
so.flatBonus = flatBonus;
|
||||||
|
return so;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc003
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using YachtDice.Dice;
|
||||||
|
|
||||||
|
namespace YachtDice.Categories
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "MasterKindCategory", menuName = "YachtDice/Categories/Master/N Of A Kind")]
|
||||||
|
public class MasterKindCategory : CategoryDefinition
|
||||||
|
{
|
||||||
|
[Header("Scoring")]
|
||||||
|
[Tooltip("How many matching dice are required.")]
|
||||||
|
[SerializeField, Min(1)] private int requiredCount = 4;
|
||||||
|
|
||||||
|
[Tooltip("Additional score equals matched value multiplied by this number.")]
|
||||||
|
[SerializeField] private int valueBonusMultiplier = 1;
|
||||||
|
|
||||||
|
[Tooltip("Extra flat bonus added when the category is valid.")]
|
||||||
|
[SerializeField] private int flatBonus;
|
||||||
|
|
||||||
|
public override int Calculate(IReadOnlyList<IDice> dice)
|
||||||
|
{
|
||||||
|
var values = DiceCheckUtility.ExtractValues(dice);
|
||||||
|
if (!DiceCheckUtility.TryGetBestValueWithAtLeastCount(values, requiredCount, out var matchedValue))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return (matchedValue * requiredCount) + (matchedValue * valueBonusMultiplier) + flatBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
public static MasterKindCategory CreateForTest(
|
||||||
|
string id,
|
||||||
|
string displayName,
|
||||||
|
int requiredCount,
|
||||||
|
int valueBonusMultiplier,
|
||||||
|
int flatBonus = 0)
|
||||||
|
{
|
||||||
|
var so = CreateInstance<MasterKindCategory>();
|
||||||
|
so.SetTestData(id, displayName);
|
||||||
|
so.requiredCount = requiredCount;
|
||||||
|
so.valueBonusMultiplier = valueBonusMultiplier;
|
||||||
|
so.flatBonus = flatBonus;
|
||||||
|
return so;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc004
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using YachtDice.Dice;
|
||||||
|
|
||||||
|
namespace YachtDice.Categories
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "MasterStraightCategory", menuName = "YachtDice/Categories/Master/Straight")]
|
||||||
|
public class MasterStraightCategory : CategoryDefinition
|
||||||
|
{
|
||||||
|
[Header("Scoring")]
|
||||||
|
[Tooltip("Flat bonus added to the dice sum when the straight is valid.")]
|
||||||
|
[SerializeField] private int flatBonus;
|
||||||
|
|
||||||
|
public override int Calculate(IReadOnlyList<IDice> dice)
|
||||||
|
{
|
||||||
|
var values = DiceCheckUtility.ExtractValues(dice);
|
||||||
|
if (!DiceCheckUtility.IsExactStraightOneToSix(values))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return DiceCheckUtility.Sum(values) + flatBonus;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
public static MasterStraightCategory CreateForTest(string id, string displayName, int flatBonus = 0)
|
||||||
|
{
|
||||||
|
var so = CreateInstance<MasterStraightCategory>();
|
||||||
|
so.SetTestData(id, displayName);
|
||||||
|
so.flatBonus = flatBonus;
|
||||||
|
return so;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc002
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using YachtDice.Dice;
|
||||||
|
|
||||||
|
namespace YachtDice.Categories
|
||||||
|
{
|
||||||
|
[CreateAssetMenu(fileName = "MasterValueCategory", menuName = "YachtDice/Categories/Master/Value")]
|
||||||
|
public class MasterValueCategory : CategoryDefinition
|
||||||
|
{
|
||||||
|
[field: Header("Scoring")]
|
||||||
|
[field: Tooltip("Dice face value to collect.")]
|
||||||
|
[field: SerializeField, Range(1, 6)] public int TargetValue { get; private set; } = 1;
|
||||||
|
|
||||||
|
[field: Tooltip("Flat bonus added when at least one matching die is present.")]
|
||||||
|
[field: SerializeField] public int CategoryBonus { get; private set; }
|
||||||
|
|
||||||
|
public override int Calculate(IReadOnlyList<IDice> dice)
|
||||||
|
{
|
||||||
|
var values = DiceCheckUtility.ExtractValues(dice);
|
||||||
|
var sum = DiceCheckUtility.SumOfValue(values, TargetValue);
|
||||||
|
return sum > 0 ? sum + CategoryBonus : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
public static MasterValueCategory CreateForTest(string id, string displayName, int targetValue, int categoryBonus = 0)
|
||||||
|
{
|
||||||
|
var so = CreateInstance<MasterValueCategory>();
|
||||||
|
so.SetTestData(id, displayName, upperSection: true);
|
||||||
|
so.TargetValue = targetValue;
|
||||||
|
so.CategoryBonus = categoryBonus;
|
||||||
|
return so;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc001
|
||||||
@@ -102,5 +102,83 @@ namespace YachtDice.Categories
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int[] BuildCounts(int[] values)
|
||||||
|
{
|
||||||
|
var counts = new int[7];
|
||||||
|
|
||||||
|
if (values == null)
|
||||||
|
return counts;
|
||||||
|
|
||||||
|
for (var i = 0; i < values.Length; i++)
|
||||||
|
{
|
||||||
|
var value = values[i];
|
||||||
|
if (value >= 1 && value <= 6)
|
||||||
|
counts[value]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return counts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TryGetBestValueWithAtLeastCount(int[] values, int requiredCount, out int matchedValue)
|
||||||
|
{
|
||||||
|
var counts = BuildCounts(values);
|
||||||
|
|
||||||
|
for (var value = 6; value >= 1; value--)
|
||||||
|
{
|
||||||
|
if (counts[value] >= requiredCount)
|
||||||
|
{
|
||||||
|
matchedValue = value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
matchedValue = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool TryGetGroupedSetSum(int[] values, int groupSize, int requiredGroups, out int groupedSum)
|
||||||
|
{
|
||||||
|
if (groupSize <= 0 || requiredGroups <= 0)
|
||||||
|
{
|
||||||
|
groupedSum = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var counts = BuildCounts(values);
|
||||||
|
var foundGroups = 0;
|
||||||
|
groupedSum = 0;
|
||||||
|
|
||||||
|
for (var value = 6; value >= 1; value--)
|
||||||
|
{
|
||||||
|
if (counts[value] < groupSize)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
foundGroups++;
|
||||||
|
groupedSum += value * groupSize;
|
||||||
|
|
||||||
|
if (foundGroups >= requiredGroups)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
groupedSum = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsExactStraightOneToSix(int[] values)
|
||||||
|
{
|
||||||
|
if (values == null || values.Length != 6)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var counts = BuildCounts(values);
|
||||||
|
|
||||||
|
for (var value = 1; value <= 6; value++)
|
||||||
|
{
|
||||||
|
if (counts[value] != 1)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,153 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using UnityEngine;
|
||||||
|
using YachtDice.Categories;
|
||||||
|
using YachtDice.Dice;
|
||||||
|
using YachtDice.Scoring;
|
||||||
|
using YachtDice.UI.Presentation;
|
||||||
|
|
||||||
|
namespace YachtDice.Tests
|
||||||
|
{
|
||||||
|
public class MasterCategoryTests
|
||||||
|
{
|
||||||
|
private readonly List<Object> _createdAssets = new();
|
||||||
|
private DiceDefinition _standardDice;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
_standardDice = DiceDefinition.CreateForTest<StandardDice>("d6", "d6");
|
||||||
|
_createdAssets.Add(_standardDice);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
foreach (var scoring in Object.FindObjectsByType<ScoringSystem>(FindObjectsSortMode.None))
|
||||||
|
Object.DestroyImmediate(scoring.gameObject);
|
||||||
|
|
||||||
|
for (var i = 0; i < _createdAssets.Count; i++)
|
||||||
|
{
|
||||||
|
if (_createdAssets[i] != null)
|
||||||
|
Object.DestroyImmediate(_createdAssets[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
_createdAssets.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IReadOnlyList<IDice> CreateDice(params int[] values)
|
||||||
|
{
|
||||||
|
var dice = new DiceInstance[values.Length];
|
||||||
|
|
||||||
|
for (var i = 0; i < values.Length; i++)
|
||||||
|
dice[i] = new DiceInstance(_standardDice, values[i]);
|
||||||
|
|
||||||
|
return dice;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterValueCategory_AddsConfiguredBonus_AndKeepsDefaultZero()
|
||||||
|
{
|
||||||
|
var withBonus = MasterValueCategory.CreateForTest("ones_bonus", "Единицы", 1, categoryBonus: 1);
|
||||||
|
var noBonus = MasterValueCategory.CreateForTest("ones_plain", "Единицы", 1);
|
||||||
|
_createdAssets.Add(withBonus);
|
||||||
|
_createdAssets.Add(noBonus);
|
||||||
|
|
||||||
|
Assert.AreEqual(5, withBonus.Calculate(CreateDice(1, 1, 1, 2, 3, 4)));
|
||||||
|
Assert.AreEqual(4, noBonus.Calculate(CreateDice(1, 1, 1, 1, 5, 6)));
|
||||||
|
Assert.AreEqual(0, withBonus.Calculate(CreateDice(2, 2, 3, 4, 5, 6)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterStraightCategory_RequiresExactOneToSix()
|
||||||
|
{
|
||||||
|
var category = MasterStraightCategory.CreateForTest("straight", "Стрит", flatBonus: 20);
|
||||||
|
_createdAssets.Add(category);
|
||||||
|
|
||||||
|
Assert.AreEqual(41, category.Calculate(CreateDice(1, 2, 3, 4, 5, 6)));
|
||||||
|
Assert.AreEqual(0, category.Calculate(CreateDice(1, 2, 3, 4, 5, 5)));
|
||||||
|
Assert.AreEqual(0, category.Calculate(CreateDice(1, 2, 3, 4, 5, 6, 6)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterGroupedSetsCategory_SmallFullScoresThreePairs()
|
||||||
|
{
|
||||||
|
var category = MasterGroupedSetsCategory.CreateForTest("small_full", "Малый фул", 2, 3, flatBonus: 10);
|
||||||
|
_createdAssets.Add(category);
|
||||||
|
|
||||||
|
Assert.AreEqual(40, category.Calculate(CreateDice(4, 4, 5, 5, 6, 6)));
|
||||||
|
Assert.AreEqual(28, category.Calculate(CreateDice(1, 1, 3, 3, 5, 5)));
|
||||||
|
Assert.AreEqual(0, category.Calculate(CreateDice(1, 1, 1, 3, 3, 5)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterGroupedSetsCategory_BigFullScoresTwoTriples()
|
||||||
|
{
|
||||||
|
var category = MasterGroupedSetsCategory.CreateForTest("big_full", "Большой фул", 3, 2, flatBonus: 10);
|
||||||
|
_createdAssets.Add(category);
|
||||||
|
|
||||||
|
Assert.AreEqual(43, category.Calculate(CreateDice(5, 5, 5, 6, 6, 6)));
|
||||||
|
Assert.AreEqual(34, category.Calculate(CreateDice(3, 3, 3, 4, 4, 4)));
|
||||||
|
Assert.AreEqual(0, category.Calculate(CreateDice(5, 5, 5, 6, 6, 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterKindCategory_UsesOnlyRequiredGroup()
|
||||||
|
{
|
||||||
|
var kare = MasterKindCategory.CreateForTest("kare", "Каре", 4, valueBonusMultiplier: 1);
|
||||||
|
var poker = MasterKindCategory.CreateForTest("poker", "Покер", 5, valueBonusMultiplier: 2);
|
||||||
|
var master = MasterKindCategory.CreateForTest("master", "Мастер", 6, valueBonusMultiplier: 3);
|
||||||
|
_createdAssets.Add(kare);
|
||||||
|
_createdAssets.Add(poker);
|
||||||
|
_createdAssets.Add(master);
|
||||||
|
|
||||||
|
Assert.AreEqual(30, kare.Calculate(CreateDice(6, 6, 6, 6, 2, 1)));
|
||||||
|
Assert.AreEqual(42, poker.Calculate(CreateDice(6, 6, 6, 6, 6, 1)));
|
||||||
|
Assert.AreEqual(54, master.Calculate(CreateDice(6, 6, 6, 6, 6, 6)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void MasterKindCategory_ScalesToMoreDice_AndPicksBestAvailableGroup()
|
||||||
|
{
|
||||||
|
var category = MasterKindCategory.CreateForTest("kare", "Каре", 4, valueBonusMultiplier: 1, flatBonus: 3);
|
||||||
|
_createdAssets.Add(category);
|
||||||
|
|
||||||
|
Assert.AreEqual(33, category.Calculate(CreateDice(6, 6, 6, 6, 6, 2, 1, 1)));
|
||||||
|
Assert.AreEqual(0, category.Calculate(CreateDice(2, 2, 2, 3, 3, 3, 4, 5)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ChanceCategory_RemainsUnchanged_WithSixDice()
|
||||||
|
{
|
||||||
|
var chance = SumAllCategory.CreateForTest("chance", "Шанс");
|
||||||
|
_createdAssets.Add(chance);
|
||||||
|
|
||||||
|
Assert.AreEqual(21, chance.Calculate(CreateDice(1, 2, 3, 4, 5, 6)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ScoreSummaryService_UsesCatalogConfiguredUpperBonus()
|
||||||
|
{
|
||||||
|
var ones = MasterValueCategory.CreateForTest("ones", "Единицы", 1, categoryBonus: 1);
|
||||||
|
var twos = MasterValueCategory.CreateForTest("twos", "Двойки", 2, categoryBonus: 2);
|
||||||
|
var catalog = CategoryCatalog.CreateForTest(new List<CategoryDefinition> { ones, twos }, upperBonusThreshold: 15, upperBonusValue: 50);
|
||||||
|
_createdAssets.Add(ones);
|
||||||
|
_createdAssets.Add(twos);
|
||||||
|
_createdAssets.Add(catalog);
|
||||||
|
|
||||||
|
var go = new GameObject("ScoringSystem");
|
||||||
|
var scoringSystem = go.AddComponent<ScoringSystem>();
|
||||||
|
scoringSystem.Construct(null, null, catalog, null);
|
||||||
|
|
||||||
|
scoringSystem.ScoreCategory(CreateDice(1, 1, 1, 1, 2, 3), ones);
|
||||||
|
scoringSystem.ScoreCategory(CreateDice(2, 2, 2, 2, 5, 6), twos);
|
||||||
|
|
||||||
|
var summaryService = new ScoreSummaryService(scoringSystem, catalog);
|
||||||
|
var summary = summaryService.Calculate();
|
||||||
|
|
||||||
|
Assert.AreEqual(16, summary.UpperSum);
|
||||||
|
Assert.IsTrue(summary.HasUpperBonus);
|
||||||
|
Assert.AreEqual(66, summary.DisplayTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1f7c8d8f3a4a34bb5327f9fd0dc101
|
||||||
@@ -5,9 +5,6 @@ namespace YachtDice.UI.Presentation
|
|||||||
{
|
{
|
||||||
public sealed class ScoreSummaryService : IScoreSummaryService
|
public sealed class ScoreSummaryService : IScoreSummaryService
|
||||||
{
|
{
|
||||||
private const int UpperBonusThreshold = 63;
|
|
||||||
private const int UpperBonusValue = 35;
|
|
||||||
|
|
||||||
private readonly ScoringSystem _scoringSystem;
|
private readonly ScoringSystem _scoringSystem;
|
||||||
private readonly CategoryCatalog _categoryCatalog;
|
private readonly CategoryCatalog _categoryCatalog;
|
||||||
|
|
||||||
@@ -20,11 +17,11 @@ namespace YachtDice.UI.Presentation
|
|||||||
public ScoreSummary Calculate()
|
public ScoreSummary Calculate()
|
||||||
{
|
{
|
||||||
var upperSum = CalculateUpperSum();
|
var upperSum = CalculateUpperSum();
|
||||||
var hasUpperBonus = upperSum >= UpperBonusThreshold;
|
var hasUpperBonus = upperSum >= _categoryCatalog.UpperBonusThreshold;
|
||||||
|
|
||||||
var total = _scoringSystem.TotalScore;
|
var total = _scoringSystem.TotalScore;
|
||||||
if (hasUpperBonus)
|
if (hasUpperBonus)
|
||||||
total += UpperBonusValue;
|
total += _categoryCatalog.UpperBonusValue;
|
||||||
|
|
||||||
return new ScoreSummary(total, upperSum, hasUpperBonus);
|
return new ScoreSummary(total, upperSum, hasUpperBonus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,9 +78,12 @@ namespace YachtDice.UI
|
|||||||
|
|
||||||
public void UpdateTotalDisplay(int totalScore, int upperSum, bool hasUpperBonus)
|
public void UpdateTotalDisplay(int totalScore, int upperSum, bool hasUpperBonus)
|
||||||
{
|
{
|
||||||
|
var threshold = _catalog != null ? _catalog.UpperBonusThreshold : 63;
|
||||||
|
var bonusValue = _catalog != null ? _catalog.UpperBonusValue : 35;
|
||||||
|
|
||||||
totalScoreText.text = totalScore.ToString();
|
totalScoreText.text = totalScore.ToString();
|
||||||
upperSumText.text = $"{upperSum} / 63";
|
upperSumText.text = $"{upperSum} / {threshold}";
|
||||||
upperBonusText.text = hasUpperBonus ? "+35" : "---";
|
upperBonusText.text = hasUpperBonus ? $"+{bonusValue}" : "---";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetAll()
|
public void ResetAll()
|
||||||
|
|||||||
Reference in New Issue
Block a user