diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/BlockFlood.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/BlockFlood.asset index f9118511..8aeb50e1 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/BlockFlood.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/Enemy/BlockFlood.asset @@ -12,8 +12,24 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 20f70984b262f8d4382bf5262dddb83e, type: 3} m_Name: BlockFlood m_EditorClassIdentifier: + enemyName: + enemyIcon: {fileID: 0} stepRange: 0 + stepRangeMultiplier: 0 + speed: 0 + maxMoveCoolDown: 0 + currentMoveCoolDown: 0 shieldValue: 0 - maxHP: 100 - currentHP: 100 + upShieldValue: 0 + maxHP: 1000 + currentHP: 1000 + sufferDamageMultiply: 0 colourType: 0 + maxSkillCoolDown: 0 + currentSkillCoolDown: 0 + damageMultiplier: 1 + damage: 0 + attackRange: 0 + aoeRange: 0 + maxNumberOfHits: 2 + currentNumberOfHits: 2 diff --git a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset index 3be21081..443fbcf7 100644 --- a/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset +++ b/ColorlessWorld-2024-4-2/Assets/GameDate/cardDeckList.asset @@ -14,12 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: cardDeckList: - 1001 - - 1001 - - 1001 - - 1001 - - 1002 - - 1002 - - 1002 - 1002 - 1003 - 1004 + - 2001 diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem.meta b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem.meta new file mode 100644 index 00000000..1f14b93a --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 661fd2bb49fc63847bd149bbde597faf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree.meta b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree.meta new file mode 100644 index 00000000..fba72a25 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8530888d5a27b2741a53af50312ea8fe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab new file mode 100644 index 00000000..c79ed57e --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab @@ -0,0 +1,171 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1496019408761085200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5563030652977735299} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5563030652977735299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1496019408761085200} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.945, z: 0} + m_LocalScale: {x: 1.1111112, y: 1.1111112, z: 1.1111112} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6047049870113643063} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2458175114420723768 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6047049870113643063} + - component: {fileID: 4354208083307919355} + - component: {fileID: 8645409521225535772} + m_Layer: 0 + m_Name: tree + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6047049870113643063 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.592, y: 1, z: -1.2736247} + m_LocalScale: {x: 0.9, y: 0.9, z: 0.9} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 5563030652977735299} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &4354208083307919355 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: f9ca4d2a420a8f14b8ff292551fc0001, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1.923, y: 1.879} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &8645409521225535772 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2458175114420723768} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b93e606dce1c400408bd059eaaa399b2, type: 3} + m_Name: + m_EditorClassIdentifier: + templateEnemyState: {fileID: 11400000, guid: b991b3f0500bd0c439d1a956c497c4cb, type: 2} + EnemyState: {fileID: 0} + positionX: 0 + positionY: 0 + pasth: [] + oppositePasth: [] + moveType: 0 + rangePool: [] + aoeRangePool: [] + stateText: + jumpHeight: 0 + posCount: 0 + jumpSpeed: 0 + speedCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + enemyType: 1 + enemyScript: 0 + lineAim: {fileID: 0} + canLineAppre: 0 + disableAttack: {fileID: 0} + enemyUIBar: {fileID: 8570734685845233804, guid: 825ad890badfb4c4c9829a5507a78704, + type: 3} + followPoint: {fileID: 5563030652977735299} + bone: {fileID: 0} + bone_Re: {fileID: 0} + lasteHp: 0 + anim: {fileID: 0} + meleeAttackSpeed: 0 + meleeAttackSpeedCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + canMove: 0 + planAction: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab.meta b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab.meta new file mode 100644 index 00000000..58566768 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/CardPrefab/PlaceItem/Tree/tree.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f3c59a4c3b3c54a4c952f50e44940dfc +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyUIBar/EnemyInSenceCanvas(Clone).prefab b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyUIBar/EnemyInSenceCanvas(Clone).prefab index df365f68..d01489d9 100644 --- a/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyUIBar/EnemyInSenceCanvas(Clone).prefab +++ b/ColorlessWorld-2024-4-2/Assets/Prefab/EnemyUIBar/EnemyInSenceCanvas(Clone).prefab @@ -482,6 +482,10 @@ MonoBehaviour: buffPanle: {fileID: 6855895506985558} time: 0.2 buffInforOnMouse: {fileID: 9167572405963525808} + isSync: 1 + expHPBar: {fileID: 3535951898584899345} + expAfterHPBar: {fileID: 5932606103944672843} + sheildFlash: {fileID: 6953056437515368525} --- !u!65 &6055812006071397122 BoxCollider: m_ObjectHideFlags: 0 @@ -516,6 +520,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _camera: {fileID: 0} + maxAnglesX: 0 + minAnglesX: 0 + maxAnglesY: 0 + minAnglesY: 0 --- !u!114 &1929445142485092888 MonoBehaviour: m_ObjectHideFlags: 0 @@ -697,6 +705,7 @@ GameObject: - component: {fileID: 3566171710884372957} - component: {fileID: 8234315634363532829} - component: {fileID: 8051707880280472587} + - component: {fileID: 6953056437515368525} m_Layer: 10 m_Name: ShieldPanel m_TagString: Untagged @@ -762,6 +771,23 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6953056437515368525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2981692177663718319} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d937092a4e1cd4f43a6d5b3f650624b0, type: 3} + m_Name: + m_EditorClassIdentifier: + image: {fileID: 8051707880280472587} + white: {r: 1, g: 1, b: 1, a: 1} + black: {r: 0.5294118, g: 0.5294118, b: 0.5294118, a: 1} + originColor: {r: 1, g: 1, b: 1, a: 1} + speed: 2 --- !u!1 &3565950214936625018 GameObject: m_ObjectHideFlags: 0 @@ -872,6 +898,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 5385135044954651861} + - {fileID: 5445038130022868107} - {fileID: 8933368953564356502} m_Father: {fileID: 3373168338813219461} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -918,6 +945,100 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6587967682901428189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5445038130022868107} + - component: {fileID: 4209428070186546489} + - component: {fileID: 3535951898584899345} + - component: {fileID: 8739106622940273047} + m_Layer: 10 + m_Name: ExpHp + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5445038130022868107 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6587967682901428189} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.0004} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5893412368506887653} + m_Father: {fileID: 6660868405258448497} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.00040000677, y: -0.001699999} + m_SizeDelta: {x: -0.013, y: -0.0173} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4209428070186546489 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6587967682901428189} + m_CullTransparentMesh: 1 +--- !u!114 &3535951898584899345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6587967682901428189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: b5f80b20a6319c744ad2296a28845fda, type: 2} + m_Color: {r: 0.5283019, g: 0.5283019, b: 0.5283019, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 06846d39b2c9e8f40941c43d5e290f19, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8739106622940273047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6587967682901428189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d937092a4e1cd4f43a6d5b3f650624b0, type: 3} + m_Name: + m_EditorClassIdentifier: + image: {fileID: 3535951898584899345} + white: {r: 0.6037736, g: 0.6037736, b: 0.6037736, a: 0.78431374} + black: {r: 0, g: 0, b: 0, a: 0.78431374} + originColor: {r: 0, g: 0, b: 0, a: 0} + speed: 2 --- !u!1 &6786056847938472585 GameObject: m_ObjectHideFlags: 0 @@ -930,7 +1051,7 @@ GameObject: - component: {fileID: 1677312377797295195} - component: {fileID: 1434588797179038101} m_Layer: 10 - m_Name: Panel + m_Name: TureHp m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1184,6 +1305,81 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8558197783063608682 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5893412368506887653} + - component: {fileID: 4879584892609544298} + - component: {fileID: 5932606103944672843} + m_Layer: 10 + m_Name: ExpAfterHp + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5893412368506887653 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8558197783063608682} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5445038130022868107} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0, y: -0.000055156648} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4879584892609544298 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8558197783063608682} + m_CullTransparentMesh: 1 +--- !u!114 &5932606103944672843 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8558197783063608682} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: b5f80b20a6319c744ad2296a28845fda, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 909920594, guid: 3f776a58fba7d364f86a778196c2901f, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &8771133338754357490 GameObject: m_ObjectHideFlags: 0 diff --git a/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png b/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png new file mode 100644 index 00000000..6ea4ca52 Binary files /dev/null and b/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png differ diff --git a/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png.meta b/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png.meta new file mode 100644 index 00000000..4b7abce3 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Resources/CardIcon/2001.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: a98c5224244c43241a646abc1427d491 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1000 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scenes/FightDaylight.unity b/ColorlessWorld-2024-4-2/Assets/Scenes/FightDaylight.unity index a76637a8..2e392531 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scenes/FightDaylight.unity +++ b/ColorlessWorld-2024-4-2/Assets/Scenes/FightDaylight.unity @@ -6810,6 +6810,7 @@ MonoBehaviour: type: 3} textInCondition: {fileID: 2195466461428280820, guid: ef66a5db78741da4d93f90fcdcb7176a, type: 3} + tree: {fileID: 2458175114420723768, guid: f3c59a4c3b3c54a4c952f50e44940dfc, type: 3} --- !u!1 &282261046 GameObject: m_ObjectHideFlags: 0 @@ -13310,6 +13311,7 @@ MonoBehaviour: canAction: 0 buffInforOnMouse: {fileID: 365854629} buffInforOnMouseInStatus: {fileID: 14209053} + expectDamage: 0 --- !u!1 &504685528 GameObject: m_ObjectHideFlags: 0 @@ -23698,7 +23700,7 @@ RectTransform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 959299391} 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_ConstrainProportionsScale: 1 m_Children: [] diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index ffca59fb..f75669a7 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -91,6 +91,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag { case CardDragState.onBeginDrag: GameManager.Instance.onDrag = true; + SettlementManager.Instance.expectSettle(cardEntity.cardOriginalData);//预计伤害计算 if (choosed == false) { TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; @@ -227,6 +228,7 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag //卡牌释放 public void CardUse() { + EnemyManager.Instance.HideExpHP_Observer(); GameManager.Instance.onDrag = false; //目标释放选择 /*if (!cardTargetCheck()) @@ -246,6 +248,8 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag canUse = true; resetComponentPosition(); } + + dragState = CardDragState.onDrag; } //检查卡牌的费用是否可以释放 @@ -395,6 +399,10 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag transform.localScale = new Vector3(1f, 1f, 1f); CardActiveSort.Instance.ReflashCardPoint(); + + //隐藏怪物虚血 + EnemyManager.Instance.HideExpHP_Observer(); + return; } @@ -454,7 +462,8 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag } - + //更新效果作用范围内怪物虚血 + EnemyManager.Instance.ShowExpHp_Observer(cardEntity.influencePreviewPool); } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs index 057591e1..eb1b0661 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardEntity.cs @@ -156,11 +156,12 @@ public class CardEntity : MonoBehaviour //生成子弹节点 if(cardOriginalData.CastingRange>0) { - var bulle = Instantiate(cardBulletPrefab, transform.position, cardBulletPrefab.transform.localRotation); - - StartCoroutine(bulle.GetComponent().MoveToDestination(GetComponent().currentNode.transform.position,GameManager .Instance .player .transform .position )); - } + var bulle = Instantiate(cardBulletPrefab, transform.position, cardBulletPrefab.transform.localRotation); + Debug.Log("发射1"); + yield return StartCoroutine(bulle.GetComponent().MoveToDestination(GetComponent().currentNode.transform.position,GameManager .Instance .player .transform .position )); + } + Debug.Log("发射2"); yield return StartCoroutine(DestructionManager.Instance.startDestoryAndUseCard(this.gameObject, cardOriginalData, influencePreviewPool, cardIndex, targetNode)); } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs index ae2a6dfc..91cd353e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardResourcesManager.cs @@ -28,6 +28,10 @@ public class CardResourcesManager : Singleton public GameObject imageInCondition; [Header("条件中的字符")] public GameObject textInCondition; + + [Header("放置物品")] + public GameObject tree; + private void Start() { DontDestroyOnLoad(this.gameObject); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp.meta new file mode 100644 index 00000000..8d67a16a --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 178e0d528cfe03d4f81caddb6d109dbb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs new file mode 100644 index 00000000..48ce3fe1 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs @@ -0,0 +1,612 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using UnityEngine.InputSystem; +using System; +using Unity.VisualScripting; +using System.Data; + +public class TempPlaceEffect: MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler +{ + + [Header("拖拽参数")] + public Transform originalParent; + public Vector3 originalpoint; + + //更换父级前的排序位置 + public int originalIndexInChild; + + public EventSystem eventSystem; + public bool canUse = true;//决定卡牌是否可以释放 + bool choosed;//标识卡牌是否被选中 + + [Header("贝塞尔曲线瞄准")] + public GameObject ainPanle; + + [Header("影响格参数")] + public MapUnity currentNode;//瞄准的格子 + + [Header("卡牌拖拽状态")] + public CardDragState dragState = CardDragState.noDrag; + public enum CardDragState + { + onBeginDrag, + onDrag, + onEndDrag, + noDrag + } + PointerEventData eventData; + List result = new List(); + + public bool ready;//是否已到达可释放位置 + + [Header("卡牌属性")] + public List castingPool;//卡牌打出范围 + + private CardEntity cardEntity; + + [Header("射线图层剔除")] + public LayerMask layerMask; + + [Header("鼠标检测脚本")] + public CardOnMouseEnter cardOnMouseEnter; + + void Start() + { + originalParent = gameObject.transform.parent; + dragState = CardDragState.noDrag; + eventSystem = GameObject.FindObjectOfType(); + eventData = new PointerEventData(eventSystem); + + cardOnMouseEnter = GetComponent(); + + eventSystem = GameObject.FindObjectOfType(); + cardEntity = GetComponent(); + + cardEntity.createCard("2001", 0, true); + } + + + private void Update() + { + handleRightClickCancel(); + + + if (dragState != CardDragState.noDrag && dragState != CardDragState.onDrag) + { + //UI射线检测 + eventData.position = Mouse.current.position.value; + + eventSystem.RaycastAll(eventData, result); + if (result.Count > 0) + { + Debug.Log(result[0].gameObject.name); + } + } + + if (GameManager.Instance.onDraw == false && TurnMaster.Instance.servantAction != TurnMaster.ServantAction.useSkill) + { + switch (dragState) + { + case CardDragState.onBeginDrag: + GameManager.Instance.onDrag = true; + SettlementManager.Instance.expectSettle(cardEntity.cardOriginalData);//预计伤害计算 + if (choosed == false) + { + TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.useCard; + CardChoose(eventData); + dragState = CardDragState.onDrag; + } + break; + case CardDragState.onDrag: + CardFollow(); + if (Mouse.current.leftButton.wasReleasedThisFrame && ready) + { + dragState = CardDragState.onEndDrag; + } + break; + case CardDragState.onEndDrag: + TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none; + CardUse(); + break; + case CardDragState.noDrag: + if (Mouse.current.leftButton.wasReleasedThisFrame && GameManager.Instance.onDrag == false && TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.none) + { + eventData.position = Mouse.current.position.value; + + eventSystem.RaycastAll(eventData, result); + if (result.Count > 0) + { + // Debug.Log(result[0].gameObject.name); + if (result[0].gameObject == this.gameObject) + { + dragState = CardDragState.onBeginDrag; + } + } + + + } + break; + } + } + + + } + + //卡片动作 + //开始选中 + public void CardChoose(PointerEventData eventData) + { + banActionCardCheck(); + disArmCheck(); + costCheck(); + disCardCheck(); + if (!cardEntity.canUse) + { + resetComponentPosition(); + return; + } + choosed = true; + //选中音效 + AudioManager.Instance.ChooseCardVoicePlayer(true); + + GetComponent().blocksRaycasts = false; + originalpoint = this.transform.localPosition; + + transform.SetParent(transform.parent.parent); + transform.localPosition = cardOnMouseEnter.originPoint; + + GetComponent().localScale = cardOnMouseEnter.targetScale; + + //根据卡牌数据决定是否调用曲线 + if (cardEntity.cardOriginalData.CastingRange != 0) + { + //释放范围为0则不需要调用曲线 + ainPanle.SetActive(true); + } + else + { + ainPanle.SetActive(false); + } + } + + //拖拽中 + public void CardFollow() + { + if (!cardEntity.canUse) + { + return; + } + + dyeing(); + + eventData.position = Mouse.current.position.value; + + eventSystem.RaycastAll(eventData, result); + // Debug.Log(result[0].gameObject.name); + if (result.Count > 0) + { + if (result[0].gameObject.name == "TotalPanel") + { + if (ready == false) + { + ready = true; + } + transform.localPosition = cardOnMouseEnter.originPoint;// + new Vector3(0, 30, 0); + // transform.localScale = new Vector3(1, 1, 1); + if (cardEntity.cardOriginalData.CastingRange != 0) + { + ainPanleWork(eventData); + } + else + { + noAinPanleWork(eventData); + } + } + else + { + if (ready == true) + { + resetComponentPosition(); + } + else + { + // Debug.Log(transform.position); + // Debug.Log(eventData.position); + // transform.position = eventData.position; + Vector3 eventDataWorld = CardActiveSort.Instance.ScreenPointToWorldPoint(eventData.position, 4f); + transform.position = eventDataWorld; + } + } + + + } + + } + + //卡牌释放 + public void CardUse() + { + EnemyManager.Instance.HideExpHP_Observer(); + GameManager.Instance.onDrag = false; + //目标释放选择 + /*if (!cardTargetCheck()) + { + canUse = false; + Debug.Log("目标不符合"); + //resetComponentPosition(); + }*/ + + if (canUse) + { + CardActiveSort.Instance.ReflashCardPoint(); + StartCoroutine(OnDragIEnumerator(eventData)); + } + else + { + canUse = true; + resetComponentPosition(); + } + + dragState = CardDragState.onDrag; + } + + //检查卡牌的费用是否可以释放 + private void costCheck() + { + Debug.Log("当前费用:" + TurnMaster.Instance.currentCost); + Debug.Log("总费用:" + Usermanager.Instance.totalCost); + int trueCost = cardEntity.cardOriginalData.Cost; + if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Black)) + { + trueCost++; + } + if (GameManager.Instance.playerState.currentCost - trueCost < 0) + { + Debug.Log("费用不足"); + TipManager.Instance.SendTip("费用不足"); + cardEntity.canUse = false; + } + + } + + private void stepCostCheck(bool canAdv) + { + /*if (canAdv) + { + if (cardEntity.cardOriginalData.AdvantageFunctionVal.ContainsKey(CardFunction.costStep)) + { + if (GameManager.Instance.playerState.currentStepRange< int.Parse(cardEntity.cardOriginalData.AdvantageFunctionVal[CardFunction.costStep])) + { + Debug.Log("步数不足"); + cardEntity.canUse = false; + } + } + } + else + { + if (cardEntity.cardOriginalData.FunctionVal.ContainsKey(CardFunction.costStep)) + { + if (GameManager.Instance.playerState.currentStepRange < int.Parse(cardEntity.cardOriginalData.FunctionVal[CardFunction.costStep])) + { + Debug.Log("步数不足"); + cardEntity.canUse = false; + } + } + }*/ + } + + private void disArmCheck() + { + /*if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.disarm)&&cardEntity.cardOriginalData.CarType.Equals(CardType.attack)) + { + Debug.Log("被缴械了"); + cardEntity.canUse = false; + }*/ + } + + private void disCardCheck() + { + Dictionary trueFunctionVal = new Dictionary(); + //trueFunctionVal.AddRange(cardEntity.cardOriginalData.FunctionVal); + int drawCardNum = 0; + foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) + { + case CardFunction.drawCard: + if (Usermanager.playerAbnormalCondition.ContainsKey(AbnormalCondition.banDrawCard)) + { + + } + else + { + drawCardNum += int.Parse(kvp.Value); + } + break; + + } + } + foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) + { + case CardFunction.discard: + if (TurnMaster.Instance.handCard.cardEntityList.Count - int.Parse(kvp.Value) - 1 + drawCardNum < 0) + { + Debug.Log("没有足够的牌可以弃牌"); + cardEntity.canUse = false; + } + break; + + } + } + } + private void banActionCardCheck() + { + if (TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.banAction) + { + cardEntity.canUse = false; + } + else + { + cardEntity.canUse = true; + } + if (TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.move) + { + cardEntity.canUse = false; + } + else if (TurnMaster.Instance.playerAction != TurnMaster.PlayerAction.banAction) + { + cardEntity.canUse = true; + } + + } + private void resetComponentPosition() + { + //取消音效 + AudioManager.Instance.ChooseCardVoicePlayer(false); + //遍历范围预览池消除影响色 + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) + { + mapUnity.influenced = false; + } + MapUnityManager.Instance.castPool.Clear(); + //遍历影响池变色 + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) + { + mapUnity.influenced = false; + } + cardEntity.influencePreviewPool.Clear(); + + ready = false; + GameManager.Instance.onDrag = false; + dragState = CardDragState.noDrag; + + if (TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.useCard) + TurnMaster.Instance.playerAction = TurnMaster.PlayerAction.none; + + choosed = false; + canUse = true;//取消释放 + ainPanle.SetActive(false); + //其他位置都归位 + transform.SetParent(originalParent); + //归位孩子顺序 + transform.SetSiblingIndex(cardOnMouseEnter.oringinIndex); + + GetComponent().blocksRaycasts = true; + transform.localScale = new Vector3(1f, 1f, 1f); + + CardActiveSort.Instance.ReflashCardPoint(); + + //隐藏怪物虚血 + EnemyManager.Instance.HideExpHP_Observer(); + + return; + } + + //右键取消释放 + private void handleRightClickCancel() + { + + if (choosed && Mouse.current.rightButton.wasPressedThisFrame) + { + resetComponentPosition(); + } + } + + public void OnBeginDrag(PointerEventData eventData) + { + if (GameManager.Instance.onDrag == false && TurnMaster.Instance.playerAction == TurnMaster.PlayerAction.none && TurnMaster.Instance.servantAction != TurnMaster.ServantAction.useSkill) + dragState = CardDragState.onBeginDrag; + } + + private void ainPanleWork(PointerEventData eventData) + { + //射线检测瞄准的地图节点,判断是否可放置和改变放置影响区 + Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); + Debug.Log(Mouse.current.position.value); + if (Physics.Raycast(ray, out RaycastHit raycastHit, 500, layerMask.value)) + { + //Debug.Log(raycastHit.collider.gameObject.name); + //检测到跟上次瞄准地方不同,更新 + if (currentNode == null || raycastHit.collider.transform.gameObject != currentNode.gameObject) + { + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) + { + mapUnity.influenced = false; + } + cardEntity.influencePreviewPool.Clear(); + currentNode = raycastHit.collider.transform.GetComponent(); + + //重新调用范围预览 + //GameManager.Instance.player.StepPreviewInfluencedNode(cardEntity.cardOriginalData.CastingRange); + int castRange = cardEntity.cardOriginalData.CastingRange; + if (MapUnityManager.Instance.isPlayerOn(Name.NodeColor.Green)) + { + castRange++; + } + setCastingRangePreview(castRange); + //预览影响范围 + if (currentNode.influenced) + { + //根据卡牌属性改变影响池 + Vector3 face = currentNode.transform.position - GameManager.Instance.playerOn.transform.position; + float euler = Vector3.SignedAngle(-GameManager.Instance.playerOn.transform.forward, face, GameManager.Instance.playerOn.transform.up) + 180; + Debug.Log("euler是" + euler); + getNodeTools.setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, euler, currentNode, cardEntity); + //setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, euler, currentNode); + //influencePreviewPool.Add(currentNode); + + + } + + //更新效果作用范围内怪物虚血 + EnemyManager.Instance.ShowExpHp_Observer(cardEntity.influencePreviewPool); + } + } + + } + + private void setCastingRangePreview(int castRange) + { + foreach (MapUnity mapUnity in MapUnityManager.Instance.castPool) + { + mapUnity.influenced = false; + } + MapUnityManager.Instance.castPool.Clear(); + MapUnityManager.Instance.getCastPool(cardEntity.cardOriginalData.EffectRange, castRange); + + + } + + + private void getInfluencePreviePoll(MapUnity currentNode, string effecctRange) + { + switch (effecctRange) + { + case EffectRange.range1: + break; + + } + } + + private void noAinPanleWork(PointerEventData eventData) + { + + /*Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.value); + if (eventData.pointerCurrentRaycast.gameObject != null) + { + if (Physics.Raycast(ray, out RaycastHit raycastHit)) + { + currentNode = raycastHit.collider.transform.GetComponent(); + cardEntity.influencePreviewPool.Add(currentNode); + } + }*/ + getNodeTools.setEffectRangePreview(cardEntity.cardOriginalData.EffectRange, 30.0f, currentNode, cardEntity); + } + + public void OnDrag(PointerEventData eventData) + { + + } + + private void dyeing() + { + //遍历影响池变色 + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) + { + mapUnity.PlayerInfluenced(cardEntity.influencePreviewPool); + mapUnity.playerMark.meshRenderer.material = mapUnity.castPreRange; + } + } + + + public void OnEndDrag(PointerEventData eventData) + { + + } + + private IEnumerator OnDragIEnumerator(PointerEventData eventData) + { + if (!cardEntity.canUse) + { + yield break; + } + choosed = false; + if (canUse) + { + if (eventData.pointerCurrentRaycast.gameObject != null) + { + resetComponentPosition(); + } + if (ainPanle.activeSelf) + { + ainPanle.SetActive(false);//关闭贝塞尔曲线 + } + + //先判断该卡牌的类型是否是需要范围 + if (cardEntity.cardOriginalData.CastingRange != 0) + { + if (currentNode != null && currentNode.influenced) + { + //卡牌释放效果 + yield return StartCoroutine(cardEntity.settle(0, currentNode)); + } + else + { + resetComponentPosition(); + } + } + else + { + //卡牌释放效果 + yield return StartCoroutine(cardEntity.settle(0, GameManager.Instance.playerOn)); + + } + yield break; + } + else + { + canUse = true; + } + } + + private bool cardTargetCheck() + { + bool targetRight = false; + switch (cardEntity.cardOriginalData.CardTarget) + { + case Name.Target.enemy: + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) + { + if (mapUnity.enemyNode != null && mapUnity.enemyNode.enemyType == EnemyNode.EnemyType.enemy) + { + targetRight = true; break; + } + } + break; + case Name.Target.enemyAndBuilding: + foreach (MapUnity mapUnity in cardEntity.influencePreviewPool) + { + if (mapUnity.enemyNode != null) + { + targetRight = true; break; + } + } + break; + case Name.Target.ally: + targetRight = true; + break; + } + Debug.Log("targetRight是" + targetRight); + return targetRight; + } + +} + + + + diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs.meta new file mode 100644 index 00000000..976874a2 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/Temp/TempPlaceEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1a0228ae98882d43974484e55dca280 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs index e9e83997..7fb3607a 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyManager.cs @@ -79,6 +79,22 @@ public class EnemyManager : Singleton observer.EnemyColour(); } } + + public void ShowExpHp_Observer(HashSet mapUnities) + { + foreach (var observer in enemyObservers) + { + observer.ShowExpHp(mapUnities); + } + } + public void HideExpHP_Observer() + { + foreach (var observer in enemyObservers) + { + observer.HideExpHP(); + } + } + public void EnemyTurn_Observer() { SpeedSortList(); diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs index 720fdab4..48c5509c 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/EnemyNode.cs @@ -182,7 +182,56 @@ public class EnemyNode : MonoBehaviour,IEnemyObserver { StartCoroutine(EnemyHurtVoice(0.9f)); lasteHp = (int)EnemyState.currentHP; + + if(enemyType == EnemyType.block ) + { + EnemyState.currentNumberOfHits -= 1; + if(EnemyState.currentNumberOfHits <= 0 ) + { + Destroy(this .gameObject ); + } + } + } + + + } + //展示虚血(预计伤害) + public void ShowExpHp(HashSet mapUnities ) + { + if (EnemyState.shieldValue > 0&& Usermanager.Instance.expectDamage>0) + { + enemyUIBar.sheildFlash.enabled = true; } + if (mapUnities.Contains(GameManager.Instance.X[positionX].Y[positionY])) + { + enemyUIBar.isSync = false; + float remainDamage = EnemyState .shieldValue - Usermanager.Instance.expectDamage; + if(remainDamage >=0) + { + enemyUIBar.sheildText .text = remainDamage.ToString(); + } + else + { + enemyUIBar.sheildText.text = "0"; + enemyUIBar.expHPBar.gameObject.SetActive(true); + enemyUIBar.currentHPText.text = (EnemyState.currentHP+remainDamage).ToString(); + enemyUIBar.expHPBar.fillAmount = EnemyState.currentHP / EnemyState.maxHP; + enemyUIBar.expAfterHPBar.fillAmount= (EnemyState.currentHP + remainDamage) / EnemyState.maxHP; + } + + } + else + { + HideExpHP(); + } + } + //关闭虚血展示 + public void HideExpHP() + { + enemyUIBar.expHPBar.gameObject .SetActive (false ); + enemyUIBar.isSync = true; + enemyUIBar.sheildFlash.enabled = false; + enemyUIBar.sheildFlash.image.color = enemyUIBar.sheildFlash.originColor; } IEnumerator EnemyHurtVoice(float time) { diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI.meta new file mode 100644 index 00000000..c03fb060 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94e65eea5776642479a5d8a43b0bfbe6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs new file mode 100644 index 00000000..76482311 --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor.Rendering; +using UnityEngine; +using UnityEngine.UI; + +public class ExpHpFlash : MonoBehaviour +{ + public Image image; + public Color white; + public Color black; + public Color originColor; + public float speed; + float time; + bool dir; + void Update() + { + if(dir) + { + time += Time.deltaTime * speed; + } + else + { + time -= Time.deltaTime * speed; + } + if(time >=1) + { + dir = false; + } + if(time <=0) + { + dir = true; + } + + image.color = Vector4.Lerp(black, white, time); + } +} diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs.meta b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs.meta new file mode 100644 index 00000000..772dfdbe --- /dev/null +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Enemy/UI/ExpHpFlash.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d937092a4e1cd4f43a6d5b3f650624b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs index 13104d82..be803435 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/CardFunction.cs @@ -97,4 +97,6 @@ public static class CardFunction //潮湿 public const string wet = "48"; + //放置物品 + public const string placeTrees = "51"; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs index af6b77ee..d0aab961 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/EnemyState_SO.cs @@ -42,4 +42,6 @@ public class EnemyState_SO : ScriptableObject public int aoeRange;//aoe范围 + public int maxNumberOfHits;//受击次数 + public int currentNumberOfHits; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Interface/IEnemyObserver.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Interface/IEnemyObserver.cs index ab01195c..4d52e6c6 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Interface/IEnemyObserver.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Interface/IEnemyObserver.cs @@ -1,4 +1,6 @@ +using System.Collections.Generic; + public interface IEnemyObserver { void GetEnemyPosition(); @@ -11,6 +13,9 @@ public interface IEnemyObserver void AppearAimLine(); + void ShowExpHp(HashSet mapUnities); + void HideExpHP(); + EnemyNode GetEnemyNode(); } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs index bd158ad4..ad78ea73 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/UI/EnemyUIBar.cs @@ -31,11 +31,21 @@ public class EnemyUIBar : MonoBehaviour float lastTime=0; [Header(" BuffInforOnMouse")] public BuffInforOnMouse buffInforOnMouse; + [Header("虚血控件")] + public bool isSync = true ;//中断每帧刷新 + public Image expHPBar; + public Image expAfterHPBar; + public ExpHpFlash sheildFlash; + private void Update() { + if(isSync ) + { + sheildText.text = enemyNode.EnemyState.shieldValue.ToString(); + currentHPText.text = enemyNode.EnemyState.currentHP.ToString(); + } + HPBar.fillAmount = enemyNode .EnemyState .currentHP /enemyNode .EnemyState .maxHP; - sheildText.text = enemyNode.EnemyState.shieldValue.ToString(); - currentHPText.text = enemyNode.EnemyState.currentHP.ToString(); maxHPText.text = enemyNode.EnemyState.maxHP.ToString(); } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs index f771a2f4..3973087e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/SettlementManager.cs @@ -554,6 +554,17 @@ public class SettlementManager : Singleton /*yield return new WaitForEndOfFrame(); StartCoroutine(TurnMaster.Instance.MoveCards());*/ break; + case CardFunction.placeTrees: + Debug.Log("放置了树"); + foreach (var mapNode in influencePreviewPool ) + { + Vector3 pos = mapNode.transform.position; + pos.y = 1; + var tree = Instantiate(CardResourcesManager.Instance.tree, pos, Quaternion.identity); + mapNode.enemyNode = tree.GetComponent(); + mapNode.blocked = true; + } + break; } } @@ -575,6 +586,49 @@ public class SettlementManager : Singleton EnemyManager.Instance.enemyRefreshEnemyBuffIcon(0); } + //预期伤害 + public void expectSettle(CardOriginalData cardOriginalData) + { + Dictionary trueFunctionVal = new Dictionary(); + trueFunctionVal.AddRange(cardOriginalData.testTrueFunctionVal); + Usermanager.Instance.expectDamage = 0; + foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) + { + case CardFunction.cardDamage: + // damageWork(int.Parse(kvp.Value), influencePreviewPool, pierceNum); + Usermanager .Instance .expectDamage = Usermanager.Instance.DamageCalculation(int.Parse(kvp.Value)); + break; + case CardFunction.nodeDiffDamage: + if (GameManager.Instance.getNodeDiffForPlayer() > 0) + { + // damageWork(GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool, pierceNum); + Usermanager.Instance.expectDamage = Usermanager.Instance.DamageCalculation(GameManager.Instance.getNodeDiffForPlayer()); + } + else if (GameManager.Instance.getNodeDiffForPlayer() < 0) + { + // damageWork(-GameManager.Instance.getNodeDiffForPlayer(), influencePreviewPool, pierceNum); + Usermanager.Instance.expectDamage = Usermanager.Instance.DamageCalculation(-GameManager.Instance.getNodeDiffForPlayer()); + } + break; + + } + } + //流血不能先结算 + /* foreach (KeyValuePair kvp in trueFunctionVal) + { + switch (kvp.Key) + { + case CardFunction.bleed: + abnormalConditionWork(kvp.Value, int.Parse(kvp.Value), influencePreviewPool); + break; + + } + }*/ + // dyeingWork(cardOriginalData, targetNode); + + } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs index e5ef18a5..ea1d3559 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/Usermanager.cs @@ -49,6 +49,10 @@ public class Usermanager : Singleton [Header("BuffInforOnMouse")] public BuffInforOnMouse buffInforOnMouse; public BuffInforOnMouse buffInforOnMouseInStatus; + + [Header("角色将要造成的伤害")] + public float expectDamage; + public Usermanager(int health) { Health = health; diff --git a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_3.csv b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_3.csv index 800d99c1..8cdd96e8 100644 --- a/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_3.csv +++ b/ColorlessWorld-2024-4-2/Assets/StreamingAssets/card_data_3.csv @@ -30,3 +30,4 @@ 1002,1,1,3_1,none,2,4,0;0_0,white;white;white,CardIcon/1002 1003,2,1,4_1,white>8,1,9,0;0_0;0_0_0,white;white;white;white,CardIcon/1003 1004,2,2,3_2,white>5,2,8,2;-2,white;white;white,CardIcon/1004 +2001,0,2,1,none,51,1,0,white,CardIcon/2001