From b9419896a8897e66fb1862de140cc17ead0cf87f Mon Sep 17 00:00:00 2001 From: Steven Date: Sat, 14 Oct 2017 18:53:16 -0500 Subject: [PATCH] added score ui and update-score animations --- Project Undercover/Assets/Plugins/HSBColor.cs | 10 +- .../Assets/Resources/CameraRig.prefab | 2 +- .../Assets/Scenes/NewCharactersTest.unity | 617 +++++++++++++++++- .../Interfaces/Interaction.cs | 2 +- .../CharacterStateMachine/Interfaces/State.cs | 1 + .../CharacterStateMachine/StateController.cs | 4 - .../Assets/Scripts/Lobby/GameManager.cs | 55 +- .../Scripts/UI/InteractionPanelController.cs | 2 +- .../Assets/Scripts/UI/ScorePanelController.cs | 176 +++++ .../Scripts/UI/ScorePanelController.cs.meta | 12 + Project Undercover/Assets/Sprites/Spy.png | Bin 0 -> 23041 bytes .../Assets/Sprites/Spy.png.meta | 82 +++ Project Undercover/Assets/Sprites/guard.png | Bin 0 -> 19540 bytes .../Assets/Sprites/guard.png.meta | 82 +++ 14 files changed, 976 insertions(+), 69 deletions(-) create mode 100644 Project Undercover/Assets/Scripts/UI/ScorePanelController.cs create mode 100644 Project Undercover/Assets/Scripts/UI/ScorePanelController.cs.meta create mode 100644 Project Undercover/Assets/Sprites/Spy.png create mode 100644 Project Undercover/Assets/Sprites/Spy.png.meta create mode 100644 Project Undercover/Assets/Sprites/guard.png create mode 100644 Project Undercover/Assets/Sprites/guard.png.meta diff --git a/Project Undercover/Assets/Plugins/HSBColor.cs b/Project Undercover/Assets/Plugins/HSBColor.cs index b05d0a2..67639a7 100644 --- a/Project Undercover/Assets/Plugins/HSBColor.cs +++ b/Project Undercover/Assets/Plugins/HSBColor.cs @@ -1,7 +1,8 @@ -using UnityEngine; +using System; +using UnityEngine; [System.Serializable] -public struct HSBColor +public struct HSBColor : IEquatable { public float h; public float s; @@ -221,4 +222,9 @@ public struct HSBColor Debug.Log("164,82,84 .... 0.643137f, 0.321568f, 0.329411f :" + ToColor(new HSBColor(new Color(0.643137f, 0.321568f, 0.329411f)))); } + + public bool Equals(HSBColor other) + { + return Mathf.Abs((h - other.h)) < 0.01f && Mathf.Abs((s - other.s)) < 0.01f && Mathf.Abs((b - other.b)) < 0.01f && Mathf.Abs((a - other.a)) < 0.01f; + } } \ No newline at end of file diff --git a/Project Undercover/Assets/Resources/CameraRig.prefab b/Project Undercover/Assets/Resources/CameraRig.prefab index c346d32..b24fb0c 100644 --- a/Project Undercover/Assets/Resources/CameraRig.prefab +++ b/Project Undercover/Assets/Resources/CameraRig.prefab @@ -144,7 +144,7 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 - m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_BackGroundColor: {r: 0.25, g: 0.25, b: 0.25, a: 0} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 diff --git a/Project Undercover/Assets/Scenes/NewCharactersTest.unity b/Project Undercover/Assets/Scenes/NewCharactersTest.unity index 30171ee..5b801de 100644 --- a/Project Undercover/Assets/Scenes/NewCharactersTest.unity +++ b/Project Undercover/Assets/Scenes/NewCharactersTest.unity @@ -176,6 +176,199 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 3938152} +--- !u!1 &59439889 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 59439890} + - component: {fileID: 59439892} + - component: {fileID: 59439891} + m_Layer: 5 + m_Name: TimerText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &59439890 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 59439889} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 62720020} + m_RootOrder: 2 + 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: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &59439891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 59439889} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 21 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 0:00 +--- !u!222 &59439892 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 59439889} +--- !u!1 &62720019 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 62720020} + - component: {fileID: 62720022} + - component: {fileID: 62720021} + - component: {fileID: 62720023} + - component: {fileID: 62720024} + m_Layer: 5 + m_Name: ScorePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &62720020 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62720019} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1476265757} + - {fileID: 1281261005} + - {fileID: 59439890} + - {fileID: 1409286883} + - {fileID: 1530037538} + m_Father: {fileID: 1711455460} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &62720021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62720019} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.328} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &62720022 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62720019} +--- !u!114 &62720023 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62720019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa584fbee541324448dd18d8409c7a41, type: 3} + m_Name: + m_EditorClassIdentifier: + ownerId: 0 + group: 0 + OwnerShipWasTransfered: 0 + prefixBackup: -1 + synchronization: 0 + onSerializeTransformOption: 3 + onSerializeRigidBodyOption: 2 + ownershipTransfer: 0 + ObservedComponents: [] + ObservedComponentsFoldoutOpen: 1 + viewIdField: 1 + instantiationId: 1 + currentMasterID: -1 + isRuntimeInstantiated: 0 +--- !u!114 &62720024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 62720019} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ed9bfa14979ce36469ee284add674c83, type: 3} + m_Name: + m_EditorClassIdentifier: + _timerText: {fileID: 59439891} + winText: {fileID: 0} + _guardScore: {fileID: 1631539349} + _spyScore: {fileID: 225134303} + missionsCompleteText: {fileID: 0} + winPanel: {fileID: 0} + guardPanel: {fileID: 0} + spyPanel: {fileID: 0} --- !u!1 &99008743 GameObject: m_ObjectHideFlags: 0 @@ -318,6 +511,74 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 120123398} +--- !u!1 &225134301 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 225134302} + - component: {fileID: 225134304} + - component: {fileID: 225134303} + m_Layer: 5 + m_Name: ScoreBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &225134302 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225134301} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1530037538} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -2.5, y: 0} + m_SizeDelta: {x: 103, y: 15} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &225134303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225134301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 1, b: 0.594, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &225134304 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 225134301} --- !u!1 &231738595 GameObject: m_ObjectHideFlags: 0 @@ -1422,6 +1683,74 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1169398161} +--- !u!1 &1281261004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1281261005} + - component: {fileID: 1281261007} + - component: {fileID: 1281261006} + m_Layer: 5 + m_Name: SpySprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1281261005 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281261004} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 62720020} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1281261006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281261004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 51df7eb9a0e478c4f8393a275e950f17, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1281261007 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1281261004} --- !u!1 &1285637234 GameObject: m_ObjectHideFlags: 0 @@ -1599,14 +1928,75 @@ MonoBehaviour: cameraRigPrefab: {fileID: 1009033979625728, guid: 1764211b5690c164d82aa46fa4ec707d, type: 2} numNpcs: 10 - spyMissionsComplete: 0 - waitBetweenMissions: 5 - onMissionCooldown: 0 - missionsCompleteText: {fileID: 0} - winPanel: {fileID: 0} - guardPanel: {fileID: 0} - spyPanel: {fileID: 0} - winText: {fileID: 0} +--- !u!1 &1409286882 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1409286883} + - component: {fileID: 1409286885} + - component: {fileID: 1409286884} + m_Layer: 5 + m_Name: GuardScore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1409286883 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1409286882} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1631539348} + m_Father: {fileID: 62720020} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 60, y: 0} + m_SizeDelta: {x: 108.4, y: 20} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1409286884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1409286882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.328} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &1409286885 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1409286882} --- !u!1 &1437119776 GameObject: m_ObjectHideFlags: 0 @@ -1661,6 +2051,143 @@ MonoBehaviour: type: 2} requestPanel: {fileID: 1290216653} requestedInteractionText: {fileID: 1169398163} +--- !u!1 &1476265756 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1476265757} + - component: {fileID: 1476265759} + - component: {fileID: 1476265758} + m_Layer: 5 + m_Name: GuardSprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1476265757 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1476265756} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 62720020} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1476265758 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1476265756} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: a47b41bbfb07e2b4ca148f318e944056, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1476265759 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1476265756} +--- !u!1 &1530037537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1530037538} + - component: {fileID: 1530037540} + - component: {fileID: 1530037539} + m_Layer: 5 + m_Name: SpyScore + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1530037538 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1530037537} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 225134302} + m_Father: {fileID: 62720020} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -60, y: 0} + m_SizeDelta: {x: 108.399994, y: 20} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1530037539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1530037537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.328} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &1530037540 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1530037537} --- !u!1 &1617739639 GameObject: m_ObjectHideFlags: 0 @@ -1730,6 +2257,74 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1617739639} +--- !u!1 &1631539347 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1631539348} + - component: {fileID: 1631539350} + - component: {fileID: 1631539349} + m_Layer: 5 + m_Name: ScoreBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1631539348 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631539347} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1409286883} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 2.5, y: 0} + m_SizeDelta: {x: 103, y: 15} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1631539349 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631539347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 1, b: 0.594, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &1631539350 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1631539347} --- !u!114 &1654923637 stripped MonoBehaviour: m_PrefabParentObject: {fileID: 114306799516802978, guid: c67fa24334c0f364cad8798522e92116, @@ -1823,6 +2418,7 @@ RectTransform: m_Children: - {fileID: 356728719} - {fileID: 1437119777} + - {fileID: 62720020} m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2119,6 +2715,11 @@ Prefab: propertyPath: spotLight value: objectReference: {fileID: 2060245569} + - target: {fileID: 20437103875467350, guid: c67fa24334c0f364cad8798522e92116, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: c67fa24334c0f364cad8798522e92116, type: 2} m_IsPrefabParent: 0 diff --git a/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/Interaction.cs b/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/Interaction.cs index b2da264..27f2ebd 100644 --- a/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/Interaction.cs +++ b/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/Interaction.cs @@ -47,6 +47,6 @@ public class Interaction : ScriptableObject //--------------------------------- Result functions --------------------------------- void SpyMissionComplete(StateController controller) { - Debug.Log("Completed mission"); + ScorePanelController.CompleteMission(); } } diff --git a/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/State.cs b/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/State.cs index 9da3469..5f15c6a 100644 --- a/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/State.cs +++ b/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/State.cs @@ -48,6 +48,7 @@ public class State : ScriptableObject if (decisionSucceeded) { controller.TransitionToState(transitions[i].trueState); + break; } } } diff --git a/Project Undercover/Assets/Scripts/CharacterStateMachine/StateController.cs b/Project Undercover/Assets/Scripts/CharacterStateMachine/StateController.cs index 0182aa4..8f8a6c1 100644 --- a/Project Undercover/Assets/Scripts/CharacterStateMachine/StateController.cs +++ b/Project Undercover/Assets/Scripts/CharacterStateMachine/StateController.cs @@ -88,7 +88,6 @@ public class StateController : SelectableObject } } - // Initiates interaction with other StateController public void InitiateInteractionWithSelectedObject() { if (SelectedObject == this) @@ -153,7 +152,6 @@ public class StateController : SelectableObject return SelectedObject.Interactor != this; } - public void FinishInteraction() { if (IsInteracting) @@ -184,8 +182,6 @@ public class StateController : SelectableObject } } - - public void StartRoaming() { _roamCoroutine = StartCoroutine(Roam()); diff --git a/Project Undercover/Assets/Scripts/Lobby/GameManager.cs b/Project Undercover/Assets/Scripts/Lobby/GameManager.cs index 83aa37a..f55eb6e 100644 --- a/Project Undercover/Assets/Scripts/Lobby/GameManager.cs +++ b/Project Undercover/Assets/Scripts/Lobby/GameManager.cs @@ -10,15 +10,7 @@ public class GameManager : Photon.PunBehaviour { public GuardCameraController guardCamera; public GameObject spyPrefab, NPCPrefab, cameraRigPrefab; public int numNpcs = 9; - public int spyMissionsComplete = 0; - public float waitBetweenMissions = 5.0f; - public bool onMissionCooldown = false; - public Text missionsCompleteText; - public GameObject winPanel; - public GameObject guardPanel; - public GameObject spyPanel; - public Text winText; - private int numOfMissions = 3; + public override void OnLeftRoom() { @@ -69,52 +61,11 @@ public class GameManager : Photon.PunBehaviour { PhotonNetwork.Instantiate(NPCPrefab.name, randPos, Quaternion.identity, 0); } } - - } - - public void CompleteMission() - { - if (!PhotonNetwork.isMasterClient || onMissionCooldown) - return; - StartCoroutine(MissionCooldown()); - spyMissionsComplete++; - photonView.RPC("CompleteMissionRPC", PhotonTargets.All, spyMissionsComplete); - - if (spyMissionsComplete >= numOfMissions) - photonView.RPC("ShowSpiesWinScreen", PhotonTargets.All); - } - - [PunRPC] - void SpawnNPC(Vector3 pos) - { - Instantiate(NPCPrefab, pos, Quaternion.identity); - } - - [PunRPC] - void CompleteMissionRPC(int missionsCompleted) - { - spyMissionsComplete = missionsCompleted; - missionsCompleteText.text = spyMissionsComplete + "/3"; } [PunRPC] - void ShowSpiesWinScreen() + void SpawnNPC(Vector3 pos) { - winPanel.SetActive(true); - winText.text = "SPIES WIN!"; - } - - [PunRPC] - void ShowGuardsWinScreen() - { - winPanel.SetActive(true); - winText.text = "GUARDS WIN!"; - } - - IEnumerator MissionCooldown() - { - onMissionCooldown = true; - yield return new WaitForSeconds(waitBetweenMissions); - onMissionCooldown = false; + Instantiate(NPCPrefab, pos, Quaternion.identity); } } diff --git a/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs b/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs index 594b5d9..dd6becb 100644 --- a/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs +++ b/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs @@ -53,7 +53,7 @@ public class InteractionPanelController : MonoBehaviour { var data = new InteractionData(interaction, false); optionsList.Add(data); } - if (controller.SelectedObject.CompareTag("Spy")) + if (true || controller.SelectedObject.CompareTag("Spy")) { foreach (Interaction interaction in controller.SelectedObject.spyInteractions) { diff --git a/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs new file mode 100644 index 0000000..42b33ae --- /dev/null +++ b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs @@ -0,0 +1,176 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class ScorePanelController : Photon.PunBehaviour { + + public Text _timerText, winText; + public Image _guardScore, _spyScore; + public Text missionsCompleteText; + public GameObject winPanel; + public GameObject guardPanel; + public GameObject spyPanel; + + private int _numOfMissions = 3; + private int _missionsComplete = 0; + private float waitBetweenMissions = 5.0f; + private bool onMissionCooldown = false; + + private float _initalScoreWidth; + private static ScorePanelController ActivePanel; + + void Start () { + if (!ActivePanel) + ActivePanel = this; + else + Debug.LogError("Two ScorePanelControllers in the scene"); + StartCoroutine(TimerUpdate()); + + // Initialize scorebar variables + _initalScoreWidth = _spyScore.rectTransform.sizeDelta.x; + _spyScore.rectTransform.sizeDelta = new Vector2(-1, _spyScore.rectTransform.sizeDelta.y); + _guardScore.rectTransform.sizeDelta = new Vector2(-1, _guardScore.rectTransform.sizeDelta.y); + } + + public static void CompleteMission() + { + if (ActivePanel.onMissionCooldown) + return; + + ActivePanel.photonView.RPC("CompleteMissionRPC", PhotonTargets.All); + } + + #region Coroutines + IEnumerator TimerUpdate() + { + while (true) + { + yield return new WaitForEndOfFrame(); + int seconds = (int)Time.timeSinceLevelLoad; + int minutes = seconds / 60; + seconds = seconds % 60; + string timeString = ""; + if (seconds < 10) + timeString = minutes.ToString() + ":0" + seconds.ToString(); + else + timeString = minutes.ToString() + ":" + seconds.ToString(); + _timerText.text = timeString; + } + } + + IEnumerator IncreaseScoreBarAnimation(Image scoreBar, float progress) + { + Color originalColor = scoreBar.color; + var flashCoroutine = StartCoroutine(FlashScoreBar(scoreBar)); + float targetWidth = _initalScoreWidth * progress; + float overshotWidth = targetWidth * 1.2f; + while (true) + { + Vector2 sizeDelta = scoreBar.rectTransform.sizeDelta; + float newWidth = Mathf.Lerp(sizeDelta.x, overshotWidth, Time.deltaTime * 0.8f); + if (sizeDelta.x < targetWidth) + { + scoreBar.rectTransform.sizeDelta = new Vector2(newWidth, sizeDelta.y); + yield return new WaitForEndOfFrame(); + } + else + { + scoreBar.rectTransform.sizeDelta = new Vector2(targetWidth, sizeDelta.y); + break; + } + } + StopCoroutine(flashCoroutine); + StartCoroutine(ResetScoreBarColor(scoreBar, originalColor)); + yield return null; + } + + IEnumerator FlashScoreBar(Image scoreBar) + { + Color darkerColor = scoreBar.color; + darkerColor.r *= 0.5f; + darkerColor.g *= 0.5f; + darkerColor.b *= 0.5f; + HSBColor darkColor = HSBColor.FromColor(darkerColor); + HSBColor flashColor = HSBColor.FromColor(Color.yellow); + HSBColor currentColor = darkColor; + bool pingPong = true; + float time = 0.0f; + while (true) + { + float elapsedTime = Time.deltaTime * 2.0f; + if (pingPong) + time += elapsedTime; + else + time -= elapsedTime; + time = Mathf.Clamp01(time); + if (time == 0.0f) + pingPong = true; + else if (time == 1.0f) + pingPong = false; + + currentColor = HSBColor.Lerp(darkColor, flashColor, time); + scoreBar.color = currentColor.ToColor(); + yield return new WaitForEndOfFrame(); + } + } + + IEnumerator ResetScoreBarColor(Image scoreBar, Color originalColor) + { + float time = 0.0f; + HSBColor startColor = HSBColor.FromColor(scoreBar.color); + HSBColor endColor = HSBColor.FromColor(originalColor); + HSBColor currentColor = startColor; + while (true) + { + time += Time.deltaTime * 2.0f; + time = Mathf.Clamp01(time); + currentColor = HSBColor.Lerp(startColor, endColor, time); + scoreBar.color = currentColor.ToColor(); + if (time >= 0.90f) + { + scoreBar.color = originalColor; + break; + } + yield return new WaitForEndOfFrame(); + } + yield return null; + } + + IEnumerator MissionCooldown() + { + onMissionCooldown = true; + yield return new WaitForSeconds(waitBetweenMissions); + onMissionCooldown = false; + } + #endregion + + #region PunRPC + [PunRPC] + void CompleteMissionRPC() + { + Debug.Log("Mission Completed!"); + _missionsComplete++; + StartCoroutine(MissionCooldown()); + StartCoroutine(IncreaseScoreBarAnimation(_spyScore, (float)_missionsComplete / _numOfMissions)); + /*if (_missionsComplete >= _numOfMissions) + photonView.RPC("ShowSpiesWinScreen", PhotonTargets.All);*/ + } + + [PunRPC] + void ShowSpiesWinScreen() + { + winPanel.SetActive(true); + winText.text = "SPIES WIN!"; + } + + [PunRPC] + void ShowGuardsWinScreen() + { + winPanel.SetActive(true); + winText.text = "GUARDS WIN!"; + } + #endregion + +} diff --git a/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs.meta b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs.meta new file mode 100644 index 0000000..5694c6f --- /dev/null +++ b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ed9bfa14979ce36469ee284add674c83 +timeCreated: 1508017086 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Project Undercover/Assets/Sprites/Spy.png b/Project Undercover/Assets/Sprites/Spy.png new file mode 100644 index 0000000000000000000000000000000000000000..e499dd7f362652c8208dc50cdaa9a45426a582a5 GIT binary patch literal 23041 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