diff --git a/Project Undercover/Assets/Models/Blender/bust.blend b/Project Undercover/Assets/Models/Blender/bust.blend index 0747094..317caa6 100644 Binary files a/Project Undercover/Assets/Models/Blender/bust.blend and b/Project Undercover/Assets/Models/Blender/bust.blend differ diff --git a/Project Undercover/Assets/Models/Blender/bust.blend1 b/Project Undercover/Assets/Models/Blender/bust.blend1 new file mode 100644 index 0000000..354a059 Binary files /dev/null and b/Project Undercover/Assets/Models/Blender/bust.blend1 differ diff --git a/Project Undercover/Assets/Scenes/Player-Object-Interactions.meta b/Project Undercover/Assets/Models/Blender/bust.blend1.meta similarity index 58% rename from Project Undercover/Assets/Scenes/Player-Object-Interactions.meta rename to Project Undercover/Assets/Models/Blender/bust.blend1.meta index ba31b04..56cc432 100644 --- a/Project Undercover/Assets/Scenes/Player-Object-Interactions.meta +++ b/Project Undercover/Assets/Models/Blender/bust.blend1.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: e496172999d202948be110cc90eba6e2 -folderAsset: yes -timeCreated: 1509473891 +guid: 5c64151264d0426479cf614cf8110ebd +timeCreated: 1510253917 licenseType: Free DefaultImporter: userData: diff --git a/Project Undercover/Assets/Models/Objects/bookshelf.fbx b/Project Undercover/Assets/Models/Objects/bookshelf.fbx index 276beef..071f62a 100644 Binary files a/Project Undercover/Assets/Models/Objects/bookshelf.fbx and b/Project Undercover/Assets/Models/Objects/bookshelf.fbx differ diff --git a/Project Undercover/Assets/Models/Objects/bust.fbx b/Project Undercover/Assets/Models/Objects/bust.fbx index ed59e90..43a0804 100644 Binary files a/Project Undercover/Assets/Models/Objects/bust.fbx and b/Project Undercover/Assets/Models/Objects/bust.fbx differ diff --git a/Project Undercover/Assets/Resources/CameraRig.prefab b/Project Undercover/Assets/Resources/CameraRig.prefab index b24fb0c..657bcb9 100644 --- a/Project Undercover/Assets/Resources/CameraRig.prefab +++ b/Project Undercover/Assets/Resources/CameraRig.prefab @@ -21,7 +21,7 @@ GameObject: - component: {fileID: 4142260045970492} m_Layer: 0 m_Name: CameraRig - m_TagString: Untagged + m_TagString: CameraRig m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 diff --git a/Project Undercover/Assets/Resources/NpcColors.asset b/Project Undercover/Assets/Resources/NpcColors.asset deleted file mode 100644 index af5a52f..0000000 --- a/Project Undercover/Assets/Resources/NpcColors.asset +++ /dev/null @@ -1,17 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 0} - m_Name: NpcColors - m_EditorClassIdentifier: Assembly-CSharp::NpcColors - colors: - - {r: 1, g: 0, b: 0, a: 0} - - {r: 0, g: 1, b: 0, a: 0} - - {r: 0, g: 0, b: 1, a: 0} diff --git a/Project Undercover/Assets/Resources/NpcColors.asset.meta b/Project Undercover/Assets/Resources/NpcColors.asset.meta deleted file mode 100644 index 9db0b35..0000000 --- a/Project Undercover/Assets/Resources/NpcColors.asset.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 0ca93fb1ceb40684f8b400eb4d65bffe -timeCreated: 1507940030 -licenseType: Free -NativeFormatImporter: - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Project Undercover/Assets/Resources/PhotonServerSettings.asset b/Project Undercover/Assets/Resources/PhotonServerSettings.asset index 42e28f2..fa97744 100755 --- a/Project Undercover/Assets/Resources/PhotonServerSettings.asset +++ b/Project Undercover/Assets/Resources/PhotonServerSettings.asset @@ -73,4 +73,6 @@ MonoBehaviour: - RemovePlayer - CaughtSpyRPC - GuardCaughtNPCRPC + - ReplaceNPCWithSpyRPC + - ReplaceSpyRPC DisableAutoOpenWizard: 1 diff --git a/Project Undercover/Assets/Scenes/GameScene.unity b/Project Undercover/Assets/Scenes/GameScene.unity index ee0a53e..caf54d6 100644 --- a/Project Undercover/Assets/Scenes/GameScene.unity +++ b/Project Undercover/Assets/Scenes/GameScene.unity @@ -117,9 +117,10 @@ GameObject: m_Component: - component: {fileID: 40329370} - component: {fileID: 40329369} + - component: {fileID: 40329371} m_Layer: 0 m_Name: GameManager - m_TagString: Untagged + m_TagString: GameManager m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -141,15 +142,7 @@ 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} guardCameraPanel: {fileID: 164040928} - winText: {fileID: 0} --- !u!4 &40329370 Transform: m_ObjectHideFlags: 0 @@ -163,6 +156,31 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &40329371 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 40329368} + 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: 7 + instantiationId: 7 + currentMasterID: -1 + isRuntimeInstantiated: 0 --- !u!1 &81075120 GameObject: m_ObjectHideFlags: 0 @@ -1229,6 +1247,10 @@ Prefab: propertyPath: m_Layer value: 10 objectReference: {fileID: 0} + - target: {fileID: 100000, guid: 0bce433961afa4d488cf2e08bff4f86a, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 0bce433961afa4d488cf2e08bff4f86a, type: 3} m_IsPrefabParent: 0 @@ -1268,12 +1290,12 @@ MonoBehaviour: group: 0 OwnerShipWasTransfered: 0 prefixBackup: -1 - synchronization: 3 + synchronization: 0 onSerializeTransformOption: 3 onSerializeRigidBodyOption: 2 ownershipTransfer: 0 ObservedComponents: - - {fileID: 284817582} + - {fileID: 0} ObservedComponentsFoldoutOpen: 1 viewIdField: 6 instantiationId: 6 @@ -1444,6 +1466,10 @@ Prefab: propertyPath: m_StaticEditorFlags value: 4294967295 objectReference: {fileID: 0} + - target: {fileID: 100000, guid: cc86ddd814bb12f43b57ded5958a2dd6, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: cc86ddd814bb12f43b57ded5958a2dd6, type: 3} m_IsPrefabParent: 0 @@ -1483,12 +1509,12 @@ MonoBehaviour: group: 0 OwnerShipWasTransfered: 0 prefixBackup: -1 - synchronization: 3 + synchronization: 0 onSerializeTransformOption: 3 onSerializeRigidBodyOption: 2 ownershipTransfer: 0 ObservedComponents: - - {fileID: 316942571} + - {fileID: 0} ObservedComponentsFoldoutOpen: 1 viewIdField: 5 instantiationId: 5 diff --git a/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset b/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset deleted file mode 100644 index 092284e..0000000 Binary files a/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset and /dev/null differ diff --git a/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset.meta b/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset.meta deleted file mode 100644 index f106a36..0000000 --- a/Project Undercover/Assets/Scenes/Player-Object-Interactions/NavMesh.asset.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 3b44e343791674a4692df18a304a5e9d -timeCreated: 1509473920 -licenseType: Free -NativeFormatImporter: - mainObjectFileID: 23800000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Project Undercover/Assets/Scripts/Guard/GuardController.cs b/Project Undercover/Assets/Scripts/Guard/GuardController.cs index 441a076..ea772f4 100755 --- a/Project Undercover/Assets/Scripts/Guard/GuardController.cs +++ b/Project Undercover/Assets/Scripts/Guard/GuardController.cs @@ -106,7 +106,7 @@ public class GuardController : Photon.PunBehaviour { } else if (hit.transform.gameObject.tag == "Spy") { - ScorePanelController.CaughtSpy(); + ScorePanelController.CaughtSpy(hit.transform.gameObject.GetPhotonView().viewID); } } } diff --git a/Project Undercover/Assets/Scripts/Lobby/GameManager.cs b/Project Undercover/Assets/Scripts/Lobby/GameManager.cs index 3d1d22d..92aab32 100644 --- a/Project Undercover/Assets/Scripts/Lobby/GameManager.cs +++ b/Project Undercover/Assets/Scripts/Lobby/GameManager.cs @@ -2,23 +2,15 @@ using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; - +using System.Collections.Generic; public class GameManager : Photon.PunBehaviour { public GameObject guardController; 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 GameObject guardCameraPanel; - public Text winText; - private int numOfMissions = 3; + private static GameManager _activeManager = null; public override void OnLeftRoom() { @@ -43,8 +35,21 @@ public class GameManager : Photon.PunBehaviour { PhotonNetwork.LeaveRoom(); } + public static GameManager ActiveManager + { + get + { + return _activeManager; + } + } + void Start() { + if (_activeManager == null) + _activeManager = this; + else + Debug.LogError("More than one game manager in the scene!"); + if (PersistantPlayerSettings.character == PersistantPlayerSettings.Character.Guard) { guardController.SetActive(true); @@ -71,9 +76,33 @@ public class GameManager : Photon.PunBehaviour { } } - [PunRPC] - void SpawnNPC(Vector3 pos) + public List GetNpcs() { - Instantiate(NPCPrefab, pos, Quaternion.identity); + var npcList = new List(); + foreach (GameObject obj in GameObject.FindGameObjectsWithTag("NPC")) + { + npcList.Add(obj.GetComponent()); + } + return npcList; + } + + [PunRPC] + void ReplaceNPCWithSpyRPC(int spyId, int npcId) + { + var randNPC = PhotonView.Find(npcId); + + // Replace NPC with Spy + PhotonView spyView = PhotonView.Find(spyId); + if (spyView && spyView.isMine) + { + PhotonNetwork.Destroy(spyView.gameObject); + var spy = PhotonNetwork.Instantiate(spyPrefab.name, randNPC.transform.position, randNPC.transform.rotation, 0); + GameObject cameraRig = GameObject.FindGameObjectWithTag("CameraRig"); + cameraRig.GetComponentInChildren().SetTarget(spy.transform); + } + if (PhotonNetwork.isMasterClient) + { + PhotonNetwork.Destroy(randNPC.gameObject); + } } } diff --git a/Project Undercover/Assets/Scripts/Misc/NPCColors.cs b/Project Undercover/Assets/Scripts/Misc/NPCColors.cs index a44b138..cde75b4 100644 --- a/Project Undercover/Assets/Scripts/Misc/NPCColors.cs +++ b/Project Undercover/Assets/Scripts/Misc/NPCColors.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using UnityEngine; -[CreateAssetMenu(menuName = "Colors/NpcColors")] public static class NpcColors { private static List remainingIndices; diff --git a/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs b/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs index dd6becb..15b0aea 100644 --- a/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs +++ b/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs @@ -53,15 +53,13 @@ public class InteractionPanelController : MonoBehaviour { var data = new InteractionData(interaction, false); optionsList.Add(data); } - if (true || controller.SelectedObject.CompareTag("Spy")) + foreach (Interaction interaction in controller.SelectedObject.spyInteractions) { - foreach (Interaction interaction in controller.SelectedObject.spyInteractions) - { - var data = new InteractionData(interaction, true); - optionsList.Add(data); - } + var data = new InteractionData(interaction, true); + optionsList.Add(data); } + interactionsDropdown.AddOptions(optionsList); if (interactionsDropdown.value > interactionsDropdown.options.Count) interactionsDropdown.value = 0; diff --git a/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs index 329bbe1..36ad12d 100644 --- a/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs +++ b/Project Undercover/Assets/Scripts/UI/ScorePanelController.cs @@ -9,7 +9,7 @@ public class ScorePanelController : Photon.PunBehaviour { public Text _timerText; public Image _guardScore, _spyScore; - private int _numOfMissions = 3, _maxGuardPoints = 3; + private int _numOfMissions = 5, _maxGuardPoints = 5; private int _missionsComplete = 0, _numGuardPoints = 0; private float waitBetweenMissions = 5.0f; private bool onMissionCooldown = false; @@ -34,17 +34,20 @@ public class ScorePanelController : Photon.PunBehaviour { { if (ActivePanel.onMissionCooldown) return; - ActivePanel.photonView.RPC("CompleteMissionRPC", PhotonTargets.All); } - public static void CaughtSpy() + public static void CaughtSpy(int spyId) { - ActivePanel.photonView.RPC("CaughtSpyRPC", PhotonTargets.All); + if (ActivePanel.onMissionCooldown) + return; + ActivePanel.photonView.RPC("CaughtSpyRPC", PhotonTargets.All, spyId); } public static void GuardCaughtNPC() { + if (ActivePanel.onMissionCooldown) + return; ActivePanel.photonView.RPC("GuardCaughtNPCRPC", PhotonTargets.All); } @@ -168,12 +171,17 @@ public class ScorePanelController : Photon.PunBehaviour { } [PunRPC] - void CaughtSpyRPC() + void CaughtSpyRPC(int spyId) { Debug.Log("Spy Caught!"); _numGuardPoints++; StartCoroutine(MissionCooldown()); StartCoroutine(IncreaseScoreBarAnimation(_guardScore, (float)_numGuardPoints / _maxGuardPoints)); + + // Get Random NPC + var npcs = GameManager.ActiveManager.GetNpcs(); + int randInt = (int)(UnityEngine.Random.value * npcs.Count); + GameManager.ActiveManager.photonView.RPC("ReplaceNPCWithSpyRPC", PhotonTargets.All, spyId, npcs[randInt].photonView.viewID); } [PunRPC] @@ -191,5 +199,4 @@ public class ScorePanelController : Photon.PunBehaviour { WinAnimationController.ActiveController.PlayWinAnimation(guardsOrSpies); } #endregion - } diff --git a/Project Undercover/ProjectSettings/TagManager.asset b/Project Undercover/ProjectSettings/TagManager.asset index fd03f25..63af3d3 100755 --- a/Project Undercover/ProjectSettings/TagManager.asset +++ b/Project Undercover/ProjectSettings/TagManager.asset @@ -10,6 +10,7 @@ TagManager: - NPC - GuardController - GuardPanel + - CameraRig layers: - Default - TransparentFX