diff --git a/Assets/Art/Material/Line.mat b/Assets/Art/Material/Line.mat
new file mode 100644
index 0000000..561fd09
--- /dev/null
+++ b/Assets/Art/Material/Line.mat
@@ -0,0 +1,135 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-601912231420489210
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Line
+ m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap:
+ RenderType: Opaque
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.005
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _SampleGI: 0
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 0.832884, g: 0.18065912, b: 0.10663608, a: 1}
+ - _Color: {r: 0.832884, g: 0.18065909, b: 0.106636055, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Art/Material/Line.mat.meta b/Assets/Art/Material/Line.mat.meta
new file mode 100644
index 0000000..6bebff5
--- /dev/null
+++ b/Assets/Art/Material/Line.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fd7b6ef1c8d01724683c1f9dc2114f9e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML
deleted file mode 100644
index 02c3c95..0000000
--- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- DOTweenUpgradeManager
-
-
-
-
- This class and its whole library are deleted the first time DOTween's setup is run after an upgrade (or after a new install).
- NOTE: DidReloadScripts doesn't work on first install so it's useless, InitializeOnLoad is the only way
-
-
-
-
diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta
deleted file mode 100644
index a7f43a3..0000000
--- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML.meta
+++ /dev/null
@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 3df9fdaadcb4c394e826a4d8d20bb952
-TextScriptImporter:
- userData:
diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll
deleted file mode 100644
index ec5dd4c..0000000
Binary files a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll and /dev/null differ
diff --git a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta b/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta
deleted file mode 100644
index c6717e9..0000000
--- a/Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: 2bf936a5d80799e4e88ec9270fea75a4
-PluginImporter:
- serializedVersion: 1
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- platformData:
- Any:
- enabled: 0
- settings: {}
- Editor:
- enabled: 1
- settings:
- DefaultValueInitialized: true
- WindowsStoreApps:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Prefab/Gameplay/Card.prefab b/Assets/Prefab/Gameplay/Card.prefab
index 2e06d9b..7474441 100644
--- a/Assets/Prefab/Gameplay/Card.prefab
+++ b/Assets/Prefab/Gameplay/Card.prefab
@@ -27,11 +27,11 @@ Transform:
m_GameObject: {fileID: 2782175792003806444}
serializedVersion: 2
m_LocalRotation: {x: 0.49870676, y: 0.5012899, z: -0.49870676, w: 0.5012899}
- m_LocalPosition: {x: -0, y: 0, z: -3.059569e-10}
- m_LocalScale: {x: 140, y: 100.00001, z: 100.00001}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 140, y: 100, z: 100}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 8288806321783590124}
+ m_Father: {fileID: 9209320535166562747}
m_LocalEulerAnglesHint: {x: 89.704, y: 90, z: 0}
--- !u!33 &528940306177264885
MeshFilter:
@@ -109,14 +109,14 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2850323074743059847}
- m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 602904479329865416}
- {fileID: 461998205047545604}
- m_Father: {fileID: 8288806321783590124}
+ m_Father: {fileID: 9209320535166562747}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -344,6 +344,40 @@ MonoBehaviour:
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Name
+--- !u!1 &5397061992114806696
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9209320535166562747}
+ m_Layer: 0
+ m_Name: Display
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &9209320535166562747
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5397061992114806696}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.15, y: 0.15, z: 0.15}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 2653266799713255234}
+ - {fileID: 6520432709391570604}
+ - {fileID: 4429445361403306062}
+ m_Father: {fileID: 8288806321783590124}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5614617657564266223
GameObject:
m_ObjectHideFlags: 0
@@ -371,11 +405,11 @@ Transform:
m_GameObject: {fileID: 5614617657564266223}
serializedVersion: 2
m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726}
- m_LocalPosition: {x: -0, y: 0.0069994777, z: 3.059569e-10}
+ m_LocalPosition: {x: 0, y: 0.0069994777, z: 0}
m_LocalScale: {x: 140, y: 100, z: 100}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 8288806321783590124}
+ m_Father: {fileID: 9209320535166562747}
m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0}
--- !u!33 &3884522584561958753
MeshFilter:
@@ -437,6 +471,7 @@ GameObject:
m_Component:
- component: {fileID: 8288806321783590124}
- component: {fileID: 1562880286992207475}
+ - component: {fileID: 9063485462769681386}
m_Layer: 0
m_Name: Card
m_TagString: Untagged
@@ -457,9 +492,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- - {fileID: 2653266799713255234}
- - {fileID: 6520432709391570604}
- - {fileID: 4429445361403306062}
+ - {fileID: 9209320535166562747}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1562880286992207475
@@ -474,6 +507,28 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 84de392c49524b6d8da09ea51c4326c0, type: 3}
m_Name:
m_EditorClassIdentifier:
- meshRenderer: {fileID: 0}
+ frontMeshRenderer: {fileID: 5156951718673587996}
+ backMeshRenderer: {fileID: 1574770595276204962}
cardNameText: {fileID: 1641835144558014658}
cardDescriptionText: {fileID: 968774230685629330}
+--- !u!65 &9063485462769681386
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8257975731489021549}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.3088441, y: 0.051474422, z: 0.43081665}
+ m_Center: {x: 0, y: 0.003252551, z: 0}
diff --git a/Assets/Prefab/Gameplay/Facility.prefab b/Assets/Prefab/Gameplay/Facility.prefab
new file mode 100644
index 0000000..7c41279
--- /dev/null
+++ b/Assets/Prefab/Gameplay/Facility.prefab
@@ -0,0 +1,435 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1285331887159970702
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7491258034527094893}
+ - component: {fileID: 6262235791141659756}
+ - component: {fileID: 2577312867888845904}
+ m_Layer: 8
+ m_Name: Panel
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7491258034527094893
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1285331887159970702}
+ 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: 1
+ m_Children: []
+ m_Father: {fileID: 6937855010132688348}
+ 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}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6262235791141659756
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1285331887159970702}
+ m_CullTransparentMesh: 1
+--- !u!114 &2577312867888845904
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1285331887159970702}
+ 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: 0.392}
+ 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: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ 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 &2729643726423589850
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 77361986880837193}
+ - component: {fileID: 1966939443082034528}
+ - component: {fileID: 1791426126632920350}
+ - component: {fileID: 6559594074799131378}
+ - component: {fileID: 2740601845815088892}
+ m_Layer: 0
+ m_Name: Facility
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &77361986880837193
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2729643726423589850}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.71, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1088716417574490523}
+ - {fileID: 6937855010132688348}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1966939443082034528
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2729643726423589850}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1791426126632920350
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2729643726423589850}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
+ 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: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &6559594074799131378
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2729643726423589850}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &2740601845815088892
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2729643726423589850}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7986c88b8e1d4944832af56e23188597, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &7518175844631896712
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6937855010132688348}
+ - component: {fileID: 5901253883046461237}
+ - component: {fileID: 6141736885575726030}
+ - component: {fileID: 4792260559798747556}
+ m_Layer: 8
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6937855010132688348
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7518175844631896712}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 7491258034527094893}
+ m_Father: {fileID: 77361986880837193}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 1000, y: 1000}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &5901253883046461237
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7518175844631896712}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 2
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!114 &6141736885575726030
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7518175844631896712}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 10
+ m_PresetInfoIsWorld: 1
+--- !u!114 &4792260559798747556
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7518175844631896712}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!1 &8100744246927696703
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1088716417574490523}
+ - component: {fileID: 7931149419085676358}
+ m_Layer: 7
+ m_Name: Line
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1088716417574490523
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8100744246927696703}
+ serializedVersion: 2
+ 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: 77361986880837193}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!120 &7931149419085676358
+LineRenderer:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8100744246927696703}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 0
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: fd7b6ef1c8d01724683c1f9dc2114f9e, type: 2}
+ 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: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Positions:
+ - {x: 0, y: 0.73317075, z: -1.0474617}
+ - {x: 0, y: 1.6364502, z: -0.07521546}
+ m_Parameters:
+ serializedVersion: 3
+ widthMultiplier: 1
+ widthCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0.48411998
+ value: 0.018180847
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ colorGradient:
+ serializedVersion: 2
+ key0: {r: 1, g: 1, b: 1, a: 1}
+ key1: {r: 1, g: 1, b: 1, a: 1}
+ key2: {r: 0, g: 0, b: 0, a: 0}
+ key3: {r: 0, g: 0, b: 0, a: 0}
+ key4: {r: 0, g: 0, b: 0, a: 0}
+ key5: {r: 0, g: 0, b: 0, a: 0}
+ key6: {r: 0, g: 0, b: 0, a: 0}
+ key7: {r: 0, g: 0, b: 0, a: 0}
+ ctime0: 0
+ ctime1: 65535
+ ctime2: 0
+ ctime3: 0
+ ctime4: 0
+ ctime5: 0
+ ctime6: 0
+ ctime7: 0
+ atime0: 0
+ atime1: 65535
+ atime2: 0
+ atime3: 0
+ atime4: 0
+ atime5: 0
+ atime6: 0
+ atime7: 0
+ m_Mode: 0
+ m_ColorSpace: -1
+ m_NumColorKeys: 2
+ m_NumAlphaKeys: 2
+ numCornerVertices: 0
+ numCapVertices: 0
+ alignment: 0
+ textureMode: 0
+ textureScale: {x: 1, y: 1}
+ shadowBias: 0.5
+ generateLightingData: 0
+ m_MaskInteraction: 0
+ m_UseWorldSpace: 1
+ m_Loop: 0
+ m_ApplyActiveColorSpace: 1
diff --git a/Assets/Prefab/Gameplay/Facility.prefab.meta b/Assets/Prefab/Gameplay/Facility.prefab.meta
new file mode 100644
index 0000000..3eddb81
--- /dev/null
+++ b/Assets/Prefab/Gameplay/Facility.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b3e24e2df98d14e4ebc08cc68c071afa
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefab/Gameplay/Player.prefab b/Assets/Prefab/Gameplay/Player.prefab
index 093db4d..f22c312 100644
--- a/Assets/Prefab/Gameplay/Player.prefab
+++ b/Assets/Prefab/Gameplay/Player.prefab
@@ -150,7 +150,9 @@ GameObject:
- component: {fileID: 8268117914458884828}
- component: {fileID: 2963170313432786625}
- component: {fileID: 3697820982367928434}
+ - component: {fileID: 5633281206562703781}
- component: {fileID: 1774433545530707224}
+ - component: {fileID: 7145954873497571105}
m_Layer: 0
m_Name: Player
m_TagString: Player
@@ -254,6 +256,25 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
cardBookData: {fileID: 11400000, guid: 6884501cc489c254aaf6836e84649588, type: 2}
+ playerCardsController: {fileID: 0}
+--- !u!114 &5633281206562703781
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3550102669167288263}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 18842cb320964275a76e2d57bee62adf, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ interactRange: 15
+ interactableLayer:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ playerCamera: {fileID: 4390370389971332335}
+ isDrawGizmos: 1
--- !u!114 &1774433545530707224
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -271,6 +292,20 @@ MonoBehaviour:
serializedVersion: 2
m_Bits: 4294967295
playerCamera: {fileID: 4390370389971332335}
+ isDrawGizmos: 0
+--- !u!114 &7145954873497571105
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3550102669167288263}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2361e682e26b43ffb6ff9615d39c487e, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ cam: {fileID: 4390370389971332335}
--- !u!1 &3610935294554348573
GameObject:
m_ObjectHideFlags: 0
@@ -344,7 +379,7 @@ Camera:
m_Depth: -1
m_CullingMask:
serializedVersion: 2
- m_Bits: 4294967295
+ m_Bits: 119
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
diff --git a/Assets/Resources/Configs/Card/DamageCard 1.asset b/Assets/Resources/Configs/Card/DamageCard 1.asset
new file mode 100644
index 0000000..e833be0
--- /dev/null
+++ b/Assets/Resources/Configs/Card/DamageCard 1.asset
@@ -0,0 +1,22 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7c9f5640c7fc55141af2931d0caed1e0, type: 3}
+ m_Name: DamageCard 1
+ m_EditorClassIdentifier:
+ CardID: 2
+ CardName: HealSelfCard
+ CardDescription: Heal Self 1
+ CardTexture: {fileID: 0}
+ Effects:
+ - type: 1
+ value: 1
+ target: 0
diff --git a/Assets/Resources/Configs/Card/DamageCard 1.asset.meta b/Assets/Resources/Configs/Card/DamageCard 1.asset.meta
new file mode 100644
index 0000000..5ff21f1
--- /dev/null
+++ b/Assets/Resources/Configs/Card/DamageCard 1.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a32b3f751a8ff5c4892f97457f8c9b62
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Configs/Card/DamageCard.asset b/Assets/Resources/Configs/Card/DamageCard.asset
index 1c95d71..cae89b2 100644
--- a/Assets/Resources/Configs/Card/DamageCard.asset
+++ b/Assets/Resources/Configs/Card/DamageCard.asset
@@ -12,9 +12,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7c9f5640c7fc55141af2931d0caed1e0, type: 3}
m_Name: DamageCard
m_EditorClassIdentifier:
- CardID: 0
+ CardID: 1
CardName: DamageCard
- CardDescription:
+ CardDescription: Damage Enemy 1
CardTexture: {fileID: 0}
Effects:
- type: 0
diff --git a/Assets/Scenes/Level1.meta b/Assets/Scenes/Level1.meta
new file mode 100644
index 0000000..1820eed
--- /dev/null
+++ b/Assets/Scenes/Level1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6bfe0a7da744bcf4da9da8b8f2c829a9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity
index c113e9c..7706884 100644
--- a/Assets/Scenes/Level1.unity
+++ b/Assets/Scenes/Level1.unity
@@ -15,12 +15,12 @@ RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogColor: {r: 0.1159029, g: 0.10418764, b: 0.10418764, a: 1}
m_FogMode: 3
- m_FogDensity: 0.01
+ m_FogDensity: 0.13
m_LinearFogStart: 0
m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientSkyColor: {r: 0, g: 0, b: 0, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
@@ -96,8 +96,10 @@ LightmapSettings:
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
- m_LightingDataAsset: {fileID: 0}
- m_LightingSettings: {fileID: 0}
+ m_LightingDataAsset: {fileID: 112000000, guid: b93790e82c6f1a24daf29161c2a6ca71,
+ type: 2}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 06bbce95c474a2f4885359ffd5fad188,
+ type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -1173,6 +1175,153 @@ Transform:
- {fileID: 1234629635}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &2084876468
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -1.5440545
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.5792608
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 1.0709323
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 151205406321954705, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8031699868756389050, guid: 396fdaee2868c534e927e0c2d4da65da,
+ type: 3}
+ propertyPath: m_Name
+ value: NormalCardBook
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 396fdaee2868c534e927e0c2d4da65da, type: 3}
+--- !u!1001 &2088331975902746738
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.71
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1285331887159970702, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_Layer
+ value: 8
+ objectReference: {fileID: 0}
+ - target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_Name
+ value: Facility
+ objectReference: {fileID: 0}
+ - target: {fileID: 7518175844631896712, guid: b3e24e2df98d14e4ebc08cc68c071afa,
+ type: 3}
+ propertyPath: m_Layer
+ value: 8
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects:
+ - {fileID: 7518175844631896712, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3}
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3}
--- !u!1001 &4976374363246253691
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1194,7 +1343,7 @@ PrefabInstance:
- target: {fileID: 277803484986371650, guid: 08dc103fc56f46345889fd4f2109149b,
type: 3}
propertyPath: m_LocalPosition.z
- value: -81.743225
+ value: -79.46
objectReference: {fileID: 0}
- target: {fileID: 277803484986371650, guid: 08dc103fc56f46345889fd4f2109149b,
type: 3}
@@ -1277,7 +1426,7 @@ PrefabInstance:
- target: {fileID: 7437893023972897012, guid: 667aedb0d3f8c9d469819c9ff2b4472b,
type: 3}
propertyPath: m_LocalPosition.z
- value: -86.23
+ value: -16.2
objectReference: {fileID: 0}
- target: {fileID: 7437893023972897012, guid: 667aedb0d3f8c9d469819c9ff2b4472b,
type: 3}
@@ -1410,3 +1559,5 @@ SceneRoots:
- {fileID: 8808393704070049945}
- {fileID: 1969328118}
- {fileID: 382458521}
+ - {fileID: 2084876468}
+ - {fileID: 2088331975902746738}
diff --git a/Assets/Scenes/Level1/LightingData.asset b/Assets/Scenes/Level1/LightingData.asset
new file mode 100644
index 0000000..4a27dfd
Binary files /dev/null and b/Assets/Scenes/Level1/LightingData.asset differ
diff --git a/Assets/Scenes/Level1/LightingData.asset.meta b/Assets/Scenes/Level1/LightingData.asset.meta
new file mode 100644
index 0000000..6869d5e
--- /dev/null
+++ b/Assets/Scenes/Level1/LightingData.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b93790e82c6f1a24daf29161c2a6ca71
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 112000000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Level1/ReflectionProbe-0.exr b/Assets/Scenes/Level1/ReflectionProbe-0.exr
new file mode 100644
index 0000000..f38e702
Binary files /dev/null and b/Assets/Scenes/Level1/ReflectionProbe-0.exr differ
diff --git a/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta b/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta
new file mode 100644
index 0000000..97b8334
--- /dev/null
+++ b/Assets/Scenes/Level1/ReflectionProbe-0.exr.meta
@@ -0,0 +1,140 @@
+fileFormatVersion: 2
+guid: f1db76615162ecf4996139b91b6b5c75
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ 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: 1
+ seamlessCubemap: 1
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 2
+ aniso: 0
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 2
+ 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: 100
+ 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: WebGL
+ 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: Android
+ 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:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/UIScene.unity b/Assets/Scenes/UIScene.unity
index 46d74f4..f3500cf 100644
--- a/Assets/Scenes/UIScene.unity
+++ b/Assets/Scenes/UIScene.unity
@@ -190,6 +190,56 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &165485609
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 165485610}
+ - component: {fileID: 165485611}
+ m_Layer: 5
+ m_Name: PlayerEditPanelViwer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &165485610
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 165485609}
+ 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:
+ - {fileID: 1748531705}
+ m_Father: {fileID: 1067459529}
+ 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}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &165485611
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 165485609}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 29d585e25c3a4840871167630b3c7a49, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ IsOpenOnFirstLoad: 0
--- !u!1 &1067459524
GameObject:
m_ObjectHideFlags: 0
@@ -299,6 +349,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1082771939}
+ - {fileID: 165485610}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -475,6 +526,81 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1200522801}
m_CullTransparentMesh: 1
+--- !u!1 &1748531704
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1748531705}
+ - component: {fileID: 1748531707}
+ - component: {fileID: 1748531706}
+ m_Layer: 5
+ m_Name: EditComponent
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1748531705
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1748531704}
+ 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: 165485610}
+ 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: 0, y: 0}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1748531706
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1748531704}
+ 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: 0}
+ 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!222 &1748531707
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1748531704}
+ m_CullTransparentMesh: 1
--- !u!1 &1780593830
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Script/Core/UIViewerControllerLocator.cs b/Assets/Script/Core/ControllerLocator.cs
similarity index 52%
rename from Assets/Script/Core/UIViewerControllerLocator.cs
rename to Assets/Script/Core/ControllerLocator.cs
index c55f105..c403680 100644
--- a/Assets/Script/Core/UIViewerControllerLocator.cs
+++ b/Assets/Script/Core/ControllerLocator.cs
@@ -4,10 +4,9 @@ using System.Collections.Generic;
namespace Core
{
///
- /// 专用于视图控制器层的 Locator。
- /// 支持层级父Locator查找(例如:UI模块Locator → 游戏全局Locator)。
+ /// 专用于注册控制器的服务定位器
///
- public class UIViewerControllerLocator : ServiceLocator
+ public class ControllerLocator : ServiceLocator
{
// 这里可以按需添加额外的特化功能。
// 当前已经完整继承 Register、Resolve、TryGetWait 等功能。
diff --git a/Assets/Script/Core/UIViewerControllerLocator.cs.meta b/Assets/Script/Core/ControllerLocator.cs.meta
similarity index 100%
rename from Assets/Script/Core/UIViewerControllerLocator.cs.meta
rename to Assets/Script/Core/ControllerLocator.cs.meta
diff --git a/Assets/Script/Gameplay/Card/Card.cs b/Assets/Script/Gameplay/Card/Card.cs
index ce092ac..b95f076 100644
--- a/Assets/Script/Gameplay/Card/Card.cs
+++ b/Assets/Script/Gameplay/Card/Card.cs
@@ -5,7 +5,8 @@ namespace Gameplay
public class Card
{
private CardData _cardData;
- public Texture Texture => _cardData.CardTexture;
+ public Texture FrontTexture => _cardData.FrontCardTexture;
+ public Texture BackTexture => _cardData.BackCardTexture;
public string CardName => _cardData.CardName;
public string CardDescription => _cardData.CardDescription;
public EffectData[] Effects => _cardData.Effects;
diff --git a/Assets/Script/Gameplay/Card/CardData.cs b/Assets/Script/Gameplay/Card/CardData.cs
index b17d688..b8ce626 100644
--- a/Assets/Script/Gameplay/Card/CardData.cs
+++ b/Assets/Script/Gameplay/Card/CardData.cs
@@ -10,7 +10,8 @@ namespace Gameplay
public int CardID;
public string CardName;
public string CardDescription;
- public Texture CardTexture;
+ public Texture FrontCardTexture;
+ public Texture BackCardTexture;
public EffectData[] Effects;
}
diff --git a/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs b/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs
index 930f08f..35de0c6 100644
--- a/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs
+++ b/Assets/Script/Gameplay/Card/CardEffect/CardContext.cs
@@ -1,5 +1,5 @@
using UnityEngine;
-using Share;
+using Interface;
namespace Gameplay
{
public class CardContext
diff --git a/Assets/Script/Gameplay/Card/CardViewer.cs b/Assets/Script/Gameplay/Card/CardViewer.cs
index 967cdb4..1d59a01 100644
--- a/Assets/Script/Gameplay/Card/CardViewer.cs
+++ b/Assets/Script/Gameplay/Card/CardViewer.cs
@@ -1,23 +1,62 @@
+using System;
using UnityEngine;
using UnityEngine.UI;
+using Interface;
+using Core;
+using Gameplay.Player;
namespace Gameplay
{
- public class CardViewer : MonoBehaviour
+ public class CardViewer : MonoBehaviour, IInteractable
{
public Card Card;
-
- [SerializeField] private MeshRenderer meshRenderer;
+
+ [SerializeField] private MeshRenderer frontMeshRenderer;
+ [SerializeField] private MeshRenderer backMeshRenderer;
[SerializeField] private Text cardNameText;
[SerializeField] private Text cardDescriptionText;
-
- public void Setup(Card card)
+
+ private PlayerController _playerController;
+
+ private void Start()
+ {
+ ControllerLocator.Instance.TryGet(out _playerController);
+ }
+
+ public void SetCard(Card card)
{
Card = card;
- meshRenderer.material.mainTexture = card.Texture;
+ if (frontMeshRenderer != null && card.FrontTexture != null)
+ {
+ frontMeshRenderer.material.mainTexture = card.FrontTexture;
+ }
+
+ if (backMeshRenderer != null && card.BackTexture != null)
+ {
+ backMeshRenderer.material.mainTexture = card.BackTexture;
+ }
+
cardNameText.text = card.CardName;
cardDescriptionText.text = card.CardDescription;
}
- }
-}
+ public string GetInteractPrompt()
+ {
+ return "";
+ }
+
+ public void Interact(GameObject interactor)
+ {
+ }
+
+ public void OnGazeEnter(GameObject editor)
+ {
+ if(_playerController != null) _playerController.playerCardsController.StopRotatingCards();
+ }
+
+ public void OnGazeExit(GameObject editor)
+ {
+ if (_playerController != null) _playerController.playerCardsController.StartRotatingCards();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Card/Utils.meta b/Assets/Script/Gameplay/Card/Utils.meta
new file mode 100644
index 0000000..791c0f9
--- /dev/null
+++ b/Assets/Script/Gameplay/Card/Utils.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 5db247b9fcb44b3f85bdcc7cdb634481
+timeCreated: 1760575054
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Card/CardLoader.cs b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs
similarity index 62%
rename from Assets/Script/Gameplay/Card/CardLoader.cs
rename to Assets/Script/Gameplay/Card/Utils/CardLoader.cs
index 2ac769c..36368ff 100644
--- a/Assets/Script/Gameplay/Card/CardLoader.cs
+++ b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs
@@ -1,7 +1,7 @@
using UnityEngine;
namespace Gameplay
{
- // 从Resources文件夹加载卡牌数据的静态类
+ // 用来加载卡牌数据的静态类
public static class CardLoader
{
public static CardData GetCardDataByID(int cardID)
@@ -17,5 +17,15 @@ namespace Gameplay
Debug.LogError($"Card with ID {cardID} not found!");
return null;
}
+
+ public static Card GetCardByID(int cardID)
+ {
+ CardData cardData = GetCardDataByID(cardID);
+ if (cardData != null)
+ {
+ return new Card(cardData);
+ }
+ return null;
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Card/CardLoader.cs.meta b/Assets/Script/Gameplay/Card/Utils/CardLoader.cs.meta
similarity index 100%
rename from Assets/Script/Gameplay/Card/CardLoader.cs.meta
rename to Assets/Script/Gameplay/Card/Utils/CardLoader.cs.meta
diff --git a/Assets/Script/Gameplay/Combat/CombatFlowManager.cs b/Assets/Script/Gameplay/Combat/CombatFlowManager.cs
index 51c9ee6..b6bb256 100644
--- a/Assets/Script/Gameplay/Combat/CombatFlowManager.cs
+++ b/Assets/Script/Gameplay/Combat/CombatFlowManager.cs
@@ -3,7 +3,7 @@ using System.Collections;
using Core;
using Gameplay.Enemy;
using Gameplay.Player;
-using Share;
+using Interface;
using UnityEngine;
namespace Gameplay
diff --git a/Assets/Script/Gameplay/Combat/CombatTrigger.cs b/Assets/Script/Gameplay/Combat/CombatTrigger.cs
index cbe759a..c6cf739 100644
--- a/Assets/Script/Gameplay/Combat/CombatTrigger.cs
+++ b/Assets/Script/Gameplay/Combat/CombatTrigger.cs
@@ -1,7 +1,7 @@
using System;
using UnityEngine;
using Gameplay;
-using Share;
+using Interface;
using Gameplay.Enemy;
using Gameplay.Player;
diff --git a/Assets/Script/Gameplay/Enemy/EnemyController.cs b/Assets/Script/Gameplay/Enemy/EnemyController.cs
index f8e4925..c3a78ff 100644
--- a/Assets/Script/Gameplay/Enemy/EnemyController.cs
+++ b/Assets/Script/Gameplay/Enemy/EnemyController.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Share;
+using Interface;
using UnityEngine;
namespace Gameplay.Enemy
diff --git a/Assets/Script/Gameplay/Facility.meta b/Assets/Script/Gameplay/Facility.meta
new file mode 100644
index 0000000..d75c816
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09fa458abe0e7c54eafb0cf409eb60d4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Script/Gameplay/Facility/EditComponent.cs b/Assets/Script/Gameplay/Facility/EditComponent.cs
new file mode 100644
index 0000000..9692864
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/EditComponent.cs
@@ -0,0 +1,7 @@
+namespace Script.Gameplay.Facility
+{
+ public class EditComponent
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Facility/EditComponent.cs.meta b/Assets/Script/Gameplay/Facility/EditComponent.cs.meta
new file mode 100644
index 0000000..c617733
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/EditComponent.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: bca7c28154234ab4b792dca4d2f92354
+timeCreated: 1760629389
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Facility/FacilityController.cs b/Assets/Script/Gameplay/Facility/FacilityController.cs
new file mode 100644
index 0000000..56ad55f
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/FacilityController.cs
@@ -0,0 +1,69 @@
+using System;
+using Gameplay.Player;
+using UnityEngine;
+using Interface;
+
+namespace Script.Gameplay.Facility
+{
+ public class FacilityController : MonoBehaviour, IInteractable, IEditable
+ {
+ public FacilityModifier facilityModifier;
+
+ private void Awake()
+ {
+ if (facilityModifier == null)
+ {
+ facilityModifier = GetComponent();
+ }
+ }
+
+ private void Start()
+ {
+ }
+
+ public string GetInteractPrompt()
+ {
+ return "";
+ }
+
+ public void Interact(GameObject interactor)
+ {
+
+ }
+
+ public void OnGazeEnter(GameObject editor)
+ {
+ // 物体弹出按F可交互菜单
+ }
+
+ public void OnGazeExit(GameObject editor)
+ {
+ // 物体取消菜单
+ }
+
+ public void OnGazeEnter(PlayerEditController editor)
+ {
+
+ }
+
+ public void OnGazeExit(PlayerEditController editor)
+ {
+
+ }
+
+ public void BeginEdit()
+ {
+
+ }
+
+ public void EndEdit()
+ {
+
+ }
+
+ public IEditable GetEditable()
+ {
+ return this;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Facility/FacilityController.cs.meta b/Assets/Script/Gameplay/Facility/FacilityController.cs.meta
new file mode 100644
index 0000000..0ec01f9
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/FacilityController.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7986c88b8e1d4944832af56e23188597
+timeCreated: 1760664530
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Facility/FacilityModifier.cs b/Assets/Script/Gameplay/Facility/FacilityModifier.cs
new file mode 100644
index 0000000..cd02e98
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/FacilityModifier.cs
@@ -0,0 +1,27 @@
+using UnityEngine;
+
+namespace Script.Gameplay.Facility
+{
+ public class FacilityModifier : MonoBehaviour
+ {
+ private Transform _transform;
+ private Collider _collider;
+ private Rigidbody _rigidbody;
+
+ public void ModifyComponent(bool isOpen, T component) where T : Component
+ {
+ var targetComponent = this.GetComponent();
+ if (targetComponent != null)
+ {
+ if (isOpen)
+ {
+ targetComponent.gameObject.SetActive(true);
+ }
+ else
+ {
+ targetComponent.gameObject.SetActive(false);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta b/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta
new file mode 100644
index 0000000..042d2fe
--- /dev/null
+++ b/Assets/Script/Gameplay/Facility/FacilityModifier.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b1db33a437984a1a8fae09ab8c5de7e4
+timeCreated: 1760667210
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Input/InputManager.cs b/Assets/Script/Gameplay/Input/InputManager.cs
index 81c508d..be29b80 100644
--- a/Assets/Script/Gameplay/Input/InputManager.cs
+++ b/Assets/Script/Gameplay/Input/InputManager.cs
@@ -1,12 +1,13 @@
using System;
using UnityEngine;
+using UnityEngine.InputSystem;
using Core;
-namespace Input
+namespace Script.Gameplay.Input
{
public class InputManager : MonoSingleton, IInputManager
{
- private PlayerInputActions _input; // 自动生成的输入类
+ public PlayerInputActions Input; // 自动生成的输入类
// 当前输入值
public Vector2 Move { get; private set; }
@@ -14,36 +15,43 @@ namespace Input
public bool JumpPressed { get; private set; }
public bool PausePressed { get; private set; }
public bool InteractPressed { get; private set; }
+ public bool EditPressed { get; private set; }
+
+ private bool _hasFocus = true;
private void Awake()
{
- _input = new PlayerInputActions();
+ Input = new PlayerInputActions();
}
private void OnEnable()
{
- _input.Enable();
+ Input.Enable();
// 注册事件
- _input.Player.Move.performed += ctx => Move = ctx.ReadValue();
- _input.Player.Move.canceled += ctx => Move = Vector2.zero;
+ Input.Player.Move.performed += ctx => Move = ctx.ReadValue();
+ Input.Player.Move.canceled += ctx => Move = Vector2.zero;
- _input.Player.Look.performed += ctx => Look = ctx.ReadValue();
- _input.Player.Look.canceled += ctx => Look = Vector2.zero;
+ Input.Player.Look.performed += ctx => Look = ctx.ReadValue();
+ Input.Player.Look.canceled += ctx => Look = Vector2.zero;
- _input.Player.Jump.performed += ctx => JumpPressed = true;
- _input.Player.Jump.canceled += ctx => JumpPressed = false;
+ Input.Player.Jump.performed += ctx => JumpPressed = true;
+ Input.Player.Jump.canceled += ctx => JumpPressed = false;
+
+ Input.Player.Pause.performed += ctx => PausePressed = true;
+ Input.Player.Pause.canceled += ctx => PausePressed = false;
- // _input.Player.Pause.performed += ctx => PausePressed = true;
- // _input.Player.Pause.canceled += ctx => PausePressed = false;
+ Input.Player.Interact.performed += ctx => InteractPressed = true;
+ Input.Player.Interact.canceled += ctx => InteractPressed = false;
- _input.Player.Interact.performed += ctx => InteractPressed = true;
- _input.Player.Interact.canceled += ctx => InteractPressed = false;
+ Input.Player.Edit.performed += ctx => EditPressed = true;
+ Input.Player.Edit.canceled += ctx => EditPressed = false;
}
private void OnDisable()
{
- _input.Disable();
+ // 可选:取消注册以防止重复订阅(简单项目可不解除)
+ Input.Disable();
}
private void Start()
@@ -57,15 +65,15 @@ namespace Input
// if (PausePressed)
// {
// Debug.Log("Pause Pressed!");
- // PausePressed = false; // 手动清除
+ // PausePressed = false; // 手动清除(如果需要瞬时)
// }
}
// 🔧 示例方法:允许外部模块手动启用/禁用输入(比如暂停菜单)
public void SetInputEnabled(bool enabled)
{
- if (enabled) _input.Enable();
- else _input.Disable();
+ if (enabled) Input.Enable();
+ else Input.Disable();
}
public void SetCursorState(bool visible, CursorLockMode lockMode)
@@ -78,11 +86,11 @@ namespace Input
{
if (enabled)
{
- _input.Player.Look.Enable();
+ Input.Player.Look.Enable();
}
else
{
- _input.Player.Look.Disable();
+ Input.Player.Look.Disable();
Look = Vector2.zero; // 禁用时清除Look值
}
}
@@ -91,13 +99,28 @@ namespace Input
{
if (enabled)
{
- _input.Player.Move.Enable();
+ Input.Player.Move.Enable();
}
else
{
- _input.Player.Move.Disable();
+ Input.Player.Move.Disable();
Move = Vector2.zero; // 禁用时清除Move值
}
}
+
+ // 当窗口获得/失去焦点时调用(玩家是否在注视游戏窗口)
+ private void OnApplicationFocus(bool hasFocus)
+ {
+ _hasFocus = hasFocus;
+ // 失去焦点视为系统级暂停
+ if (_hasFocus)
+ {
+ SetCursorState(_hasFocus, CursorLockMode.Locked);
+ }
+ else
+ {
+ SetCursorState(_hasFocus, CursorLockMode.None);
+ }
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Assets/Script/Gameplay/Input/PlayerInputActions.cs b/Assets/Script/Gameplay/Input/PlayerInputActions.cs
index df94597..1421ac8 100644
--- a/Assets/Script/Gameplay/Input/PlayerInputActions.cs
+++ b/Assets/Script/Gameplay/Input/PlayerInputActions.cs
@@ -15,7 +15,7 @@ using System.Collections.Generic;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;
-namespace Input
+namespace Script.Gameplay.Input
{
public partial class @PlayerInputActions: IInputActionCollection2, IDisposable
{
@@ -64,6 +64,33 @@ namespace Input
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
+ },
+ {
+ ""name"": ""Pause"",
+ ""type"": ""Button"",
+ ""id"": ""822c2284-94e3-4636-894c-adfe85ac467d"",
+ ""expectedControlType"": """",
+ ""processors"": """",
+ ""interactions"": """",
+ ""initialStateCheck"": false
+ },
+ {
+ ""name"": ""SwitchWatchMode"",
+ ""type"": ""Button"",
+ ""id"": ""73ffcbfd-15ae-4580-99c4-d7d06ff13bb6"",
+ ""expectedControlType"": """",
+ ""processors"": """",
+ ""interactions"": """",
+ ""initialStateCheck"": false
+ },
+ {
+ ""name"": ""Edit"",
+ ""type"": ""Button"",
+ ""id"": ""20a9157a-918b-42f1-80b1-9e014426068e"",
+ ""expectedControlType"": """",
+ ""processors"": """",
+ ""interactions"": """",
+ ""initialStateCheck"": false
}
],
""bindings"": [
@@ -165,6 +192,39 @@ namespace Input
""action"": ""Interact"",
""isComposite"": false,
""isPartOfComposite"": false
+ },
+ {
+ ""name"": """",
+ ""id"": ""943ba523-b024-410e-a250-735a5ffdf786"",
+ ""path"": ""/escape"",
+ ""interactions"": """",
+ ""processors"": """",
+ ""groups"": """",
+ ""action"": ""Pause"",
+ ""isComposite"": false,
+ ""isPartOfComposite"": false
+ },
+ {
+ ""name"": """",
+ ""id"": ""47af0242-9835-4b1a-82c8-e3fc32489870"",
+ ""path"": ""/tab"",
+ ""interactions"": """",
+ ""processors"": """",
+ ""groups"": """",
+ ""action"": ""SwitchWatchMode"",
+ ""isComposite"": false,
+ ""isPartOfComposite"": false
+ },
+ {
+ ""name"": """",
+ ""id"": ""9e9bf8ec-8b3e-4230-a10c-ae874395711a"",
+ ""path"": ""/x"",
+ ""interactions"": """",
+ ""processors"": """",
+ ""groups"": """",
+ ""action"": ""Edit"",
+ ""isComposite"": false,
+ ""isPartOfComposite"": false
}
]
}
@@ -177,6 +237,9 @@ namespace Input
m_Player_Look = m_Player.FindAction("Look", throwIfNotFound: true);
m_Player_Jump = m_Player.FindAction("Jump", throwIfNotFound: true);
m_Player_Interact = m_Player.FindAction("Interact", throwIfNotFound: true);
+ m_Player_Pause = m_Player.FindAction("Pause", throwIfNotFound: true);
+ m_Player_SwitchWatchMode = m_Player.FindAction("SwitchWatchMode", throwIfNotFound: true);
+ m_Player_Edit = m_Player.FindAction("Edit", throwIfNotFound: true);
}
~@PlayerInputActions()
@@ -247,6 +310,9 @@ namespace Input
private readonly InputAction m_Player_Look;
private readonly InputAction m_Player_Jump;
private readonly InputAction m_Player_Interact;
+ private readonly InputAction m_Player_Pause;
+ private readonly InputAction m_Player_SwitchWatchMode;
+ private readonly InputAction m_Player_Edit;
public struct PlayerActions
{
private @PlayerInputActions m_Wrapper;
@@ -255,6 +321,9 @@ namespace Input
public InputAction @Look => m_Wrapper.m_Player_Look;
public InputAction @Jump => m_Wrapper.m_Player_Jump;
public InputAction @Interact => m_Wrapper.m_Player_Interact;
+ public InputAction @Pause => m_Wrapper.m_Player_Pause;
+ public InputAction @SwitchWatchMode => m_Wrapper.m_Player_SwitchWatchMode;
+ public InputAction @Edit => m_Wrapper.m_Player_Edit;
public InputActionMap Get() { return m_Wrapper.m_Player; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
@@ -276,6 +345,15 @@ namespace Input
@Interact.started += instance.OnInteract;
@Interact.performed += instance.OnInteract;
@Interact.canceled += instance.OnInteract;
+ @Pause.started += instance.OnPause;
+ @Pause.performed += instance.OnPause;
+ @Pause.canceled += instance.OnPause;
+ @SwitchWatchMode.started += instance.OnSwitchWatchMode;
+ @SwitchWatchMode.performed += instance.OnSwitchWatchMode;
+ @SwitchWatchMode.canceled += instance.OnSwitchWatchMode;
+ @Edit.started += instance.OnEdit;
+ @Edit.performed += instance.OnEdit;
+ @Edit.canceled += instance.OnEdit;
}
private void UnregisterCallbacks(IPlayerActions instance)
@@ -292,6 +370,15 @@ namespace Input
@Interact.started -= instance.OnInteract;
@Interact.performed -= instance.OnInteract;
@Interact.canceled -= instance.OnInteract;
+ @Pause.started -= instance.OnPause;
+ @Pause.performed -= instance.OnPause;
+ @Pause.canceled -= instance.OnPause;
+ @SwitchWatchMode.started -= instance.OnSwitchWatchMode;
+ @SwitchWatchMode.performed -= instance.OnSwitchWatchMode;
+ @SwitchWatchMode.canceled -= instance.OnSwitchWatchMode;
+ @Edit.started -= instance.OnEdit;
+ @Edit.performed -= instance.OnEdit;
+ @Edit.canceled -= instance.OnEdit;
}
public void RemoveCallbacks(IPlayerActions instance)
@@ -315,6 +402,9 @@ namespace Input
void OnLook(InputAction.CallbackContext context);
void OnJump(InputAction.CallbackContext context);
void OnInteract(InputAction.CallbackContext context);
+ void OnPause(InputAction.CallbackContext context);
+ void OnSwitchWatchMode(InputAction.CallbackContext context);
+ void OnEdit(InputAction.CallbackContext context);
}
}
}
diff --git a/Assets/Script/Gameplay/Interface/ICharacter.cs b/Assets/Script/Gameplay/Interface/ICharacter.cs
index d3f0046..d60869d 100644
--- a/Assets/Script/Gameplay/Interface/ICharacter.cs
+++ b/Assets/Script/Gameplay/Interface/ICharacter.cs
@@ -3,7 +3,7 @@ using UnityEngine;
using Gameplay;
using System.Collections.Generic;
-namespace Share
+namespace Interface
{
///
/// 角色接口,可受伤害、治疗和添加Buff、发生战斗
diff --git a/Assets/Script/Gameplay/Interface/IEditable.cs b/Assets/Script/Gameplay/Interface/IEditable.cs
new file mode 100644
index 0000000..5fc6657
--- /dev/null
+++ b/Assets/Script/Gameplay/Interface/IEditable.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using Gameplay.Player;
+namespace Interface
+{
+ public interface IEditable
+ {
+ void OnGazeEnter(PlayerEditController editor); // 玩家开始注视时触发
+ void OnGazeExit(PlayerEditController editor); // 玩家停止注视时触发
+ void BeginEdit();
+ void EndEdit();
+ IEditable GetEditable();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Interface/IEditable.cs.meta b/Assets/Script/Gameplay/Interface/IEditable.cs.meta
new file mode 100644
index 0000000..ac65dc3
--- /dev/null
+++ b/Assets/Script/Gameplay/Interface/IEditable.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8a22b94dcb1d4eb78b7b07ebd8967dc6
+timeCreated: 1760629255
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Interface/IInteractable.cs b/Assets/Script/Gameplay/Interface/IInteractable.cs
index e1a3d65..776b7c0 100644
--- a/Assets/Script/Gameplay/Interface/IInteractable.cs
+++ b/Assets/Script/Gameplay/Interface/IInteractable.cs
@@ -1,9 +1,11 @@
using UnityEngine;
-namespace Share
+namespace Interface
{
public interface IInteractable
{
string GetInteractPrompt(); // 返回提示文字,例如“按E打开门”
void Interact(GameObject interactor); // 当玩家交互时触发
+ void OnGazeEnter(GameObject editor); // 玩家开始注视时触发
+ void OnGazeExit(GameObject editor); // 玩家停止注视时触发
}
}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Map/FlightTrigger.cs b/Assets/Script/Gameplay/Map/FlightTrigger.cs
index e729c98..e9628a4 100644
--- a/Assets/Script/Gameplay/Map/FlightTrigger.cs
+++ b/Assets/Script/Gameplay/Map/FlightTrigger.cs
@@ -1,5 +1,5 @@
using UnityEngine;
-using Share;
+using Interface;
namespace Map
{
public class FlightTrigger : MonoBehaviour
diff --git a/Assets/Script/Gameplay/Player/PlayerCameraController.cs b/Assets/Script/Gameplay/Player/PlayerCameraController.cs
index 3efa0df..04a72fd 100644
--- a/Assets/Script/Gameplay/Player/PlayerCameraController.cs
+++ b/Assets/Script/Gameplay/Player/PlayerCameraController.cs
@@ -1,6 +1,6 @@
using Core;
using UnityEngine;
-using Input;
+using Script.Gameplay.Input;
namespace Gameplay.Player
{
@@ -10,34 +10,28 @@ namespace Gameplay.Player
///
public class PlayerCameraController : MonoBehaviour
{
- [Header("References")]
- [Tooltip("角色根 Transform,用于水平旋转(yaw)")]
+ [Header("References")] [Tooltip("角色根 Transform,用于水平旋转(yaw)")]
public Transform playerBody;
+
[Tooltip("如果相机不是挂载在同一物体上,可以指定相机 Transform(可选)")]
public Transform cameraTransform;
- [Header("Sensitivity & Invert")]
- [Tooltip("鼠标灵敏度")]
- [Range(0.01f, 1f)]
+ [Header("Sensitivity & Invert")] [Tooltip("鼠标灵敏度")] [Range(0.01f, 1f)]
public float mouseSensitivity = 0.2f;
- [Tooltip("反转垂直轴")]
- public bool invertY = false;
+ [Tooltip("反转垂直轴")] public bool invertY = false;
- [Header("Vertical Limits")]
- [Tooltip("向上最大仰角(度)")]
+ [Header("Vertical Limits")] [Tooltip("向上最大仰角(度)")]
public float maxUpAngle = 60f;
- [Tooltip("向下最大俯角(度)")]
- public float maxDownAngle = 60f;
- [Header("Smoothing")]
- public bool enableSmoothing = false;
- [Tooltip("旋转平滑时间(秒)")]
- public float smoothTime = 0.05f;
+ [Tooltip("向下最大俯角(度)")] public float maxDownAngle = 60f;
+
+ [Header("Smoothing")] public bool enableSmoothing = false;
+ [Tooltip("旋转平滑时间(秒)")] public float smoothTime = 0.05f;
// internal state
private float xRotation = 0f; // 垂直角(pitch)
- private float yaw = 0f; // 水平角(yaw)
+ private float yaw = 0f; // 水平角(yaw)
private float smoothVelocityPitch = 0f;
private float smoothVelocityYaw = 0f;
@@ -50,7 +44,6 @@ namespace Gameplay.Player
Vector3 euler = cameraTransform.localEulerAngles;
xRotation = NormalizeAngle(euler.x);
yaw = NormalizeAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y);
-
}
void Update()
@@ -71,8 +64,10 @@ namespace Gameplay.Player
if (enableSmoothing)
{
- float smoothPitch = Mathf.SmoothDampAngle(cameraTransform.localEulerAngles.x, xRotation, ref smoothVelocityPitch, smoothTime);
- float smoothYaw = Mathf.SmoothDampAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y, yaw, ref smoothVelocityYaw, smoothTime);
+ float smoothPitch = Mathf.SmoothDampAngle(cameraTransform.localEulerAngles.x, xRotation,
+ ref smoothVelocityPitch, smoothTime);
+ float smoothYaw = Mathf.SmoothDampAngle(playerBody ? playerBody.eulerAngles.y : transform.eulerAngles.y,
+ yaw, ref smoothVelocityYaw, smoothTime);
cameraTransform.localRotation = Quaternion.Euler(smoothPitch, 0f, 0f);
if (playerBody)
@@ -97,5 +92,7 @@ namespace Gameplay.Player
angle = (angle + 180f) % 360f - 180f;
return angle;
}
+
+
}
-}
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerCardsController.cs b/Assets/Script/Gameplay/Player/PlayerCardsController.cs
new file mode 100644
index 0000000..0f7fbdc
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerCardsController.cs
@@ -0,0 +1,114 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+using UnityEngine;
+using Quaternion = UnityEngine.Quaternion;
+using Vector3 = UnityEngine.Vector3;
+
+namespace Gameplay.Player
+{
+ public class PlayerCardsController : MonoBehaviour
+ {
+ [SerializeField] private float radius = 2f; // 卡牌围绕玩家旋转的半径
+ [SerializeField] private float rotationSpeed = 50f; // 卡牌旋转
+ [SerializeField] private float highOffset = 1f; // 卡牌高度偏移
+ public bool IsRotating = true; // 是否旋转卡牌
+ [SerializeField] private GameObject cardPrefab; // 卡牌预制体
+
+ public List Cards;
+ private Transform playerTransform;
+
+ private void Update()
+ {
+ if (Cards != null)
+ {
+ //RotateCards();
+ }
+ }
+
+ // 生成卡牌实体
+ // 生成的卡牌实体围绕着玩家旋转
+ public void GenerateCards(List cards)
+ {
+ playerTransform = this.transform;
+ Cards = new List();
+ for (int i = 0; i < cards.Count; i++)
+ {
+ float angle = i * (360f / cards.Count);
+ float rad = angle * Mathf.Deg2Rad;
+ Vector3 cardPosition = new Vector3(
+ playerTransform.position.x + radius * Mathf.Cos(rad),
+ playerTransform.position.y + highOffset,
+ playerTransform.position.z + radius * Mathf.Sin(rad)
+ );
+
+ GameObject cardObject = Instantiate(cardPrefab, cardPosition, Quaternion.identity);
+
+ Vector3 playerPosition = new Vector3(
+ playerTransform.position.x,
+ playerTransform.position.y + highOffset,
+ playerTransform.position.z
+ );
+ Cards[i].transform.LookAt(playerPosition);
+
+ CardViewer cardViewer = cardObject.GetComponent();
+ cardViewer.SetCard(cards[i]);
+ Cards.Add(cardViewer);
+ }
+ }
+
+ // 旋转已经生成的卡牌实体
+ public void RotateCards()
+ {
+ if (!IsRotating) return;
+ for (int i = 0; i < Cards.Count; i++)
+ {
+ float angle = i * (360f / Cards.Count) + Time.time * rotationSpeed;
+ float rad = angle * Mathf.Deg2Rad;
+ Vector3 cardPosition = new Vector3(
+ playerTransform.position.x + radius * Mathf.Cos(rad),
+ playerTransform.position.y + highOffset,
+ playerTransform.position.z + radius * Mathf.Sin(rad)
+ );
+ Cards[i].transform.position = cardPosition;
+
+ Vector3 playerPosition = new Vector3(
+ playerTransform.position.x,
+ playerTransform.position.y + highOffset,
+ playerTransform.position.z
+ );
+
+ Cards[i].transform.LookAt(playerPosition);
+ // 卡牌绕着y轴旋转180度,从而让卡牌正面朝向玩家
+ Cards[i].transform.Rotate(0, 180, 0);
+ }
+ }
+
+ public void StopRotatingCards()
+ {
+ IsRotating = false;
+ }
+
+ public void StartRotatingCards()
+ {
+ IsRotating = true;
+ }
+
+ // 删除卡牌实体
+ public void DeleteCards(CardViewer card)
+ {
+ Cards.Remove(card);
+ Destroy(card.gameObject);
+ }
+
+ public void ClearCards()
+ {
+ foreach (var card in Cards)
+ {
+ Destroy(card.gameObject);
+ }
+
+ Cards.Clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta b/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta
new file mode 100644
index 0000000..7267041
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerCardsController.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: cb0c79a8230343c29d902ad22e044d2b
+timeCreated: 1760574485
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerConfig.cs b/Assets/Script/Gameplay/Player/PlayerConfig.cs
deleted file mode 100644
index c8ffa63..0000000
--- a/Assets/Script/Gameplay/Player/PlayerConfig.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using UnityEngine;
-
-namespace Gameplay.Player
-{
- public class PlayerConfig : MonoBehaviour
- {
-
- }
-}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta b/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta
deleted file mode 100644
index 3164f2e..0000000
--- a/Assets/Script/Gameplay/Player/PlayerConfig.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 6ff9e093e80541dc93d1186499dbfd79
-timeCreated: 1760498762
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerController.cs b/Assets/Script/Gameplay/Player/PlayerController.cs
index ab15c60..c916ac9 100644
--- a/Assets/Script/Gameplay/Player/PlayerController.cs
+++ b/Assets/Script/Gameplay/Player/PlayerController.cs
@@ -2,7 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Gameplay;
-using Share;
+using Interface;
using UnityEngine;
using Core;
@@ -23,21 +23,25 @@ namespace Gameplay.Player
private PlayerMoveController playerMoveController;
private PlayerCameraController playerCameraController;
+ public PlayerCardsController playerCardsController;
private void Awake()
{
playerMoveController = GetComponent();
playerCameraController = GetComponent();
+ playerCardsController = GetComponent();
CurrentHealth = MaxHealth;
MyCardBook = new CardBook(cardBookData);
Cards = new List();
- UIViewerControllerLocator.Instance.Register(this);
+ ControllerLocator.Instance.Register(this);
}
private void Start()
{
+ Cards.Add(CardLoader.GetCardByID(1));
+ Cards.Add(CardLoader.GetCardByID(2));
}
@@ -60,6 +64,8 @@ namespace Gameplay.Player
Debug.Log("Player StartCombat");
IsFlight = true;
playerMoveController.SetSpeed(0.5f);
+
+ playerCardsController.GenerateCards(Cards);
}
public void EndFlight()
@@ -67,6 +73,8 @@ namespace Gameplay.Player
Debug.Log("Player EndFlight");
IsFlight = false;
playerMoveController.ResetSpeed();
+
+ playerCardsController.ClearCards();
}
public bool HasCardsLeft()
diff --git a/Assets/Script/Gameplay/Player/PlayerEditController.cs b/Assets/Script/Gameplay/Player/PlayerEditController.cs
new file mode 100644
index 0000000..c4ddab7
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerEditController.cs
@@ -0,0 +1,86 @@
+using UnityEngine;
+using Interface;
+using Script.Gameplay.Input;
+
+namespace Gameplay.Player
+{
+ public class PlayerEditController:MonoBehaviour
+ {
+ [SerializeField] private float interactRange = 15f;
+ [SerializeField] private LayerMask interactableLayer;
+ [SerializeField] private Camera playerCamera;
+ [SerializeField] private bool isDrawGizmos;
+
+ private IEditable currentTarget; // 射线命中的当前可编辑对象(用于按键交互)
+ private IEditable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件)
+
+ private InputManager inputManager;
+
+ void Start()
+ {
+ inputManager = InputManager.Instance;
+ if (playerCamera == null)
+ playerCamera = GameObject.FindWithTag("MainCamera").GetComponent();
+
+ inputManager.Input.Player.SwitchWatchMode.performed += ctx =>
+ {
+ if (currentTarget != null) currentTarget.BeginEdit();
+ };
+ }
+
+ void Update()
+ {
+ DetectInteractable();
+ }
+
+ void DetectInteractable()
+ {
+ if (playerCamera == null) return;
+
+ Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
+ if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactableLayer))
+ {
+ IEditable hitEditable = hit.collider.GetComponent();
+
+ // 如果命中对象与之前注视的不一样,触发进入/离开事件
+ if (hitEditable != previousGazedTarget)
+ {
+ if (previousGazedTarget != null)
+ {
+ previousGazedTarget.OnGazeExit(this);
+ }
+
+ if (hitEditable != null)
+ {
+ hitEditable.OnGazeEnter(this);
+ }
+
+ previousGazedTarget = hitEditable;
+ }
+
+ currentTarget = hitEditable;
+ }
+ else
+ {
+ // 没有命中时,如果之前有注视对象,触发离开
+ if (previousGazedTarget != null)
+ {
+ previousGazedTarget.OnGazeExit(this);
+ previousGazedTarget = null;
+ }
+
+ currentTarget = null;
+ }
+ }
+
+ void OnDrawGizmos()
+ {
+ if(!isDrawGizmos) return;
+ if (playerCamera == null) return;
+ Gizmos.color = Color.red;
+ Vector3 origin = playerCamera.transform.position;
+ Vector3 direction = playerCamera.transform.forward * interactRange;
+ Gizmos.DrawLine(origin, origin + direction);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta b/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta
new file mode 100644
index 0000000..d05354d
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerEditController.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 18842cb320964275a76e2d57bee62adf
+timeCreated: 1760664958
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerInteractorController.cs b/Assets/Script/Gameplay/Player/PlayerInteractorController.cs
index fced6f7..6b8de8d 100644
--- a/Assets/Script/Gameplay/Player/PlayerInteractorController.cs
+++ b/Assets/Script/Gameplay/Player/PlayerInteractorController.cs
@@ -1,7 +1,7 @@
using UnityEngine;
-using Share;
+using Interface;
using System;
-using Input;
+using Script.Gameplay.Input;
namespace Gameplay.Player
{
@@ -10,44 +10,70 @@ namespace Gameplay.Player
[SerializeField] private float interactRange = 15f;
[SerializeField] private LayerMask interactableLayer;
[SerializeField] private Camera playerCamera;
+ [SerializeField] private bool isDrawGizmos;
- private IInteractable currentTarget;
+ private IInteractable currentTarget; // 被射线命中的当前可交互对象(用于按键交互)
+ private IInteractable previousGazedTarget; // 上一次注视的对象(用于注视进入/离开事件)
void Start()
{
- playerCamera = GameObject.FindWithTag("MainCamera").GetComponent();
+ if (playerCamera == null)
+ playerCamera = GameObject.FindWithTag("MainCamera").GetComponent();
+
+ var input = InputManager.Instance.Input;
+ input.Player.SwitchWatchMode.performed += ctx => currentTarget.Interact(this.gameObject);;
}
void Update()
{
DetectInteractable();
-
- if (currentTarget != null && InputManager.Instance.InteractPressed)
- {
- currentTarget.Interact(this.gameObject);
- }
}
void DetectInteractable()
{
+ if (playerCamera == null) return;
+
Ray ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
if (Physics.Raycast(ray, out RaycastHit hit, interactRange, interactableLayer))
{
- currentTarget = hit.collider.GetComponent();
- if (currentTarget != null)
+ IInteractable hitInteractable = hit.collider.GetComponent();
+
+ // 如果命中对象与之前注视的不一样,触发进入/离开事件
+ if (hitInteractable != previousGazedTarget)
{
- // 这里可以显示交互提示UI,例如 “E - 开门”
- Debug.Log(currentTarget.GetInteractPrompt());
+ if (previousGazedTarget != null)
+ {
+ previousGazedTarget.OnGazeExit(this.gameObject);
+ }
+
+ if (hitInteractable != null)
+ {
+ hitInteractable.OnGazeEnter(this.gameObject);
+ // 这里可以显示交互提示UI,例如 “E - 开门”
+ Debug.Log(hitInteractable.GetInteractPrompt());
+ }
+
+ previousGazedTarget = hitInteractable;
}
+
+ currentTarget = hitInteractable;
}
else
{
+ // 没有命中时,如果之前有注视对象,触发离开
+ if (previousGazedTarget != null)
+ {
+ previousGazedTarget.OnGazeExit(this.gameObject);
+ previousGazedTarget = null;
+ }
+
currentTarget = null;
}
}
-
+
void OnDrawGizmos()
{
+ if (isDrawGizmos) return;
if (playerCamera == null) return;
Gizmos.color = Color.green;
Vector3 origin = playerCamera.transform.position;
diff --git a/Assets/Script/Gameplay/Player/PlayerMoveController.cs b/Assets/Script/Gameplay/Player/PlayerMoveController.cs
index 5dd8bb1..f1338b7 100644
--- a/Assets/Script/Gameplay/Player/PlayerMoveController.cs
+++ b/Assets/Script/Gameplay/Player/PlayerMoveController.cs
@@ -1,6 +1,6 @@
using System;
using Core;
-using Input;
+using Script.Gameplay.Input;
using Map;
using UnityEngine;
diff --git a/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs
new file mode 100644
index 0000000..d24e966
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs
@@ -0,0 +1,72 @@
+using System;
+using Script.Gameplay.Input;
+using UnityEngine;
+
+namespace Gameplay.Player
+{
+ public enum WatchMode
+ {
+ Normal,
+ Inside,
+ Outside
+ }
+ public class PlayerWatchModeSwitcher : MonoBehaviour
+ {
+ [SerializeField] private Camera cam;
+ private InputManager inputManager;
+ private WatchMode currentMode = WatchMode.Normal;
+
+ private void Start()
+ {
+ inputManager = InputManager.Instance;
+ SetWatchMode(currentMode);
+
+ var input = inputManager.Input;
+ input.Player.SwitchWatchMode.performed += ctx =>
+ {
+ currentMode = (WatchMode)(((int)currentMode + 1) % 3);
+ SetWatchMode(currentMode);
+ };;
+ }
+
+ public void SetWatchMode(WatchMode mode)
+ {
+ currentMode = mode;
+ SwitchWatchMode(mode);
+ }
+
+
+ // 实现按Tap键实现在WatchMode 3个模式切换,并通过SwitchWatchMode设置正确的相机模式
+
+ private void SwitchWatchMode(WatchMode watchMode)
+ {
+ switch (watchMode)
+ {
+ case WatchMode.Normal:
+ SetSeeLines(false);
+ break;
+ case WatchMode.Inside:
+ SetSeeLines(false);
+ break;
+ case WatchMode.Outside:
+ SetSeeLines(true);
+ break;
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+ }
+
+ private void SetSeeLines(bool seeLine)
+ {
+ int linesLayer = LayerMask.NameToLayer("Lines");
+ int mask = cam.cullingMask;
+
+ if (seeLine)
+ mask |= 1 << linesLayer; // 打开
+ else
+ mask &= ~(1 << linesLayer); // 关闭
+
+ cam.cullingMask = mask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta
new file mode 100644
index 0000000..d7ddf2b
--- /dev/null
+++ b/Assets/Script/Gameplay/Player/PlayerWatchModeSwitcher.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2361e682e26b43ffb6ff9615d39c487e
+timeCreated: 1760663032
\ No newline at end of file
diff --git a/Assets/Script/UI/FacilityComponentEditViewer.cs b/Assets/Script/UI/FacilityComponentEditViewer.cs
new file mode 100644
index 0000000..b8a7386
--- /dev/null
+++ b/Assets/Script/UI/FacilityComponentEditViewer.cs
@@ -0,0 +1,20 @@
+using Core;
+using UnityEngine;
+using UnityEngine;
+namespace UI
+{
+ public class FacilityComponentEditViewer : MonoBehaviour
+ {
+ public Component component;
+ public bool IsOpen;
+
+ public void SetComponent()
+ {
+ if (component != null)
+ {
+ IsOpen = !IsOpen;
+ component.gameObject.SetActive(IsOpen);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/UI/FacilityComponentEditViewer.cs.meta b/Assets/Script/UI/FacilityComponentEditViewer.cs.meta
new file mode 100644
index 0000000..f18629a
--- /dev/null
+++ b/Assets/Script/UI/FacilityComponentEditViewer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 126d8afe0e304d548dc13c4df6405e17
+timeCreated: 1760671378
\ No newline at end of file
diff --git a/Assets/Script/UI/PlayerEditPanelViewer.cs b/Assets/Script/UI/PlayerEditPanelViewer.cs
new file mode 100644
index 0000000..8ccc38e
--- /dev/null
+++ b/Assets/Script/UI/PlayerEditPanelViewer.cs
@@ -0,0 +1,24 @@
+using System;
+using UnityEngine;
+using Core;
+using Gameplay.Player;
+using Script.Gameplay.Facility;
+
+namespace UI
+{
+ public class PlayerEditPanelViewer : UIBase
+ {
+ private PlayerEditController controller;
+ private FacilityController currentFacilityController;
+ private void Start()
+ {
+
+ }
+
+ // 根据currentFacilityController 生成其对应的组件
+ private void GenerateComponent()
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Script/UI/PlayerEditPanelViewer.cs.meta b/Assets/Script/UI/PlayerEditPanelViewer.cs.meta
new file mode 100644
index 0000000..ea9094f
--- /dev/null
+++ b/Assets/Script/UI/PlayerEditPanelViewer.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 29d585e25c3a4840871167630b3c7a49
+timeCreated: 1760670557
\ No newline at end of file
diff --git a/Assets/Script/UI/PlayerHpViewer.cs b/Assets/Script/UI/PlayerHpViewer.cs
index b65244c..4345b59 100644
--- a/Assets/Script/UI/PlayerHpViewer.cs
+++ b/Assets/Script/UI/PlayerHpViewer.cs
@@ -13,7 +13,7 @@ namespace UI
private void Start()
{
- UIViewerControllerLocator.Instance.TryGetWait(OnGet);
+ ControllerLocator.Instance.TryGetWait(OnGet);
}
private void Update()
diff --git a/Assets/Settings/Input/PlayerInputActions.inputactions b/Assets/Settings/Input/PlayerInputActions.inputactions
index 9a76a78..252a051 100644
--- a/Assets/Settings/Input/PlayerInputActions.inputactions
+++ b/Assets/Settings/Input/PlayerInputActions.inputactions
@@ -40,6 +40,33 @@
"processors": "",
"interactions": "",
"initialStateCheck": false
+ },
+ {
+ "name": "Pause",
+ "type": "Button",
+ "id": "822c2284-94e3-4636-894c-adfe85ac467d",
+ "expectedControlType": "",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "SwitchWatchMode",
+ "type": "Button",
+ "id": "73ffcbfd-15ae-4580-99c4-d7d06ff13bb6",
+ "expectedControlType": "",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
+ },
+ {
+ "name": "Edit",
+ "type": "Button",
+ "id": "20a9157a-918b-42f1-80b1-9e014426068e",
+ "expectedControlType": "",
+ "processors": "",
+ "interactions": "",
+ "initialStateCheck": false
}
],
"bindings": [
@@ -141,6 +168,39 @@
"action": "Interact",
"isComposite": false,
"isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "943ba523-b024-410e-a250-735a5ffdf786",
+ "path": "/escape",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Pause",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "47af0242-9835-4b1a-82c8-e3fc32489870",
+ "path": "/tab",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "SwitchWatchMode",
+ "isComposite": false,
+ "isPartOfComposite": false
+ },
+ {
+ "name": "",
+ "id": "9e9bf8ec-8b3e-4230-a10c-ae874395711a",
+ "path": "/x",
+ "interactions": "",
+ "processors": "",
+ "groups": "",
+ "action": "Edit",
+ "isComposite": false,
+ "isPartOfComposite": false
}
]
}
diff --git a/Assets/Settings/Input/PlayerInputActions.inputactions.meta b/Assets/Settings/Input/PlayerInputActions.inputactions.meta
index 66c6881..f0503b0 100644
--- a/Assets/Settings/Input/PlayerInputActions.inputactions.meta
+++ b/Assets/Settings/Input/PlayerInputActions.inputactions.meta
@@ -11,4 +11,4 @@ ScriptedImporter:
generateWrapperCode: 1
wrapperCodePath: Assets/Script/Gameplay/Input/PlayerInputActions.cs
wrapperClassName:
- wrapperCodeNamespace: Input
+ wrapperCodeNamespace: Script.Gameplay.Input
diff --git a/Assets/Settings/LightSetting.lighting b/Assets/Settings/LightSetting.lighting
new file mode 100644
index 0000000..3d7513f
--- /dev/null
+++ b/Assets/Settings/LightSetting.lighting
@@ -0,0 +1,66 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: LightSetting
+ serializedVersion: 6
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_LightmapCompression: 3
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentImportanceSampling: 1
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_PVRTiledBaking: 0
+ m_NumRaysToShootPerTexel: -1
+ m_RespectSceneVisibilityWhenBakingGI: 0
diff --git a/Assets/Settings/LightSetting.lighting.meta b/Assets/Settings/LightSetting.lighting.meta
new file mode 100644
index 0000000..1f3e8dc
--- /dev/null
+++ b/Assets/Settings/LightSetting.lighting.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 06bbce95c474a2f4885359ffd5fad188
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 4890085278179872738
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index 588a62e..ab45f17 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -12,7 +12,7 @@ TagManager:
- Water
- UI
- Ground
- -
+ - Lines
-
-
-