From 10451767f9f1c45b6ace01b7f5847858056b156b Mon Sep 17 00:00:00 2001 From: Ali Sharoz Date: Fri, 13 Jun 2025 22:45:46 +0500 Subject: [PATCH] Added Sounds and improved steps --- Assets/Resources/EmailOpenPanel.prefab | 62 ++- Assets/Scenes/Demo.unity | 367 +++++++++++++++++- Assets/Scripts/BodyLinkHandler.cs | 2 + Assets/Scripts/CameraHeadBobbing.cs | 21 + Assets/Scripts/CharacterMovement.cs | 6 +- Assets/Scripts/EmailOpenPanel.cs | 19 +- Assets/Scripts/EmailUIController.cs | 2 + Assets/Scripts/Scripts.zip | Bin 25269 -> 0 bytes Assets/SoundManager.cs | 49 +++ Assets/SoundManager.cs.meta | 11 + .../Scripts.zip.meta => Sounds/SFX.meta} | 3 +- Assets/Sounds/SFX/ClickSound.wav | Bin 0 -> 32838 bytes Assets/Sounds/SFX/ClickSound.wav.meta | 23 ++ Assets/Sounds/SFX/Correct.wav | Bin 0 -> 345970 bytes Assets/Sounds/SFX/Correct.wav.meta | 23 ++ Assets/Sounds/SFX/FootSteps.wav | Bin 0 -> 926770 bytes Assets/Sounds/SFX/FootSteps.wav.meta | 23 ++ Assets/Sounds/SFX/Hacked.wav | Bin 0 -> 399918 bytes Assets/Sounds/SFX/Hacked.wav.meta | 23 ++ Assets/Sounds/SFX/New_Email.mp3 | Bin 0 -> 51354 bytes Assets/Sounds/SFX/New_Email.mp3.meta | 23 ++ Assets/Sounds/SFX/OfficeAmbience.mp3 | Bin 0 -> 472668 bytes Assets/Sounds/SFX/OfficeAmbience.mp3.meta | 23 ++ Assets/Sounds/SFX/PhishingAlert.wav | Bin 0 -> 306780 bytes Assets/Sounds/SFX/PhishingAlert.wav.meta | 23 ++ 25 files changed, 688 insertions(+), 15 deletions(-) delete mode 100644 Assets/Scripts/Scripts.zip create mode 100644 Assets/SoundManager.cs create mode 100644 Assets/SoundManager.cs.meta rename Assets/{Scripts/Scripts.zip.meta => Sounds/SFX.meta} (67%) create mode 100644 Assets/Sounds/SFX/ClickSound.wav create mode 100644 Assets/Sounds/SFX/ClickSound.wav.meta create mode 100644 Assets/Sounds/SFX/Correct.wav create mode 100644 Assets/Sounds/SFX/Correct.wav.meta create mode 100644 Assets/Sounds/SFX/FootSteps.wav create mode 100644 Assets/Sounds/SFX/FootSteps.wav.meta create mode 100644 Assets/Sounds/SFX/Hacked.wav create mode 100644 Assets/Sounds/SFX/Hacked.wav.meta create mode 100644 Assets/Sounds/SFX/New_Email.mp3 create mode 100644 Assets/Sounds/SFX/New_Email.mp3.meta create mode 100644 Assets/Sounds/SFX/OfficeAmbience.mp3 create mode 100644 Assets/Sounds/SFX/OfficeAmbience.mp3.meta create mode 100644 Assets/Sounds/SFX/PhishingAlert.wav create mode 100644 Assets/Sounds/SFX/PhishingAlert.wav.meta diff --git a/Assets/Resources/EmailOpenPanel.prefab b/Assets/Resources/EmailOpenPanel.prefab index 44b411e..26f0937 100644 --- a/Assets/Resources/EmailOpenPanel.prefab +++ b/Assets/Resources/EmailOpenPanel.prefab @@ -120,7 +120,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 5795159706083873510} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 7689233589619613832} + m_TargetAssemblyTypeName: EmailOpenPanel, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!1 &433226024839028212 GameObject: m_ObjectHideFlags: 0 @@ -2503,6 +2515,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 7689233589619613832} + m_TargetAssemblyTypeName: EmailOpenPanel, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!1 &8086755141138022702 GameObject: m_ObjectHideFlags: 0 @@ -2636,10 +2660,10 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 - - m_Target: {fileID: 0} - m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine - m_MethodName: SetActive - m_Mode: 6 + - m_Target: {fileID: 7689233589619613832} + m_TargetAssemblyTypeName: EmailOpenPanel, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine @@ -2768,7 +2792,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 4698368970841939204} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 7689233589619613832} + m_TargetAssemblyTypeName: EmailOpenPanel, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!1 &8305608605525960108 GameObject: m_ObjectHideFlags: 0 @@ -3328,7 +3364,19 @@ MonoBehaviour: m_TargetGraphic: {fileID: 2280081580298180249} m_OnClick: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 7689233589619613832} + m_TargetAssemblyTypeName: EmailOpenPanel, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!1 &8692409038100497048 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Demo.unity b/Assets/Scenes/Demo.unity index c64123a..28ec918 100644 --- a/Assets/Scenes/Demo.unity +++ b/Assets/Scenes/Demo.unity @@ -923,6 +923,7 @@ MonoBehaviour: swayAmplitude: 0.02 transitionSpeed: 5 movementScript: {fileID: 1809986913} + footstepsClip: {fileID: 8300000, guid: f5ced8a9a3146694989ded64cbd751fc, type: 3} --- !u!1001 &16599093 PrefabInstance: m_ObjectHideFlags: 0 @@ -1160,6 +1161,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &18539502 MonoBehaviour: m_ObjectHideFlags: 0 @@ -8053,6 +8066,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &109379979 MonoBehaviour: m_ObjectHideFlags: 0 @@ -17870,6 +17895,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &236729269 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20221,6 +20258,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!4 &264911937 stripped Transform: m_CorrespondingSourceObject: {fileID: 4279650551743048, guid: ebc766158960dbb41af7dd66e022f015, type: 3} @@ -28294,6 +28343,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &373827011 MonoBehaviour: m_ObjectHideFlags: 0 @@ -34520,6 +34581,59 @@ Transform: m_CorrespondingSourceObject: {fileID: 4170872224999596, guid: 63a656a2a2d1a2342bed22ca185e5c28, type: 3} m_PrefabInstance: {fileID: 458124781} m_PrefabAsset: {fileID: 0} +--- !u!1 &459458785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 459458787} + - component: {fileID: 459458786} + m_Layer: 0 + m_Name: SoundManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &459458786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459458785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 988108d9ee3a2f747846fa7c9e95cf87, type: 3} + m_Name: + m_EditorClassIdentifier: + inboxDing: {fileID: 8300000, guid: 02a8e34be6271a24fa4dedfa305d3145, type: 3} + officeFootsteps: {fileID: 8300000, guid: f5ced8a9a3146694989ded64cbd751fc, type: 3} + officeAmbience: {fileID: 0} + buttonClick: {fileID: 8300000, guid: e1bd1f477160cb947b4f2dd840d995f3, type: 3} + phishingAlert: {fileID: 8300000, guid: 0bcd598d36bc3bb4a89381b4097cbab2, type: 3} + hackedAlert: {fileID: 8300000, guid: 5ac5a4b7b13662c4fbf4d8b173af6d0f, type: 3} + typewriterSubtitle: {fileID: 0} + correctAction: {fileID: 8300000, guid: 89b62acf255990a40b6382107d2dae4b, type: 3} + audioSource: {fileID: 0} +--- !u!4 &459458787 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 459458785} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.167, y: 1.4644, z: -0.02700001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &459922675 stripped Transform: m_CorrespondingSourceObject: {fileID: 4462408031516290, guid: 29aa987241a223347bf0b645c85fd2b2, type: 3} @@ -35638,6 +35752,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &481303969 MonoBehaviour: m_ObjectHideFlags: 0 @@ -71528,6 +71654,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &950349107 MonoBehaviour: m_ObjectHideFlags: 0 @@ -83545,6 +83683,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &1131396884 MonoBehaviour: m_ObjectHideFlags: 0 @@ -85382,6 +85532,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &1156166648 MonoBehaviour: m_ObjectHideFlags: 0 @@ -86040,7 +86202,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1165035726 RectTransform: m_ObjectHideFlags: 0 @@ -86153,6 +86315,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &1165035728 MonoBehaviour: m_ObjectHideFlags: 0 @@ -92420,6 +92594,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &1240692696 MonoBehaviour: m_ObjectHideFlags: 0 @@ -106083,6 +106269,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &1443737820 MonoBehaviour: m_ObjectHideFlags: 0 @@ -128383,6 +128581,134 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 98a28351f5b81af449b072eaf6a656f9, type: 3} +--- !u!1 &1752641677 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1752641679} + - component: {fileID: 1752641678} + m_Layer: 0 + m_Name: OfficeAmbience + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!82 &1752641678 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1752641677} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: fd67557d9d69fe54296b31207b805511, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0.497 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!4 &1752641679 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1752641677} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.167, y: 1.4644, z: -0.02700001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1752861799 PrefabInstance: m_ObjectHideFlags: 0 @@ -129987,6 +130313,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!1001 &1773994106 PrefabInstance: m_ObjectHideFlags: 0 @@ -131974,6 +132312,7 @@ MonoBehaviour: cameraSitTarget: {fileID: 390376884} moveSpeed: 2 rotationSpeed: 5 + NewEmailObj: {fileID: 1165035725} --- !u!4 &1810403119 stripped Transform: m_CorrespondingSourceObject: {fileID: 4279650551743048, guid: ebc766158960dbb41af7dd66e022f015, type: 3} @@ -146930,6 +147269,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &2043462172 MonoBehaviour: m_ObjectHideFlags: 0 @@ -147934,6 +148285,18 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 1 m_CallState: 2 + - m_Target: {fileID: 459458786} + m_TargetAssemblyTypeName: SoundManager, Assembly-CSharp + m_MethodName: PlayButtonClick + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 --- !u!114 &2053632137 MonoBehaviour: m_ObjectHideFlags: 0 @@ -160443,3 +160806,5 @@ SceneRoots: - {fileID: 1568526664} - {fileID: 2143540275} - {fileID: 292487263} + - {fileID: 459458787} + - {fileID: 1752641679} diff --git a/Assets/Scripts/BodyLinkHandler.cs b/Assets/Scripts/BodyLinkHandler.cs index 0e5fe69..a4f221b 100644 --- a/Assets/Scripts/BodyLinkHandler.cs +++ b/Assets/Scripts/BodyLinkHandler.cs @@ -56,6 +56,8 @@ public class BodyLinkHandler : MonoBehaviour, IPointerClickHandler, IPointerExit bool isOptimal = !email.isPhishing; SupabaseEventLogger.Instance?.LogDecisionEvent(isOptimal); + //SoundManager.Instance.PlayPhishingAlert(); + SoundManager.Instance.PlayHacked(); SceneOutcomeManager.Instance?.Clicked(email); } diff --git a/Assets/Scripts/CameraHeadBobbing.cs b/Assets/Scripts/CameraHeadBobbing.cs index e464719..ac853a1 100644 --- a/Assets/Scripts/CameraHeadBobbing.cs +++ b/Assets/Scripts/CameraHeadBobbing.cs @@ -11,7 +11,28 @@ public class CameraHeadBobbing : MonoBehaviour private Vector3 initialLocalPos; private float timer; + public AudioClip footstepsClip; + private AudioSource audioSource; + void Awake() + { + audioSource = gameObject.AddComponent(); + audioSource.clip = footstepsClip; + audioSource.loop = true; + audioSource.playOnAwake = false; + } + + void OnEnable() + { + if (footstepsClip != null && !audioSource.isPlaying) + audioSource.Play(); + } + + void OnDisable() + { + if (audioSource.isPlaying) + audioSource.Stop(); + } void Start() { initialLocalPos = transform.localPosition; diff --git a/Assets/Scripts/CharacterMovement.cs b/Assets/Scripts/CharacterMovement.cs index e5afed2..ec1f7bd 100644 --- a/Assets/Scripts/CharacterMovement.cs +++ b/Assets/Scripts/CharacterMovement.cs @@ -27,6 +27,7 @@ public class CharacterMovement : MonoBehaviour private bool cameraTransitionStarted = false; private Quaternion targetSitRotation; bool isStarted = false; + public GameObject NewEmailObj; void Start() { if (waypoints == null || waypoints.Length == 0) @@ -56,6 +57,7 @@ public class CharacterMovement : MonoBehaviour isStarted = true; SupabaseEventLogger.Instance?.StartSession(); InstructionManager.Instance?.ShowScreenInstruction("mission_intro"); + } void Update() { @@ -128,7 +130,8 @@ public class CharacterMovement : MonoBehaviour transform.rotation = targetSitRotation; animator.applyRootMotion = true; PlayAnimation("SitDown"); - + NewEmailObj.SetActive(true); + SoundManager.Instance.PlayInboxDing(); // Disable camera bobbing if (cameraHeadBobbing != null) cameraHeadBobbing.enabled = false; @@ -160,6 +163,7 @@ public class CharacterMovement : MonoBehaviour // Move and rotate camera to final cinematic zoom position mainCamera.GetComponent().constraintActive = false; + SoundManager.Instance.audioSource.Stop(); mainCamera.DOMove(cameraSitTarget.position, 1f); mainCamera.DORotate(cameraSitTarget.eulerAngles, 1f) .OnComplete(() => diff --git a/Assets/Scripts/EmailOpenPanel.cs b/Assets/Scripts/EmailOpenPanel.cs index b346215..de53e6b 100644 --- a/Assets/Scripts/EmailOpenPanel.cs +++ b/Assets/Scripts/EmailOpenPanel.cs @@ -31,6 +31,11 @@ public class EmailOpenPanel : MonoBehaviour public TextMeshProUGUI infoSubject; public Button closeInfoButton; + + public void PlayButtonClick() + { + SoundManager.Instance.PlayButtonClick(); + } public void Setup(EmailData data, string initial, Sprite iconSprite) { emailData = data; @@ -96,7 +101,7 @@ public class EmailOpenPanel : MonoBehaviour tmp.text = isArabic ? ArabicFixer.Fix(text) : text; tmp.font = LanguageManager.Instance.GetCurrentFont(); - // tmp.alignment = isArabic ? TextAlignmentOptions.Right : TextAlignmentOptions.Left; + // tmp.alignment = isArabic ? TextAlignmentOptions.Right : TextAlignmentOptions.Left; //tmp.isRightToLeftText = isArabic; } @@ -118,9 +123,13 @@ public class EmailOpenPanel : MonoBehaviour SupabaseEventLogger.Instance.LogScoreEvent(score); if (isCorrect) { + SoundManager.Instance?.PlayCorrectAction(); InstructionManager.Instance?.ShowScreenInstruction("correct_choice", 3f); } - + else + { + SoundManager.Instance?.PlayPhishingAlert(); + } switch (action) { case "report": @@ -132,7 +141,7 @@ public class EmailOpenPanel : MonoBehaviour } SupabaseEventLogger.Instance?.CompleteSessionAndSubmitResult( - userId: "user123", // replace with real user ID if available + userId: SystemInfo.deviceUniqueIdentifier, // replace with real user ID if available passed: isCorrect, optimal: isCorrect ? 1 : 0, suboptimal: isCorrect ? 0 : 1, @@ -148,8 +157,8 @@ public class EmailOpenPanel : MonoBehaviour tmp.text = isArabic ? ArabicFixerHelper.FixPreservingTags(arabic) : english; tmp.font = LanguageManager.Instance.GetCurrentFont(); - // tmp.alignment = isArabic ? TextAlignmentOptions.Right : TextAlignmentOptions.Left; - // tmp.isRightToLeftText = isArabic; + // tmp.alignment = isArabic ? TextAlignmentOptions.Right : TextAlignmentOptions.Left; + // tmp.isRightToLeftText = isArabic; } } diff --git a/Assets/Scripts/EmailUIController.cs b/Assets/Scripts/EmailUIController.cs index 9f6653c..2f0a014 100644 --- a/Assets/Scripts/EmailUIController.cs +++ b/Assets/Scripts/EmailUIController.cs @@ -59,6 +59,7 @@ public class EmailUIController : MonoBehaviour public void OnClick() { + SoundManager.Instance.PlayButtonClick(); GameObject panel = Instantiate(Resources.Load("EmailOpenPanel"), transform.root); WorldTimelineManager.Instance.OpenedEmailPanel = panel; EmailOpenPanel controller = panel.GetComponent(); @@ -66,6 +67,7 @@ public class EmailUIController : MonoBehaviour string englishLog = $"Opened email from '{data.senderName}' with subject '{data.subject}'"; string arabicLog = $"تم فتح البريد من '{data.senderName}' بعنوان '{data.subjectAr}'"; + UserActionLogger.Instance?.Log(englishLog, arabicLog); //UserActionLogger.Instance?.Log($"Opened email from '{data.senderName}' with subject '{data.subject}'"); diff --git a/Assets/Scripts/Scripts.zip b/Assets/Scripts/Scripts.zip deleted file mode 100644 index ad2b2d6a954ecf8f22b3beb84eea6536b1d2e88c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25269 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