Merge branch 'main' of git.ambigrat.com:card_game/tcg_client
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -70,3 +70,4 @@ ProjectSettings/ProjectVersion.txt
|
|||||||
ProjectSettings/PackageManagerSettings.asset
|
ProjectSettings/PackageManagerSettings.asset
|
||||||
ProjectSettings/AutoStreamingSettings.asset
|
ProjectSettings/AutoStreamingSettings.asset
|
||||||
ProjectSettings/ProjectSettings.asset
|
ProjectSettings/ProjectSettings.asset
|
||||||
|
Packages/packages-lock.json
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 4
|
m_RootOrder: 4
|
||||||
@@ -103,6 +104,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
@@ -150,81 +152,6 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &1251903309759418269
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 8513107529100910434}
|
|
||||||
- component: {fileID: 2922564618384027479}
|
|
||||||
- component: {fileID: 6792911071355521265}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (9)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &8513107529100910434
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1251903309759418269}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 9
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 250, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &2922564618384027479
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1251903309759418269}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &6792911071355521265
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1251903309759418269}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &1806244588100620830
|
--- !u!1 &1806244588100620830
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -252,6 +179,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 4252802152300486646}
|
- {fileID: 4252802152300486646}
|
||||||
- {fileID: 986898120135215223}
|
- {fileID: 986898120135215223}
|
||||||
@@ -259,12 +187,6 @@ RectTransform:
|
|||||||
- {fileID: 2256103390049534263}
|
- {fileID: 2256103390049534263}
|
||||||
- {fileID: 3432178305605222404}
|
- {fileID: 3432178305605222404}
|
||||||
- {fileID: 4218971555065273629}
|
- {fileID: 4218971555065273629}
|
||||||
- {fileID: 7123811701191868703}
|
|
||||||
- {fileID: 672918710076619102}
|
|
||||||
- {fileID: 4688949436229540639}
|
|
||||||
- {fileID: 8513107529100910434}
|
|
||||||
- {fileID: 4613611874449522969}
|
|
||||||
- {fileID: 6921059308528279234}
|
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@@ -295,89 +217,14 @@ MonoBehaviour:
|
|||||||
- {fileID: 4514427913678441131}
|
- {fileID: 4514427913678441131}
|
||||||
- {fileID: 5257734512775747297}
|
- {fileID: 5257734512775747297}
|
||||||
- {fileID: 6056840011816395962}
|
- {fileID: 6056840011816395962}
|
||||||
- {fileID: 200319602932645013}
|
- {fileID: 0}
|
||||||
- {fileID: 1989007023016700808}
|
- {fileID: 0}
|
||||||
- {fileID: 3752606892120397597}
|
- {fileID: 0}
|
||||||
- {fileID: 6792911071355521265}
|
- {fileID: 0}
|
||||||
- {fileID: 7474841143375406029}
|
- {fileID: 0}
|
||||||
- {fileID: 3337199690031680873}
|
- {fileID: 0}
|
||||||
sprite_full: {fileID: 21300000, guid: 2b8a2aed9882e774bba6723260f7a6fc, type: 3}
|
sprite_full: {fileID: 21300000, guid: 2b8a2aed9882e774bba6723260f7a6fc, type: 3}
|
||||||
sprite_empty: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
sprite_empty: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
||||||
--- !u!1 &3587532460191014061
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4613611874449522969}
|
|
||||||
- component: {fileID: 3921489829429765997}
|
|
||||||
- component: {fileID: 7474841143375406029}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (10)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &4613611874449522969
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3587532460191014061}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 10
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 300, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &3921489829429765997
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3587532460191014061}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &7474841143375406029
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3587532460191014061}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &3823079684456776761
|
--- !u!1 &3823079684456776761
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -406,6 +253,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 3
|
m_RootOrder: 3
|
||||||
@@ -453,156 +301,6 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &3845324022426336555
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 4688949436229540639}
|
|
||||||
- component: {fileID: 3013504736111544342}
|
|
||||||
- component: {fileID: 3752606892120397597}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (8)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &4688949436229540639
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3845324022426336555}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 8
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 200, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &3013504736111544342
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3845324022426336555}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &3752606892120397597
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3845324022426336555}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &3884284812324538286
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 7123811701191868703}
|
|
||||||
- component: {fileID: 1872197894128031683}
|
|
||||||
- component: {fileID: 200319602932645013}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (6)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &7123811701191868703
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3884284812324538286}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 6
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 100, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &1872197894128031683
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3884284812324538286}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &200319602932645013
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 3884284812324538286}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &7840828242269513024
|
--- !u!1 &7840828242269513024
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -631,6 +329,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
@@ -706,6 +405,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 5
|
m_RootOrder: 5
|
||||||
@@ -753,156 +453,6 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
--- !u!1 &7977288626612905298
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 672918710076619102}
|
|
||||||
- component: {fileID: 1787421651570579534}
|
|
||||||
- component: {fileID: 1989007023016700808}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (7)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &672918710076619102
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7977288626612905298}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 7
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 150, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &1787421651570579534
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7977288626612905298}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &1989007023016700808
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 7977288626612905298}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &8515898123334996254
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 6921059308528279234}
|
|
||||||
- component: {fileID: 1220484261464694873}
|
|
||||||
- component: {fileID: 3337199690031680873}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Circle (11)
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &6921059308528279234
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8515898123334996254}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 1789197561201869425}
|
|
||||||
m_RootOrder: 11
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 350, y: 0}
|
|
||||||
m_SizeDelta: {x: 50, y: 50}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!222 &1220484261464694873
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8515898123334996254}
|
|
||||||
m_CullTransparentMesh: 1
|
|
||||||
--- !u!114 &3337199690031680873
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8515898123334996254}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_Maskable: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_Sprite: {fileID: 21300000, guid: 74cc1786d4cd2fc44865297475ce72b1, type: 3}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
m_PixelsPerUnitMultiplier: 1
|
|
||||||
--- !u!1 &8581907445084959352
|
--- !u!1 &8581907445084959352
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -931,6 +481,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 1789197561201869425}
|
m_Father: {fileID: 1789197561201869425}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
|
|||||||
@@ -13,14 +13,18 @@ MonoBehaviour:
|
|||||||
m_Name: GameplayData
|
m_Name: GameplayData
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
hp_start: 999
|
hp_start: 999
|
||||||
mana_start: 2
|
# 起始mana
|
||||||
|
mana_start: 1
|
||||||
|
# 每回合增加mana
|
||||||
mana_per_turn: 1
|
mana_per_turn: 1
|
||||||
|
# 最大mana上限
|
||||||
mana_max: 10
|
mana_max: 10
|
||||||
# 初始化手牌数量
|
# 初始化手牌数量
|
||||||
cards_start: 3
|
cards_start: 3
|
||||||
cards_per_turn: 1
|
cards_per_turn: 1
|
||||||
cards_max: 10
|
cards_max: 10
|
||||||
turn_duration: 60
|
# 超时时间
|
||||||
|
turn_duration: 600
|
||||||
second_bonus: {fileID: 11400000, guid: 9503f60659f1df04eb3dd7fa925885fb, type: 2}
|
second_bonus: {fileID: 11400000, guid: 9503f60659f1df04eb3dd7fa925885fb, type: 2}
|
||||||
mulligan: 1
|
mulligan: 1
|
||||||
deck_size: 8
|
deck_size: 8
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -34,6 +34,24 @@ namespace TcgEngine
|
|||||||
return CompareInt(target.mana, oper, value);
|
return CompareInt(target.mana, oper, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新增:火系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaFire)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_fire, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:森林法力值检查
|
||||||
|
if (type == ConditionStatType.ManaForest)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_forest, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:水系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaWater)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_water, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ namespace TcgEngine
|
|||||||
Attack = 10,
|
Attack = 10,
|
||||||
HP = 20,
|
HP = 20,
|
||||||
Mana = 30,
|
Mana = 30,
|
||||||
|
ManaFire = 40,
|
||||||
|
ManaForest = 50,
|
||||||
|
ManaWater = 60,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -41,6 +44,24 @@ namespace TcgEngine
|
|||||||
return CompareInt(target.GetMana(), oper, value);
|
return CompareInt(target.GetMana(), oper, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新增:火系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaFire)
|
||||||
|
{
|
||||||
|
return CompareInt(target.GetManaFire(), oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:森林法力值检查
|
||||||
|
if (type == ConditionStatType.ManaForest)
|
||||||
|
{
|
||||||
|
return CompareInt(target.GetManaForest(), oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:水系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaWater)
|
||||||
|
{
|
||||||
|
return CompareInt(target.GetManaWater(), oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,6 +77,24 @@ namespace TcgEngine
|
|||||||
return CompareInt(target.mana, oper, value);
|
return CompareInt(target.mana, oper, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新增:火系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaFire)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_fire, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:森林法力值检查
|
||||||
|
if (type == ConditionStatType.ManaForest)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_forest, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:水系法力值检查
|
||||||
|
if (type == ConditionStatType.ManaWater)
|
||||||
|
{
|
||||||
|
return CompareInt(target.mana_water, oper, value);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,22 @@ namespace TcgEngine
|
|||||||
{
|
{
|
||||||
return card.GetMana();
|
return card.GetMana();
|
||||||
}
|
}
|
||||||
|
// 新增:火系法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaFire)
|
||||||
|
{
|
||||||
|
return card.GetManaFire();
|
||||||
|
}
|
||||||
|
// 新增:森林法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaForest)
|
||||||
|
{
|
||||||
|
return card.GetManaForest();
|
||||||
|
}
|
||||||
|
// 新增:水系法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaWater)
|
||||||
|
{
|
||||||
|
return card.GetManaWater();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,21 @@ namespace TcgEngine
|
|||||||
{
|
{
|
||||||
return card.GetMana();
|
return card.GetMana();
|
||||||
}
|
}
|
||||||
|
// 新增:火系法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaFire)
|
||||||
|
{
|
||||||
|
return card.GetManaFire();
|
||||||
|
}
|
||||||
|
// 新增:森林法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaForest)
|
||||||
|
{
|
||||||
|
return card.GetManaForest();
|
||||||
|
}
|
||||||
|
// 新增:水系法力值检查
|
||||||
|
if (stat == ConditionStatType.ManaWater)
|
||||||
|
{
|
||||||
|
return card.GetManaWater();
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,11 @@ namespace TcgEngine
|
|||||||
public int attack;
|
public int attack;
|
||||||
public int hp;
|
public int hp;
|
||||||
|
|
||||||
|
// 新增:三种元素法力值
|
||||||
|
public int mana_fire;
|
||||||
|
public int mana_forest;
|
||||||
|
public int mana_water;
|
||||||
|
|
||||||
[Header("Traits")]
|
[Header("Traits")]
|
||||||
public TraitData[] traits;
|
public TraitData[] traits;
|
||||||
public TraitStat[] stats;
|
public TraitStat[] stats;
|
||||||
@@ -166,7 +171,23 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public bool IsDynamicManaCost()
|
public bool IsDynamicManaCost()
|
||||||
{
|
{
|
||||||
return mana > 99;
|
// 检查通用法力值是否为动态消耗
|
||||||
|
if (mana > 99)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 检查火系法力值是否为动态消耗
|
||||||
|
if (mana_fire > 99)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 检查森林法力值是否为动态消耗
|
||||||
|
if (mana_forest > 99)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 检查水系法力值是否为动态消耗
|
||||||
|
if (mana_water > 99)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasTrait(string trait)
|
public bool HasTrait(string trait)
|
||||||
@@ -181,7 +202,7 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public bool HasTrait(TraitData trait)
|
public bool HasTrait(TraitData trait)
|
||||||
{
|
{
|
||||||
if(trait != null)
|
if (trait != null)
|
||||||
return HasTrait(trait.id);
|
return HasTrait(trait.id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -201,7 +222,7 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public bool HasStat(TraitData trait)
|
public bool HasStat(TraitData trait)
|
||||||
{
|
{
|
||||||
if(trait != null)
|
if (trait != null)
|
||||||
return HasStat(trait.id);
|
return HasStat(trait.id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -221,7 +242,7 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public int GetStat(TraitData trait)
|
public int GetStat(TraitData trait)
|
||||||
{
|
{
|
||||||
if(trait != null)
|
if (trait != null)
|
||||||
return GetStat(trait.id);
|
return GetStat(trait.id);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ namespace TcgEngine
|
|||||||
{
|
{
|
||||||
public EffectStatType type;
|
public EffectStatType type;
|
||||||
|
|
||||||
|
[Header("Team Mana (only for Mana type)")]
|
||||||
|
public string team_id = ""; // 当type为Mana时,指定影响的阵营
|
||||||
|
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
||||||
{
|
{
|
||||||
if (type == EffectStatType.HP)
|
if (type == EffectStatType.HP)
|
||||||
@@ -24,13 +27,23 @@ namespace TcgEngine
|
|||||||
|
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
{
|
{
|
||||||
target.mana += ability.value;
|
// 如果指定了阵营,影响阵营mana;否则影响通用mana
|
||||||
target.mana_max += ability.value;
|
if (!string.IsNullOrEmpty(team_id))
|
||||||
target.mana = Mathf.Max(target.mana, 0);
|
{
|
||||||
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
target.AddTeamMana(team_id, ability.value, ability.value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"AddStat Mana 通用: {ability.value}");
|
||||||
|
target.mana += ability.value;
|
||||||
|
target.mana_max += ability.value;
|
||||||
|
target.mana = Mathf.Max(target.mana, 0);
|
||||||
|
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 永久效果
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
||||||
{
|
{
|
||||||
if (type == EffectStatType.Attack)
|
if (type == EffectStatType.Attack)
|
||||||
@@ -39,8 +52,16 @@ namespace TcgEngine
|
|||||||
target.hp += ability.value;
|
target.hp += ability.value;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana += ability.value;
|
target.mana += ability.value;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire += ability.value;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest += ability.value;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water += ability.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 临时效果
|
||||||
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
||||||
{
|
{
|
||||||
if (type == EffectStatType.Attack)
|
if (type == EffectStatType.Attack)
|
||||||
@@ -49,6 +70,13 @@ namespace TcgEngine
|
|||||||
target.hp_ongoing += ability.value;
|
target.hp_ongoing += ability.value;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana_ongoing += ability.value;
|
target.mana_ongoing += ability.value;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire_ongoing += ability.value;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest_ongoing += ability.value;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water_ongoing += ability.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -59,5 +87,9 @@ namespace TcgEngine
|
|||||||
Attack = 10,
|
Attack = 10,
|
||||||
HP = 20,
|
HP = 20,
|
||||||
Mana = 30,
|
Mana = 30,
|
||||||
|
// 新增:三种元素法力值
|
||||||
|
ManaFire = 40,
|
||||||
|
ManaForest = 50,
|
||||||
|
ManaWater = 60,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,9 @@ namespace TcgEngine
|
|||||||
public TeamData has_team;
|
public TeamData has_team;
|
||||||
public TraitData has_trait;
|
public TraitData has_trait;
|
||||||
|
|
||||||
|
[Header("Team Mana (only for Mana type)")]
|
||||||
|
public string team_id = ""; // 当type为Mana时,指定影响的阵营
|
||||||
|
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
||||||
{
|
{
|
||||||
int val = GetCount(logic.GetGameData(), caster) * ability.value;
|
int val = GetCount(logic.GetGameData(), caster) * ability.value;
|
||||||
@@ -31,10 +34,19 @@ namespace TcgEngine
|
|||||||
|
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
{
|
{
|
||||||
target.mana += val;
|
// 如果指定了阵营,影响阵营mana;否则影响通用mana
|
||||||
target.mana_max += val;
|
if (!string.IsNullOrEmpty(team_id))
|
||||||
target.mana = Mathf.Max(target.mana, 0);
|
{
|
||||||
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
target.AddTeamMana(team_id, val, val);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"AddStatCount Mana 通用: {val}");
|
||||||
|
target.mana += val;
|
||||||
|
target.mana_max += val;
|
||||||
|
target.mana = Mathf.Max(target.mana, 0);
|
||||||
|
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +59,13 @@ namespace TcgEngine
|
|||||||
target.hp += val;
|
target.hp += val;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana += val;
|
target.mana += val;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire += val;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest += val;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water += val;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
||||||
@@ -58,6 +77,13 @@ namespace TcgEngine
|
|||||||
target.hp_ongoing += val;
|
target.hp_ongoing += val;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana_ongoing += val;
|
target.mana_ongoing += val;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire_ongoing += val;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest_ongoing += val;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water_ongoing += val;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int GetCount(Game data, Card caster)
|
private int GetCount(Game data, Card caster)
|
||||||
|
|||||||
@@ -31,6 +31,22 @@ namespace TcgEngine
|
|||||||
target.mana = Mathf.Max(target.mana, 0);
|
target.mana = Mathf.Max(target.mana, 0);
|
||||||
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire += data.rolled_value;
|
||||||
|
target.mana_fire_max += data.rolled_value;
|
||||||
|
target.mana_fire = Mathf.Max(target.mana_fire, 0);
|
||||||
|
target.mana_fire_max = Mathf.Clamp(target.mana_fire_max, 0, GameplayData.Get().mana_max);
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest += data.rolled_value;
|
||||||
|
target.mana_forest_max += data.rolled_value;
|
||||||
|
target.mana_forest = Mathf.Max(target.mana_forest, 0);
|
||||||
|
target.mana_forest_max = Mathf.Clamp(target.mana_forest_max, 0, GameplayData.Get().mana_max);
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water += data.rolled_value;
|
||||||
|
target.mana_water_max += data.rolled_value;
|
||||||
|
target.mana_water = Mathf.Max(target.mana_water, 0);
|
||||||
|
target.mana_water_max = Mathf.Clamp(target.mana_water_max, 0, GameplayData.Get().mana_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
||||||
@@ -43,6 +59,13 @@ namespace TcgEngine
|
|||||||
target.hp += data.rolled_value;
|
target.hp += data.rolled_value;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana += data.rolled_value;
|
target.mana += data.rolled_value;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire += data.rolled_value;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest += data.rolled_value;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water += data.rolled_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,18 +15,33 @@ namespace TcgEngine
|
|||||||
public bool increase_value;
|
public bool increase_value;
|
||||||
public bool increase_max;
|
public bool increase_max;
|
||||||
|
|
||||||
|
[Header("Team Mana")]
|
||||||
|
public string team_id = ""; // 指定影响的阵营,空值表示影响通用mana
|
||||||
|
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
||||||
{
|
{
|
||||||
if (increase_max)
|
// 如果指定了阵营,影响阵营mana;否则影响通用mana
|
||||||
|
if (!string.IsNullOrEmpty(team_id))
|
||||||
{
|
{
|
||||||
target.mana_max += ability.value;
|
// 影响阵营mana
|
||||||
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
int current_add = increase_value ? ability.value : 0;
|
||||||
|
int max_add = increase_max ? ability.value : 0;
|
||||||
|
target.AddTeamMana(team_id, current_add, max_add);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if(increase_value)
|
|
||||||
{
|
{
|
||||||
target.mana += ability.value;
|
// 影响通用mana(保持原有逻辑)
|
||||||
target.mana = Mathf.Max(target.mana, 0);
|
if (increase_max)
|
||||||
|
{
|
||||||
|
target.mana_max += ability.value;
|
||||||
|
target.mana_max = Mathf.Clamp(target.mana_max, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(increase_value)
|
||||||
|
{
|
||||||
|
target.mana += ability.value;
|
||||||
|
target.mana = Mathf.Max(target.mana, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ namespace TcgEngine
|
|||||||
{
|
{
|
||||||
public EffectStatType type;
|
public EffectStatType type;
|
||||||
|
|
||||||
|
[Header("Team Mana (only for Mana type)")]
|
||||||
|
public string team_id = ""; // 当type为Mana时,指定影响的阵营
|
||||||
|
|
||||||
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
public override void DoEffect(GameLogic logic, AbilityData ability, Card caster, Player target)
|
||||||
{
|
{
|
||||||
if (type == EffectStatType.HP)
|
if (type == EffectStatType.HP)
|
||||||
@@ -23,8 +26,17 @@ namespace TcgEngine
|
|||||||
|
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
{
|
{
|
||||||
target.mana = ability.value;
|
// 如果指定了阵营,设置阵营mana;否则设置通用mana
|
||||||
target.mana = Mathf.Max(target.mana, 0);
|
if (!string.IsNullOrEmpty(team_id))
|
||||||
|
{
|
||||||
|
target.SetTeamMana(team_id, ability.value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"SetStat Mana 通用: {ability.value}");
|
||||||
|
target.mana = ability.value;
|
||||||
|
target.mana = Mathf.Max(target.mana, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,6 +51,13 @@ namespace TcgEngine
|
|||||||
target.hp = ability.value;
|
target.hp = ability.value;
|
||||||
target.damage = 0;
|
target.damage = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire = ability.value;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest = ability.value;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water = ability.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
public override void DoOngoingEffect(GameLogic logic, AbilityData ability, Card caster, Card target)
|
||||||
@@ -49,6 +68,13 @@ namespace TcgEngine
|
|||||||
target.hp = ability.value;
|
target.hp = ability.value;
|
||||||
if (type == EffectStatType.Mana)
|
if (type == EffectStatType.Mana)
|
||||||
target.mana = ability.value;
|
target.mana = ability.value;
|
||||||
|
|
||||||
|
if (type == EffectStatType.ManaFire)
|
||||||
|
target.mana_fire = ability.value;
|
||||||
|
if (type == EffectStatType.ManaForest)
|
||||||
|
target.mana_forest = ability.value;
|
||||||
|
if (type == EffectStatType.ManaWater)
|
||||||
|
target.mana_water = ability.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,14 +57,14 @@ namespace TcgEngine.Client
|
|||||||
|
|
||||||
//Find target opacity value
|
//Find target opacity value
|
||||||
target_alpha = 0f;
|
target_alpha = 0f;
|
||||||
if (your_turn && dcard != null && dcard.CardData.IsBoardCard() && gdata.CanPlayCard(dcard, slot))
|
if (your_turn && dcard != null && dcard.CardData.IsBoardCard() && gdata.CanPlayCard(dcard, slot, true))
|
||||||
{
|
{
|
||||||
target_alpha = 1f; //hightlight when dragging a character or artifact
|
target_alpha = 1f; //hightlight when dragging a character or artifact (skip mana cost)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (your_turn && dcard != null && dcard.CardData.IsRequireTarget() && gdata.CanPlayCard(dcard, slot))
|
if (your_turn && dcard != null && dcard.CardData.IsRequireTarget() && gdata.CanPlayCard(dcard, slot, true))
|
||||||
{
|
{
|
||||||
target_alpha = 1f; //Highlight when dragin a spell with target
|
target_alpha = 1f; //Highlight when dragin a spell with target (skip mana cost)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gdata.selector == SelectorType.SelectTarget && player.player_id == gdata.selector_player_id)
|
if (gdata.selector == SelectorType.SelectTarget && player.player_id == gdata.selector_player_id)
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ namespace TcgEngine.Client
|
|||||||
{
|
{
|
||||||
foreach (GroupSlot slot in group_slots)
|
foreach (GroupSlot slot in group_slots)
|
||||||
{
|
{
|
||||||
if(gdata.CanPlayCard(dcard, slot.slot))
|
if(gdata.CanPlayCard(dcard, slot.slot, true))
|
||||||
target_alpha = 1f; //hightlight when dragging a character or artifact
|
target_alpha = 1f; //hightlight when dragging a character or artifact (skip mana cost)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,16 +67,17 @@ namespace TcgEngine.Client
|
|||||||
|
|
||||||
target_alpha = 0f;
|
target_alpha = 0f;
|
||||||
Card select_card = bcard_selected?.GetCard();
|
Card select_card = bcard_selected?.GetCard();
|
||||||
if (select_card != null)
|
// if (select_card != null)
|
||||||
{
|
// {
|
||||||
bool can_do_attack = gdata.IsPlayerActionTurn(player) && select_card.CanAttack();
|
// bool can_do_attack = gdata.IsPlayerActionTurn(player) && select_card.CanAttack();
|
||||||
bool can_be_attacked = gdata.CanAttackTarget(select_card, oplayer);
|
// bool can_be_attacked = gdata.CanAttackTarget(select_card, oplayer);
|
||||||
|
|
||||||
if (can_do_attack && can_be_attacked)
|
// 敌方可被攻击时高亮
|
||||||
{
|
// if (can_do_attack && can_be_attacked)
|
||||||
target_alpha = 1f;
|
// {
|
||||||
}
|
// target_alpha = 1f;
|
||||||
}
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
if (your_turn && drag_card != null && drag_card.CardData.IsRequireTargetSpell() && gdata.IsPlayTargetValid(drag_card.GetCard(), GetPlayer()))
|
if (your_turn && drag_card != null && drag_card.CardData.IsRequireTargetSpell() && gdata.IsPlayTargetValid(drag_card.GetCard(), GetPlayer()))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -231,9 +231,10 @@ namespace TcgEngine.Client
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!player.CanPayMana(card))
|
// 检查本回合是否已经上场过场上卡牌(只有怪物牌等场上卡牌受限制)
|
||||||
|
if (card.CardData.IsBoardCard() && player.cards_played_this_turn >= 1)
|
||||||
{
|
{
|
||||||
WarningText.ShowNoMana();
|
Debug.Log("本回合只能上场一张场上卡牌");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,16 @@ namespace TcgEngine
|
|||||||
public int attack = 0;
|
public int attack = 0;
|
||||||
public int hp = 0;
|
public int hp = 0;
|
||||||
|
|
||||||
|
// 新增:三种元素法力值
|
||||||
|
public int mana_fire = 0;
|
||||||
|
public int mana_forest = 0;
|
||||||
|
public int mana_water = 0;
|
||||||
|
|
||||||
|
// 新增:三种元素法力值的临时加成
|
||||||
|
public int mana_fire_ongoing = 0;
|
||||||
|
public int mana_forest_ongoing = 0;
|
||||||
|
public int mana_water_ongoing = 0;
|
||||||
|
|
||||||
public int mana_ongoing = 0;
|
public int mana_ongoing = 0;
|
||||||
public int attack_ongoing = 0;
|
public int attack_ongoing = 0;
|
||||||
public int hp_ongoing = 0;
|
public int hp_ongoing = 0;
|
||||||
@@ -45,7 +55,14 @@ namespace TcgEngine
|
|||||||
public Card(string card_id, string uid, int player_id) { this.card_id = card_id; this.uid = uid; this.player_id = player_id; }
|
public Card(string card_id, string uid, int player_id) { this.card_id = card_id; this.uid = uid; this.player_id = player_id; }
|
||||||
|
|
||||||
public virtual void Refresh() { exhausted = false; }
|
public virtual void Refresh() { exhausted = false; }
|
||||||
public virtual void ClearOngoing() { ongoing_status.Clear(); ongoing_traits.Clear(); ClearOngoingAbility(); attack_ongoing = 0; hp_ongoing = 0; mana_ongoing = 0; }
|
public virtual void ClearOngoing()
|
||||||
|
{
|
||||||
|
ongoing_status.Clear(); ongoing_traits.Clear(); ClearOngoingAbility(); attack_ongoing = 0; hp_ongoing = 0; mana_ongoing = 0;
|
||||||
|
// 新增:清除元素法力值临时加成
|
||||||
|
mana_fire_ongoing = 0;
|
||||||
|
mana_forest_ongoing = 0;
|
||||||
|
mana_water_ongoing = 0;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual void Clear()
|
public virtual void Clear()
|
||||||
{
|
{
|
||||||
@@ -67,7 +84,11 @@ namespace TcgEngine
|
|||||||
variant_id = cvariant.id;
|
variant_id = cvariant.id;
|
||||||
attack = icard.attack;
|
attack = icard.attack;
|
||||||
hp = icard.hp;
|
hp = icard.hp;
|
||||||
|
// 设置法力值
|
||||||
mana = icard.mana;
|
mana = icard.mana;
|
||||||
|
mana_fire = icard.mana_fire;
|
||||||
|
mana_forest = icard.mana_forest;
|
||||||
|
mana_water = icard.mana_water;
|
||||||
SetTraits(icard);
|
SetTraits(icard);
|
||||||
SetAbilities(icard);
|
SetAbilities(icard);
|
||||||
}
|
}
|
||||||
@@ -212,6 +233,27 @@ namespace TcgEngine
|
|||||||
public bool HasStat(string id) => HasTrait(id);
|
public bool HasStat(string id) => HasTrait(id);
|
||||||
public List<CardTrait> GetAllStats() => GetAllTraits();
|
public List<CardTrait> GetAllStats() => GetAllTraits();
|
||||||
|
|
||||||
|
// 新增:获取元素法力值的方法
|
||||||
|
public virtual int GetManaFire() { return Mathf.Max(mana_fire + mana_fire_ongoing, 0); }
|
||||||
|
public virtual int GetManaForest() { return Mathf.Max(mana_forest + mana_forest_ongoing, 0); }
|
||||||
|
public virtual int GetManaWater() { return Mathf.Max(mana_water + mana_water_ongoing, 0); }
|
||||||
|
|
||||||
|
|
||||||
|
// 新增:设置元素法力值的方法
|
||||||
|
public void SetManaFire(int value) { mana_fire = value; }
|
||||||
|
public void SetManaForest(int value) { mana_forest = value; }
|
||||||
|
public void SetManaWater(int value) { mana_water = value; }
|
||||||
|
|
||||||
|
// 新增:增加元素法力值的方法
|
||||||
|
public void AddManaFire(int value) { mana_fire += value; }
|
||||||
|
public void AddManaForest(int value) { mana_forest += value; }
|
||||||
|
public void AddManaWater(int value) { mana_water += value; }
|
||||||
|
|
||||||
|
// 新增:增加元素法力值临时加成的方法
|
||||||
|
public void AddManaFireOngoing(int value) { mana_fire_ongoing += value; }
|
||||||
|
public void AddManaForestOngoing(int value) { mana_forest_ongoing += value; }
|
||||||
|
public void AddManaWaterOngoing(int value) { mana_water_ongoing += value; }
|
||||||
|
|
||||||
//------ Status Effects ---------
|
//------ Status Effects ---------
|
||||||
|
|
||||||
public void AddStatus(StatusData status, int value, int duration)
|
public void AddStatus(StatusData status, int value, int duration)
|
||||||
@@ -331,8 +373,8 @@ namespace TcgEngine
|
|||||||
public void AddAbility(AbilityData ability)
|
public void AddAbility(AbilityData ability)
|
||||||
{
|
{
|
||||||
abilities.Add(ability.id);
|
abilities.Add(ability.id);
|
||||||
if (abilities_data != null)
|
if (abilities_data != null)
|
||||||
abilities_data.Add(ability);
|
abilities_data.Add(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveAbility(AbilityData ability)
|
public void RemoveAbility(AbilityData ability)
|
||||||
@@ -486,8 +528,9 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public CardData CardData
|
public CardData CardData
|
||||||
{
|
{
|
||||||
get {
|
get
|
||||||
if(data == null || data.id != card_id)
|
{
|
||||||
|
if (data == null || data.id != card_id)
|
||||||
data = CardData.Get(card_id); //Optimization, store for future use
|
data = CardData.Get(card_id); //Optimization, store for future use
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@@ -507,7 +550,8 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public int Hash
|
public int Hash
|
||||||
{
|
{
|
||||||
get {
|
get
|
||||||
|
{
|
||||||
if (hash == 0)
|
if (hash == 0)
|
||||||
hash = Mathf.Abs(uid.GetHashCode()); //Optimization, store for future use
|
hash = Mathf.Abs(uid.GetHashCode()); //Optimization, store for future use
|
||||||
return hash;
|
return hash;
|
||||||
@@ -550,6 +594,14 @@ namespace TcgEngine
|
|||||||
dest.hp = source.hp;
|
dest.hp = source.hp;
|
||||||
dest.mana = source.mana;
|
dest.mana = source.mana;
|
||||||
|
|
||||||
|
dest.mana_fire = source.mana_fire;
|
||||||
|
dest.mana_forest = source.mana_forest;
|
||||||
|
dest.mana_water = source.mana_water;
|
||||||
|
|
||||||
|
dest.mana_fire_ongoing = source.mana_fire_ongoing;
|
||||||
|
dest.mana_forest_ongoing = source.mana_forest_ongoing;
|
||||||
|
dest.mana_water_ongoing = source.mana_water_ongoing;
|
||||||
|
|
||||||
dest.mana_ongoing = source.mana_ongoing;
|
dest.mana_ongoing = source.mana_ongoing;
|
||||||
dest.attack_ongoing = source.attack_ongoing;
|
dest.attack_ongoing = source.attack_ongoing;
|
||||||
dest.hp_ongoing = source.hp_ongoing;
|
dest.hp_ongoing = source.hp_ongoing;
|
||||||
@@ -615,7 +667,7 @@ namespace TcgEngine
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dest.Count > source.Count)
|
if (dest.Count > source.Count)
|
||||||
dest.RemoveRange(source.Count, dest.Count - source.Count);
|
dest.RemoveRange(source.Count, dest.Count - source.Count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -641,7 +693,8 @@ namespace TcgEngine
|
|||||||
this.permanent = (duration == 0);
|
this.permanent = (duration == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatusData StatusData {
|
public StatusData StatusData
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (data == null || data.effect != type)
|
if (data == null || data.effect != type)
|
||||||
|
|||||||
@@ -106,12 +106,18 @@ namespace TcgEngine
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
Player player = GetPlayer(card.player_id);
|
Player player = GetPlayer(card.player_id);
|
||||||
if (!skip_cost && !player.CanPayMana(card))
|
if (!skip_cost && !player.CanPayTeamMana(card))
|
||||||
return false; //Cant pay mana
|
return false; //Cant pay mana
|
||||||
if (!player.HasCard(player.cards_hand, card))
|
if (!player.HasCard(player.cards_hand, card))
|
||||||
return false; // Card not in hand
|
return false; // Card not in hand
|
||||||
if (player.is_ai && card.CardData.IsDynamicManaCost() && player.mana == 0)
|
// AI 不能在没有对应阵营mana时使用动态费用卡牌
|
||||||
return false; // AI cant play X-cost card at 0 cost
|
if (player.is_ai && card.CardData.IsDynamicManaCost())
|
||||||
|
{
|
||||||
|
string team_id = card.CardData.team?.id;
|
||||||
|
int available_mana = string.IsNullOrEmpty(team_id) ? player.mana : player.GetTeamMana(team_id);
|
||||||
|
if (available_mana == 0)
|
||||||
|
return false; // AI cant play X-cost card at 0 cost
|
||||||
|
}
|
||||||
|
|
||||||
if (card.CardData.IsBoardCard())
|
if (card.CardData.IsBoardCard())
|
||||||
{
|
{
|
||||||
@@ -186,6 +192,10 @@ namespace TcgEngine
|
|||||||
if (target.HasStatus(StatusType.Protected) && !attacker.HasStatus(StatusType.Flying))
|
if (target.HasStatus(StatusType.Protected) && !attacker.HasStatus(StatusType.Flying))
|
||||||
return false; //Protected by taunt
|
return false; //Protected by taunt
|
||||||
|
|
||||||
|
// 检查目标玩家场上是否有卡牌,如有则无法直接攻击玩家
|
||||||
|
if (target.cards_board.Count > 0)
|
||||||
|
return false; //Cannot attack player when they have cards on board
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,12 @@ namespace TcgEngine.Gameplay
|
|||||||
player.mana_max = pdeck != null ? pdeck.start_mana : GameplayData.Get().mana_start;
|
player.mana_max = pdeck != null ? pdeck.start_mana : GameplayData.Get().mana_start;
|
||||||
player.mana = player.mana_max;
|
player.mana = player.mana_max;
|
||||||
|
|
||||||
|
//初始化三种阵营mana
|
||||||
|
int start_mana = pdeck != null ? pdeck.start_mana : GameplayData.Get().mana_start;
|
||||||
|
player.SetTeamMana("fire", start_mana, start_mana);
|
||||||
|
player.SetTeamMana("forest", start_mana, start_mana);
|
||||||
|
player.SetTeamMana("water", start_mana, start_mana);
|
||||||
|
|
||||||
//Draw starting cards 开始抽卡
|
//Draw starting cards 开始抽卡
|
||||||
int dcards = pdeck != null ? pdeck.start_cards : GameplayData.Get().cards_start;
|
int dcards = pdeck != null ? pdeck.start_cards : GameplayData.Get().cards_start;
|
||||||
DrawCard(player, dcards);
|
DrawCard(player, dcards);
|
||||||
@@ -147,6 +153,7 @@ namespace TcgEngine.Gameplay
|
|||||||
StartTurn();
|
StartTurn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//开始回合
|
||||||
public virtual void StartTurn()
|
public virtual void StartTurn()
|
||||||
{
|
{
|
||||||
if (game_data.state == GameState.GameEnded)
|
if (game_data.state == GameState.GameEnded)
|
||||||
@@ -165,15 +172,34 @@ namespace TcgEngine.Gameplay
|
|||||||
DrawCard(player, GameplayData.Get().cards_per_turn);
|
DrawCard(player, GameplayData.Get().cards_per_turn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Mana
|
//Mana
|
||||||
player.mana_max += GameplayData.Get().mana_per_turn;
|
player.mana_max += GameplayData.Get().mana_per_turn;
|
||||||
player.mana_max = Mathf.Min(player.mana_max, GameplayData.Get().mana_max);
|
player.mana_max = Mathf.Min(player.mana_max, GameplayData.Get().mana_max);
|
||||||
player.mana = player.mana_max;
|
player.mana = player.mana_max;
|
||||||
|
|
||||||
|
//阵营Mana增长:基础每回合+1,场上有对应阵营角色额外+1
|
||||||
|
UpdateTeamMana(player, "fire");
|
||||||
|
UpdateTeamMana(player, "forest");
|
||||||
|
UpdateTeamMana(player, "water");
|
||||||
|
|
||||||
|
// 回合开始时检查所有阵营mana,如果超过5则设置为5
|
||||||
|
if (player.GetTeamMana("fire") > 5)
|
||||||
|
player.SetTeamMana("fire", 5);
|
||||||
|
if (player.GetTeamMana("forest") > 5)
|
||||||
|
player.SetTeamMana("forest", 5);
|
||||||
|
if (player.GetTeamMana("water") > 5)
|
||||||
|
player.SetTeamMana("water", 5);
|
||||||
|
if (player.mana > 5)
|
||||||
|
player.mana = 5;
|
||||||
|
|
||||||
//Turn timer and history
|
//Turn timer and history
|
||||||
game_data.turn_timer = GameplayData.Get().turn_duration;
|
game_data.turn_timer = GameplayData.Get().turn_duration;
|
||||||
player.history_list.Clear();
|
player.history_list.Clear();
|
||||||
|
|
||||||
|
//清除本回合已上场的卡牌数量
|
||||||
|
player.cards_played_this_turn = 0;
|
||||||
|
|
||||||
//Player poison
|
//Player poison
|
||||||
if (player.HasStatus(StatusType.Poisoned))
|
if (player.HasStatus(StatusType.Poisoned))
|
||||||
player.hp -= player.GetStatusValue(StatusType.Poisoned);
|
player.hp -= player.GetStatusValue(StatusType.Poisoned);
|
||||||
@@ -422,9 +448,9 @@ namespace TcgEngine.Gameplay
|
|||||||
{
|
{
|
||||||
Player player = game_data.GetPlayer(card.player_id);
|
Player player = game_data.GetPlayer(card.player_id);
|
||||||
|
|
||||||
//Cost
|
//Cost - 使用阵营mana支付
|
||||||
if (!skip_cost)
|
if (!skip_cost)
|
||||||
player.PayMana(card);
|
player.PayTeamMana(card);
|
||||||
|
|
||||||
//Play card
|
//Play card
|
||||||
player.RemoveCardFromAllGroups(card);
|
player.RemoveCardFromAllGroups(card);
|
||||||
@@ -997,6 +1023,81 @@ namespace TcgEngine.Gameplay
|
|||||||
|
|
||||||
cards_to_clear.Add(card); //Will be Clear() in the next UpdateOngoing, so that simultaneous damage effects work
|
cards_to_clear.Add(card); //Will be Clear() in the next UpdateOngoing, so that simultaneous damage effects work
|
||||||
onCardDiscarded?.Invoke(card);
|
onCardDiscarded?.Invoke(card);
|
||||||
|
|
||||||
|
// 检查场上是否为空,如果为空则强制召唤角色牌
|
||||||
|
if (was_on_board)
|
||||||
|
{
|
||||||
|
CheckAndForceSummonCharacter(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查并强制召唤角色牌
|
||||||
|
public virtual void CheckAndForceSummonCharacter(Player player)
|
||||||
|
{
|
||||||
|
// 检查场上是否为空
|
||||||
|
if (player.cards_board.Count > 0)
|
||||||
|
return; // 场上还有牌,不需要强制召唤
|
||||||
|
|
||||||
|
// 检查手牌中是否有角色牌
|
||||||
|
Card characterCard = GetRandomCharacterFromHand(player);
|
||||||
|
if (characterCard != null)
|
||||||
|
{
|
||||||
|
// 从手牌强制上场角色牌
|
||||||
|
ForceSummonCharacterFromHand(player, characterCard);
|
||||||
|
}
|
||||||
|
else if (player.cards_hand.Count == 0 && player.cards_deck.Count > 0)
|
||||||
|
{
|
||||||
|
// 没有手牌但卡组还有牌,判为输
|
||||||
|
EndGame(GetOpponentId(player.player_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从手牌中获取随机角色牌
|
||||||
|
private Card GetRandomCharacterFromHand(Player player)
|
||||||
|
{
|
||||||
|
List<Card> characterCards = new List<Card>();
|
||||||
|
foreach (Card card in player.cards_hand)
|
||||||
|
{
|
||||||
|
if (card.CardData.IsCharacter())
|
||||||
|
{
|
||||||
|
characterCards.Add(card);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (characterCards.Count > 0)
|
||||||
|
{
|
||||||
|
return characterCards[random.Next(0, characterCards.Count)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 强制从手牌召唤角色牌,设置为疲劳状态,不消耗mana
|
||||||
|
private void ForceSummonCharacterFromHand(Player player, Card characterCard)
|
||||||
|
{
|
||||||
|
// 找到一个空的卡槽
|
||||||
|
Slot emptySlot = player.GetRandomEmptySlot(random);
|
||||||
|
if (emptySlot.IsValid())
|
||||||
|
{
|
||||||
|
// 不消耗mana强制上场
|
||||||
|
PlayCard(characterCard, emptySlot, true); // skip_cost = true
|
||||||
|
|
||||||
|
// 设置为疲劳状态
|
||||||
|
characterCard.exhausted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取对手ID
|
||||||
|
private int GetOpponentId(int playerId)
|
||||||
|
{
|
||||||
|
foreach (Player player in game_data.players)
|
||||||
|
{
|
||||||
|
if (player.player_id != playerId)
|
||||||
|
{
|
||||||
|
return player.player_id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1; // 找不到对手时返回-1
|
||||||
}
|
}
|
||||||
|
|
||||||
public int RollRandomValue(int dice)
|
public int RollRandomValue(int dice)
|
||||||
@@ -1793,6 +1894,7 @@ namespace TcgEngine.Gameplay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 换牌
|
||||||
public virtual void Mulligan(Player player, string[] cards)
|
public virtual void Mulligan(Player player, string[] cards)
|
||||||
{
|
{
|
||||||
if (game_data.phase == GamePhase.Mulligan && !player.ready)
|
if (game_data.phase == GamePhase.Mulligan && !player.ready)
|
||||||
@@ -1808,14 +1910,24 @@ namespace TcgEngine.Gameplay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将换掉的卡牌临时存储,不放入弃牌堆
|
||||||
|
List<Card> mulligan_cards = new List<Card>();
|
||||||
foreach (Card card in remove_list)
|
foreach (Card card in remove_list)
|
||||||
{
|
{
|
||||||
player.RemoveCardFromAllGroups(card);
|
player.RemoveCardFromAllGroups(card);
|
||||||
player.cards_discard.Add(card);
|
mulligan_cards.Add(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.ready = true;
|
player.ready = true;
|
||||||
DrawCard(player, count);
|
DrawCard(player, count);
|
||||||
|
|
||||||
|
// 将换掉的卡牌重新加入牌组并洗牌
|
||||||
|
foreach (Card card in mulligan_cards)
|
||||||
|
{
|
||||||
|
player.cards_deck.Add(card);
|
||||||
|
}
|
||||||
|
ShuffleDeck(player.cards_deck);
|
||||||
|
|
||||||
RefreshData();
|
RefreshData();
|
||||||
|
|
||||||
if (game_data.AreAllPlayersReady())
|
if (game_data.AreAllPlayersReady())
|
||||||
@@ -1910,6 +2022,22 @@ namespace TcgEngine.Gameplay
|
|||||||
return random;
|
return random;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新指定阵营的mana,基础每回合+1,场上有对应阵营角色额外+角色数量
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateTeamMana(Player player, string team_id)
|
||||||
|
{
|
||||||
|
int base_increase = GameplayData.Get().mana_per_turn; // 基础增长
|
||||||
|
int team_bonus = player.GetBoardTeamCount(team_id); // 场上同阵营角色数量
|
||||||
|
int total_increase = base_increase + team_bonus;
|
||||||
|
|
||||||
|
// 增加最大mana
|
||||||
|
player.AddTeamMana(team_id, 0, total_increase);
|
||||||
|
|
||||||
|
// 当前mana设置为最大值
|
||||||
|
player.SetTeamMana(team_id, player.GetTeamManaMax(team_id));
|
||||||
|
}
|
||||||
|
|
||||||
public Game GameData { get { return game_data; } }
|
public Game GameData { get { return game_data; } }
|
||||||
public ResolveQueue ResolveQueue { get { return resolve_queue; } }
|
public ResolveQueue ResolveQueue { get { return resolve_queue; } }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,10 +23,36 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public int hp;
|
public int hp;
|
||||||
public int hp_max;
|
public int hp_max;
|
||||||
|
|
||||||
|
// 三种阵营mana系统
|
||||||
|
[System.Serializable]
|
||||||
|
public class TeamMana
|
||||||
|
{
|
||||||
|
public int current = 0;
|
||||||
|
public int max = 0;
|
||||||
|
|
||||||
|
public TeamMana(int start_value = 0)
|
||||||
|
{
|
||||||
|
current = start_value;
|
||||||
|
max = start_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 新mana
|
||||||
|
|
||||||
|
public int mana_fire = 0;
|
||||||
|
public int mana_forest = 0;
|
||||||
|
public int mana_water = 0;
|
||||||
|
|
||||||
|
// 保留原有mana属性以兼容现有代码,将作为通用mana使用
|
||||||
public int mana = 0;
|
public int mana = 0;
|
||||||
public int mana_max = 0;
|
public int mana_max = 0;
|
||||||
public int kill_count = 0;
|
|
||||||
|
|
||||||
|
// 新增:三种元素法力值的最大值
|
||||||
|
public int mana_fire_max = 0;
|
||||||
|
public int mana_forest_max = 0;
|
||||||
|
public int mana_water_max = 0;
|
||||||
|
public int kill_count = 0;
|
||||||
|
public int cards_played_this_turn = 0; // 本回合已上场的卡牌数量
|
||||||
public Dictionary<string, Card> cards_all = new Dictionary<string, Card>(); //Dictionnary for quick access to any card by UID
|
public Dictionary<string, Card> cards_all = new Dictionary<string, Card>(); //Dictionnary for quick access to any card by UID
|
||||||
public Card hero = null;
|
public Card hero = null;
|
||||||
|
|
||||||
@@ -556,10 +582,18 @@ namespace TcgEngine
|
|||||||
|
|
||||||
public virtual bool IsDead()
|
public virtual bool IsDead()
|
||||||
{
|
{
|
||||||
if (cards_hand.Count == 0 && cards_board.Count == 0 && cards_deck.Count == 0)
|
// 原有的死亡判定:血量为0
|
||||||
return true;
|
|
||||||
if (hp <= 0)
|
if (hp <= 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// 新增的死亡判定:无手牌、无场上卡牌,且卡组中还有牌
|
||||||
|
if (cards_hand.Count == 0 && cards_board.Count == 0 && cards_deck.Count > 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// 原有的死亡判定:所有牌都没有了
|
||||||
|
if (cards_hand.Count == 0 && cards_board.Count == 0 && cards_deck.Count == 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -583,7 +617,11 @@ namespace TcgEngine
|
|||||||
dest.hp_max = source.hp_max;
|
dest.hp_max = source.hp_max;
|
||||||
dest.mana = source.mana;
|
dest.mana = source.mana;
|
||||||
dest.mana_max = source.mana_max;
|
dest.mana_max = source.mana_max;
|
||||||
dest.kill_count = source.kill_count;
|
|
||||||
|
// 复制新mana
|
||||||
|
dest.mana_fire = source.mana;
|
||||||
|
dest.mana_forest = source.mana;
|
||||||
|
dest.mana_water = source.mana;
|
||||||
|
|
||||||
Card.CloneNull(source.hero, ref dest.hero);
|
Card.CloneNull(source.hero, ref dest.hero);
|
||||||
Card.CloneDict(source.cards_all, dest.cards_all);
|
Card.CloneDict(source.cards_all, dest.cards_all);
|
||||||
@@ -598,6 +636,165 @@ namespace TcgEngine
|
|||||||
CardStatus.CloneList(source.status, dest.status);
|
CardStatus.CloneList(source.status, dest.status);
|
||||||
CardStatus.CloneList(source.ongoing_status, dest.ongoing_status);
|
CardStatus.CloneList(source.ongoing_status, dest.ongoing_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------- 阵营Mana相关方法 -------------
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取指定阵营的当前mana值
|
||||||
|
/// </summary>
|
||||||
|
public int GetTeamMana(string team_id)
|
||||||
|
{
|
||||||
|
if (team_id == "fire") return mana_fire;
|
||||||
|
if (team_id == "forest") return mana_forest;
|
||||||
|
if (team_id == "water") return mana_water;
|
||||||
|
|
||||||
|
Debug.Log($"GetTeamMana: {team_id} not found");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取指定阵营的最大mana值
|
||||||
|
/// </summary>
|
||||||
|
public int GetTeamManaMax(string team_id)
|
||||||
|
{
|
||||||
|
return mana_max;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置指定阵营的mana值
|
||||||
|
/// </summary>
|
||||||
|
public void SetTeamMana(string team_id, int current, int max = -1)
|
||||||
|
{
|
||||||
|
if (team_id == "fire")
|
||||||
|
{
|
||||||
|
mana_fire = current;
|
||||||
|
if (max >= 0) mana_fire = max;
|
||||||
|
}
|
||||||
|
else if (team_id == "forest")
|
||||||
|
{
|
||||||
|
mana_forest = current;
|
||||||
|
if (max >= 0) mana_forest = max;
|
||||||
|
}
|
||||||
|
else if (team_id == "water")
|
||||||
|
{
|
||||||
|
mana_water = current;
|
||||||
|
if (max >= 0) mana_water = max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 增加指定阵营的mana值
|
||||||
|
/// </summary>
|
||||||
|
public void AddTeamMana(string team_id, int current_add = 0, int max_add = 0)
|
||||||
|
{
|
||||||
|
if (team_id == "fire")
|
||||||
|
{
|
||||||
|
mana_fire += current_add;
|
||||||
|
mana_fire = Mathf.Max(mana_fire, 0);
|
||||||
|
mana_fire = Mathf.Clamp(mana_fire, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
|
else if (team_id == "forest")
|
||||||
|
{
|
||||||
|
mana_forest += current_add;
|
||||||
|
mana_forest = Mathf.Max(mana_forest, 0);
|
||||||
|
mana_forest = Mathf.Clamp(mana_forest, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
|
else if (team_id == "water")
|
||||||
|
{
|
||||||
|
mana_water += current_add;
|
||||||
|
mana_water = Mathf.Max(mana_water, 0);
|
||||||
|
mana_water = Mathf.Clamp(mana_water, 0, GameplayData.Get().mana_max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查是否有足够的阵营mana支付卡牌费用
|
||||||
|
/// </summary>
|
||||||
|
public virtual bool CanPayTeamMana(Card card)
|
||||||
|
{
|
||||||
|
if (card.CardData.IsDynamicManaCost())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
string team_id = card.CardData.team?.id;
|
||||||
|
if (string.IsNullOrEmpty(team_id)){
|
||||||
|
Debug.Log($"not CanPayTeamMana checking team mana: {mana} >= {card.GetMana()}");
|
||||||
|
return mana >= card.GetMana(); // 使用通用mana
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"Checking team mana for {team_id}: {GetTeamMana(team_id)} >= {card.GetMana()}");
|
||||||
|
return GetTeamMana(team_id) >= card.GetMana();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 支付卡牌的阵营mana费用
|
||||||
|
/// </summary>
|
||||||
|
public virtual void PayTeamMana(Card card)
|
||||||
|
{
|
||||||
|
if (card.CardData.IsDynamicManaCost())
|
||||||
|
return;
|
||||||
|
|
||||||
|
string team_id = card.CardData.team?.id;
|
||||||
|
if (string.IsNullOrEmpty(team_id))
|
||||||
|
{
|
||||||
|
Debug.Log($"PayTeamMana 通用mana: {mana} -= {card.GetMana()}");
|
||||||
|
mana -= card.GetMana(); // 使用通用mana
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cost = card.GetMana();
|
||||||
|
if (team_id == "fire")
|
||||||
|
{
|
||||||
|
mana_fire -= cost;
|
||||||
|
mana_fire = Mathf.Max(mana_fire, 0);
|
||||||
|
}
|
||||||
|
else if (team_id == "forest")
|
||||||
|
{
|
||||||
|
mana_forest -= cost;
|
||||||
|
mana_forest = Mathf.Max(mana_forest, 0);
|
||||||
|
}
|
||||||
|
else if (team_id == "water")
|
||||||
|
{
|
||||||
|
mana_water -= cost;
|
||||||
|
mana_water = Mathf.Max(mana_water, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取场上指定阵营的角色数量
|
||||||
|
/// </summary>
|
||||||
|
public int GetBoardTeamCount(string team_id)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
Debug.Log($"Checking board for {team_id} characters. Total cards on board: {cards_board.Count}");
|
||||||
|
|
||||||
|
foreach (Card card in cards_board)
|
||||||
|
{
|
||||||
|
if (card.CardData.IsCharacter() && card.CardData.team?.id == team_id)
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
Debug.Log($"Found {team_id} character: {card.CardData.title}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log($"Total {team_id} characters on board: {count}");
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 测试方法:打印当前所有阵营mana状态
|
||||||
|
/// </summary>
|
||||||
|
public void DebugTeamMana()
|
||||||
|
{
|
||||||
|
Debug.Log($"=== Player {player_id} Team Mana Debug ===");
|
||||||
|
Debug.Log($"General: {mana}/{mana_max}");
|
||||||
|
Debug.Log($"Board cards: {cards_board.Count}");
|
||||||
|
Debug.Log($"Fire characters on board: {GetBoardTeamCount("fire")}");
|
||||||
|
Debug.Log($"Forest characters on board: {GetBoardTeamCount("forest")}");
|
||||||
|
Debug.Log($"Water characters on board: {GetBoardTeamCount("water")}");
|
||||||
|
Debug.Log("=====================================");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace TcgEngine
|
|||||||
public int p; //0 or 1, represent player ID
|
public int p; //0 or 1, represent player ID
|
||||||
|
|
||||||
public static int x_min = 1; //Dont change this, should start at 1 (0,0,0 represent invalid slot)
|
public static int x_min = 1; //Dont change this, should start at 1 (0,0,0 represent invalid slot)
|
||||||
public static int x_max = 5; //Number of slots in a row/zone
|
public static int x_max = 4; //Number of slots in a row/zone
|
||||||
|
|
||||||
public static int y_min = 1; //Dont change this, should start at 1 (0,0,0 represent invalid slot)
|
public static int y_min = 1; //Dont change this, should start at 1 (0,0,0 represent invalid slot)
|
||||||
public static int y_max = 1; //Set this to the number of rows/locations you want to have
|
public static int y_max = 1; //Set this to the number of rows/locations you want to have
|
||||||
|
|||||||
@@ -303,7 +303,18 @@ namespace TcgEngine.Server
|
|||||||
{
|
{
|
||||||
Card card = player.GetCard(msg.card_uid);
|
Card card = player.GetCard(msg.card_uid);
|
||||||
if (card != null && card.player_id == player.player_id)
|
if (card != null && card.player_id == player.player_id)
|
||||||
|
{
|
||||||
|
// 检查本回合是否已经上场过场上卡牌(只有怪物牌等场上卡牌受限制)
|
||||||
|
if (card.CardData.IsBoardCard() && player.cards_played_this_turn >= 1)
|
||||||
|
return; // 已经上场过场上卡牌,不能再上场
|
||||||
|
|
||||||
|
// 手动上场卡牌:跳过mana消耗
|
||||||
|
// gameplay.PlayCard(card, msg.slot, true);
|
||||||
gameplay.PlayCard(card, msg.slot);
|
gameplay.PlayCard(card, msg.slot);
|
||||||
|
// 只有场上卡牌才增加计数
|
||||||
|
if (card.CardData.IsBoardCard())
|
||||||
|
player.cards_played_this_turn++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,9 +33,15 @@ namespace TcgEngine.UI
|
|||||||
|
|
||||||
public void Refresh()
|
public void Refresh()
|
||||||
{
|
{
|
||||||
|
if (icons == null)
|
||||||
|
return;
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
foreach (Image icon in icons)
|
foreach (Image icon in icons)
|
||||||
{
|
{
|
||||||
|
if (icon == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
icon.gameObject.SetActive(index < value || index < max_value);
|
icon.gameObject.SetActive(index < value || index < max_value);
|
||||||
icon.sprite = (index < value) ? sprite_full : sprite_empty;
|
icon.sprite = (index < value) ? sprite_full : sprite_empty;
|
||||||
index++;
|
index++;
|
||||||
@@ -44,9 +50,13 @@ namespace TcgEngine.UI
|
|||||||
|
|
||||||
public void SetMat(Material mat)
|
public void SetMat(Material mat)
|
||||||
{
|
{
|
||||||
|
if (icons == null)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach (Image icon in icons)
|
foreach (Image icon in icons)
|
||||||
{
|
{
|
||||||
icon.material = mat;
|
if (icon != null)
|
||||||
|
icon.material = mat;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ namespace TcgEngine.UI
|
|||||||
public bool is_opponent;
|
public bool is_opponent;
|
||||||
public Text pname;
|
public Text pname;
|
||||||
public AvatarUI avatar;
|
public AvatarUI avatar;
|
||||||
public IconBar mana_bar;
|
public IconBar mana_bar; // 保留原有mana条,作为通用mana显示
|
||||||
|
|
||||||
|
[Header("Team Mana Bars")]
|
||||||
|
public IconBar[] team_mana_bars = new IconBar[3]; // ManaBar_0, ManaBar_1, ManaBar_2
|
||||||
|
|
||||||
public Text hp_txt;
|
public Text hp_txt;
|
||||||
public Text hp_max_txt;
|
public Text hp_max_txt;
|
||||||
|
|
||||||
@@ -68,8 +72,57 @@ namespace TcgEngine.UI
|
|||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
pname.text = player.username;
|
pname.text = player.username;
|
||||||
|
|
||||||
|
// 更新通用mana条
|
||||||
mana_bar.value = player.mana;
|
mana_bar.value = player.mana;
|
||||||
mana_bar.max_value = player.mana_max;
|
mana_bar.max_value = player.mana_max;
|
||||||
|
|
||||||
|
// 更新阵营mana条 - fire, forest, water
|
||||||
|
if (team_mana_bars.Length >= 3)
|
||||||
|
{
|
||||||
|
// ManaBar_0 = fire
|
||||||
|
if (team_mana_bars[0] != null)
|
||||||
|
{
|
||||||
|
team_mana_bars[0].value = player.mana_fire;
|
||||||
|
team_mana_bars[0].max_value = player.mana_max;
|
||||||
|
Debug.Log($"Fire Mana: {player.mana_fire}/{player.mana_max}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("team_mana_bars[0] is null!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ManaBar_1 = forest
|
||||||
|
if (team_mana_bars[1] != null)
|
||||||
|
{
|
||||||
|
team_mana_bars[1].value = player.mana_forest;
|
||||||
|
team_mana_bars[1].max_value = player.mana_max;
|
||||||
|
Debug.Log($"Forest Mana: {player.mana_forest}/{player.mana_max}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("team_mana_bars[1] is null!");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ManaBar_2 = water
|
||||||
|
if (team_mana_bars[2] != null)
|
||||||
|
{
|
||||||
|
team_mana_bars[2].value = player.mana_water;
|
||||||
|
team_mana_bars[2].max_value = player.mana_max;
|
||||||
|
Debug.Log($"Water Mana: {player.mana_water}/{player.mana_max}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("team_mana_bars[2] is null!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"team_mana_bars.Length = {team_mana_bars.Length}, expected 3");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
hp_txt.text = prev_hp.ToString();
|
hp_txt.text = prev_hp.ToString();
|
||||||
hp_max_txt.text = "/" + player.hp_max.ToString();
|
hp_max_txt.text = "/" + player.hp_max.ToString();
|
||||||
|
|
||||||
|
|||||||
@@ -1,656 +0,0 @@
|
|||||||
{
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.animation": {
|
|
||||||
"version": "7.0.12",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.common": "6.0.6",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.modules.animation": "1.0.0",
|
|
||||||
"com.unity.modules.uielements": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.aseprite": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.common": "6.0.6",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.mathematics": "1.2.6",
|
|
||||||
"com.unity.modules.animation": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.common": {
|
|
||||||
"version": "6.0.6",
|
|
||||||
"depth": 2,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.burst": "1.5.1",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.mathematics": "1.1.0",
|
|
||||||
"com.unity.modules.uielements": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.path": {
|
|
||||||
"version": "5.0.2",
|
|
||||||
"depth": 2,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.pixel-perfect": {
|
|
||||||
"version": "5.0.3",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.psdimporter": {
|
|
||||||
"version": "6.0.7",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.common": "6.0.6",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.2d.animation": "7.0.9"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.sprite": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.2d.spriteshape": {
|
|
||||||
"version": "7.0.7",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.path": "5.0.2",
|
|
||||||
"com.unity.2d.common": "6.0.6",
|
|
||||||
"com.unity.mathematics": "1.1.0",
|
|
||||||
"com.unity.modules.physics2d": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.2d.tilemap": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.2d.tilemap.extras": {
|
|
||||||
"version": "2.2.7",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0",
|
|
||||||
"com.unity.2d.tilemap": "1.0.0",
|
|
||||||
"com.unity.modules.tilemap": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.ads": {
|
|
||||||
"version": "4.4.2",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.analytics": {
|
|
||||||
"version": "3.6.12",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.burst": {
|
|
||||||
"version": "1.8.11",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.mathematics": "1.2.1"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.collab-proxy": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.collections": {
|
|
||||||
"version": "1.2.4",
|
|
||||||
"depth": 2,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.burst": "1.6.6",
|
|
||||||
"com.unity.test-framework": "1.1.31"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.ext.nunit": {
|
|
||||||
"version": "1.0.6",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.feature.2d": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.2d.animation": "7.0.12",
|
|
||||||
"com.unity.2d.pixel-perfect": "5.0.3",
|
|
||||||
"com.unity.2d.psdimporter": "6.0.7",
|
|
||||||
"com.unity.2d.sprite": "1.0.0",
|
|
||||||
"com.unity.2d.spriteshape": "7.0.7",
|
|
||||||
"com.unity.2d.tilemap": "1.0.0",
|
|
||||||
"com.unity.2d.tilemap.extras": "2.2.7",
|
|
||||||
"com.unity.2d.aseprite": "1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.ide.rider": {
|
|
||||||
"version": "3.0.26",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ext.nunit": "1.0.6"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.ide.visualstudio": {
|
|
||||||
"version": "2.0.22",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.test-framework": "1.1.9"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.ide.vscode": {
|
|
||||||
"version": "1.2.5",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.mathematics": {
|
|
||||||
"version": "1.2.6",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.netcode.gameobjects": {
|
|
||||||
"version": "1.7.1",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.transport": "1.4.0",
|
|
||||||
"com.unity.nuget.mono-cecil": "1.10.1"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.nuget.mono-cecil": {
|
|
||||||
"version": "1.10.1",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.nuget.newtonsoft-json": {
|
|
||||||
"version": "3.2.1",
|
|
||||||
"depth": 2,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.postprocessing": {
|
|
||||||
"version": "3.2.2",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.purchasing": {
|
|
||||||
"version": "4.9.3",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0",
|
|
||||||
"com.unity.modules.unityanalytics": "1.0.0",
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0",
|
|
||||||
"com.unity.modules.androidjni": "1.0.0",
|
|
||||||
"com.unity.services.core": "1.8.1"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.render-pipelines.core": {
|
|
||||||
"version": "12.1.13",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0",
|
|
||||||
"com.unity.modules.physics": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.render-pipelines.universal": {
|
|
||||||
"version": "12.1.13",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.mathematics": "1.2.1",
|
|
||||||
"com.unity.burst": "1.8.9",
|
|
||||||
"com.unity.render-pipelines.core": "12.1.13",
|
|
||||||
"com.unity.shadergraph": "12.1.13"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.searcher": {
|
|
||||||
"version": "4.9.1",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.services.core": {
|
|
||||||
"version": "1.12.0",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.nuget.newtonsoft-json": "3.2.1",
|
|
||||||
"com.unity.modules.androidjni": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.shadergraph": {
|
|
||||||
"version": "12.1.13",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.render-pipelines.core": "12.1.13",
|
|
||||||
"com.unity.searcher": "4.9.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.sysroot": {
|
|
||||||
"version": "2.0.10",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.sysroot.linux-x86_64": {
|
|
||||||
"version": "2.0.9",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.sysroot": "2.0.10"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.test-framework": {
|
|
||||||
"version": "1.1.33",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ext.nunit": "1.0.6",
|
|
||||||
"com.unity.modules.imgui": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.textmeshpro": {
|
|
||||||
"version": "3.0.6",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.timeline": {
|
|
||||||
"version": "1.6.5",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.audio": "1.0.0",
|
|
||||||
"com.unity.modules.director": "1.0.0",
|
|
||||||
"com.unity.modules.animation": "1.0.0",
|
|
||||||
"com.unity.modules.particlesystem": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.toolchain.macos-x86_64-linux-x86_64": {
|
|
||||||
"version": "2.0.10",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.sysroot": "2.0.10",
|
|
||||||
"com.unity.sysroot.linux-x86_64": "2.0.9"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.toolchain.win-x86_64-linux-x86_64": {
|
|
||||||
"version": "2.0.10",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.sysroot": "2.0.10",
|
|
||||||
"com.unity.sysroot.linux-x86_64": "2.0.9"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.transport": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.burst": "1.6.6",
|
|
||||||
"com.unity.collections": "1.2.4",
|
|
||||||
"com.unity.mathematics": "1.2.6"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.ugui": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.ui": "1.0.0",
|
|
||||||
"com.unity.modules.imgui": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.visualscripting": {
|
|
||||||
"version": "1.9.1",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.ugui": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.xr.legacyinputhelpers": {
|
|
||||||
"version": "2.1.10",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.vr": "1.0.0",
|
|
||||||
"com.unity.modules.xr": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.modules.ai": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.androidjni": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.animation": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.assetbundle": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.audio": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.cloth": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.director": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.audio": "1.0.0",
|
|
||||||
"com.unity.modules.animation": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.imageconversion": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.imgui": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.jsonserialize": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.particlesystem": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.physics": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.physics2d": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.screencapture": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.imageconversion": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.subsystems": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.terrain": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.terrainphysics": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics": "1.0.0",
|
|
||||||
"com.unity.modules.terrain": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.tilemap": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics2d": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.ui": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.uielements": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.ui": "1.0.0",
|
|
||||||
"com.unity.modules.imgui": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0",
|
|
||||||
"com.unity.modules.uielementsnative": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.uielementsnative": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 1,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.ui": "1.0.0",
|
|
||||||
"com.unity.modules.imgui": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.umbra": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unityanalytics": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unitywebrequest": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unitywebrequestassetbundle": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.assetbundle": "1.0.0",
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unitywebrequestaudio": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.modules.audio": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unitywebrequesttexture": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.modules.imageconversion": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.unitywebrequestwww": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0",
|
|
||||||
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
|
||||||
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
|
||||||
"com.unity.modules.audio": "1.0.0",
|
|
||||||
"com.unity.modules.assetbundle": "1.0.0",
|
|
||||||
"com.unity.modules.imageconversion": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.vehicles": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.video": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.audio": "1.0.0",
|
|
||||||
"com.unity.modules.ui": "1.0.0",
|
|
||||||
"com.unity.modules.unitywebrequest": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.vr": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0",
|
|
||||||
"com.unity.modules.physics": "1.0.0",
|
|
||||||
"com.unity.modules.xr": "1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"com.unity.modules.wind": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {}
|
|
||||||
},
|
|
||||||
"com.unity.modules.xr": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "builtin",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.physics": "1.0.0",
|
|
||||||
"com.unity.modules.jsonserialize": "1.0.0",
|
|
||||||
"com.unity.modules.subsystems": "1.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
17
ProjectSettings/BurstAotSettings_StandaloneOSX.json
Normal file
17
ProjectSettings/BurstAotSettings_StandaloneOSX.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"MonoBehaviour": {
|
||||||
|
"Version": 4,
|
||||||
|
"EnableBurstCompilation": true,
|
||||||
|
"EnableOptimisations": true,
|
||||||
|
"EnableSafetyChecks": false,
|
||||||
|
"EnableDebugInAllBuilds": false,
|
||||||
|
"DebugDataKind": 1,
|
||||||
|
"EnableArmv9SecurityFeatures": false,
|
||||||
|
"CpuMinTargetX32": 0,
|
||||||
|
"CpuMaxTargetX32": 0,
|
||||||
|
"CpuMinTargetX64": 0,
|
||||||
|
"CpuMaxTargetX64": 0,
|
||||||
|
"CpuTargetsX64": 72,
|
||||||
|
"OptimizeFor": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user