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 ad2b2d6..0000000 Binary files a/Assets/Scripts/Scripts.zip and /dev/null differ diff --git a/Assets/SoundManager.cs b/Assets/SoundManager.cs new file mode 100644 index 0000000..06b4fe8 --- /dev/null +++ b/Assets/SoundManager.cs @@ -0,0 +1,49 @@ +using UnityEngine; + +public class SoundManager : MonoBehaviour +{ + public static SoundManager Instance; + + [Header("Audio Clips")] + public AudioClip inboxDing; + public AudioClip officeFootsteps; + public AudioClip officeAmbience; + public AudioClip buttonClick; + public AudioClip phishingAlert; + public AudioClip hackedAlert; + public AudioClip typewriterSubtitle; + public AudioClip correctAction; + + public AudioSource audioSource; + + void Awake() + { + if (Instance == null) + { + Instance = this; + //DontDestroyOnLoad(gameObject); + audioSource = GetComponent(); + if (audioSource == null) + audioSource = gameObject.AddComponent(); + } + else + { + Destroy(gameObject); + } + } + + public void PlayInboxDing() => audioSource.PlayOneShot(inboxDing); + + public void PlayOfficeFootsteps() => audioSource.PlayOneShot(officeFootsteps); + + public void PlayOfficeAmbience() => audioSource.PlayOneShot(officeAmbience); + + public void PlayButtonClick() => audioSource.PlayOneShot(buttonClick); + + public void PlayPhishingAlert() => audioSource.PlayOneShot(phishingAlert); + + public void PlayTypewriterSubtitle() => audioSource.PlayOneShot(typewriterSubtitle); + + public void PlayCorrectAction() => audioSource.PlayOneShot(correctAction); + public void PlayHacked() => audioSource.PlayOneShot(hackedAlert); +} diff --git a/Assets/SoundManager.cs.meta b/Assets/SoundManager.cs.meta new file mode 100644 index 0000000..7592708 --- /dev/null +++ b/Assets/SoundManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 988108d9ee3a2f747846fa7c9e95cf87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scripts.zip.meta b/Assets/Sounds/SFX.meta similarity index 67% rename from Assets/Scripts/Scripts.zip.meta rename to Assets/Sounds/SFX.meta index a05772e..5d71367 100644 --- a/Assets/Scripts/Scripts.zip.meta +++ b/Assets/Sounds/SFX.meta @@ -1,5 +1,6 @@ fileFormatVersion: 2 -guid: bde532f7bcac08f459962af7046c06b8 +guid: ca5422ac7a979cc4fbfabb09dc2a9b4c +folderAsset: yes DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Sounds/SFX/ClickSound.wav b/Assets/Sounds/SFX/ClickSound.wav new file mode 100644 index 0000000..ef2d570 Binary files /dev/null and b/Assets/Sounds/SFX/ClickSound.wav differ diff --git a/Assets/Sounds/SFX/ClickSound.wav.meta b/Assets/Sounds/SFX/ClickSound.wav.meta new file mode 100644 index 0000000..a7cf38f --- /dev/null +++ b/Assets/Sounds/SFX/ClickSound.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: e1bd1f477160cb947b4f2dd840d995f3 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/Correct.wav b/Assets/Sounds/SFX/Correct.wav new file mode 100644 index 0000000..88a18e1 Binary files /dev/null and b/Assets/Sounds/SFX/Correct.wav differ diff --git a/Assets/Sounds/SFX/Correct.wav.meta b/Assets/Sounds/SFX/Correct.wav.meta new file mode 100644 index 0000000..6cdec4f --- /dev/null +++ b/Assets/Sounds/SFX/Correct.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 89b62acf255990a40b6382107d2dae4b +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/FootSteps.wav b/Assets/Sounds/SFX/FootSteps.wav new file mode 100644 index 0000000..26fe759 Binary files /dev/null and b/Assets/Sounds/SFX/FootSteps.wav differ diff --git a/Assets/Sounds/SFX/FootSteps.wav.meta b/Assets/Sounds/SFX/FootSteps.wav.meta new file mode 100644 index 0000000..9574706 --- /dev/null +++ b/Assets/Sounds/SFX/FootSteps.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: f5ced8a9a3146694989ded64cbd751fc +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/Hacked.wav b/Assets/Sounds/SFX/Hacked.wav new file mode 100644 index 0000000..8d2c3b2 Binary files /dev/null and b/Assets/Sounds/SFX/Hacked.wav differ diff --git a/Assets/Sounds/SFX/Hacked.wav.meta b/Assets/Sounds/SFX/Hacked.wav.meta new file mode 100644 index 0000000..888f991 --- /dev/null +++ b/Assets/Sounds/SFX/Hacked.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 5ac5a4b7b13662c4fbf4d8b173af6d0f +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/New_Email.mp3 b/Assets/Sounds/SFX/New_Email.mp3 new file mode 100644 index 0000000..c634324 Binary files /dev/null and b/Assets/Sounds/SFX/New_Email.mp3 differ diff --git a/Assets/Sounds/SFX/New_Email.mp3.meta b/Assets/Sounds/SFX/New_Email.mp3.meta new file mode 100644 index 0000000..6f5428c --- /dev/null +++ b/Assets/Sounds/SFX/New_Email.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 02a8e34be6271a24fa4dedfa305d3145 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/OfficeAmbience.mp3 b/Assets/Sounds/SFX/OfficeAmbience.mp3 new file mode 100644 index 0000000..116a279 Binary files /dev/null and b/Assets/Sounds/SFX/OfficeAmbience.mp3 differ diff --git a/Assets/Sounds/SFX/OfficeAmbience.mp3.meta b/Assets/Sounds/SFX/OfficeAmbience.mp3.meta new file mode 100644 index 0000000..b98d4bb --- /dev/null +++ b/Assets/Sounds/SFX/OfficeAmbience.mp3.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: fd67557d9d69fe54296b31207b805511 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/SFX/PhishingAlert.wav b/Assets/Sounds/SFX/PhishingAlert.wav new file mode 100644 index 0000000..df31909 Binary files /dev/null and b/Assets/Sounds/SFX/PhishingAlert.wav differ diff --git a/Assets/Sounds/SFX/PhishingAlert.wav.meta b/Assets/Sounds/SFX/PhishingAlert.wav.meta new file mode 100644 index 0000000..3ca5a23 --- /dev/null +++ b/Assets/Sounds/SFX/PhishingAlert.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 0bcd598d36bc3bb4a89381b4097cbab2 +AudioImporter: + externalObjects: {} + serializedVersion: 7 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: