Added guard notification and mission log UI; now tracking missions. Things might be broken idk.
This commit is contained in:
parent
14634378ef
commit
6b91eb1069
12 changed files with 888 additions and 90 deletions
77
Project Undercover/Assets/Materials/Half-Transparent UI.mat
Executable file
77
Project Undercover/Assets/Materials/Half-Transparent UI.mat
Executable file
|
@ -0,0 +1,77 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: Half-Transparent UI
|
||||||
|
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ShaderKeywords: _ALPHAPREMULTIPLY_ON
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: 3000
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Transparent
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 10
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 3
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _UVSec: 0
|
||||||
|
- _ZWrite: 0
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
10
Project Undercover/Assets/Materials/Half-Transparent UI.mat.meta
Executable file
10
Project Undercover/Assets/Materials/Half-Transparent UI.mat.meta
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c70f4e59a2e942a4c9dd52c4b1980eee
|
||||||
|
timeCreated: 1511804697
|
||||||
|
licenseType: Free
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -75,4 +75,6 @@ MonoBehaviour:
|
||||||
- GuardCaughtNPCRPC
|
- GuardCaughtNPCRPC
|
||||||
- ReplaceNPCWithSpyRPC
|
- ReplaceNPCWithSpyRPC
|
||||||
- ReplaceSpyRPC
|
- ReplaceSpyRPC
|
||||||
|
- CaughtAgentRPC
|
||||||
|
- CaughtIncorrectRPC
|
||||||
DisableAutoOpenWizard: 1
|
DisableAutoOpenWizard: 1
|
||||||
|
|
0
Project Undercover/Assets/Resources/ScriptableObjects/Interactions/Wave.asset
Normal file → Executable file
0
Project Undercover/Assets/Resources/ScriptableObjects/Interactions/Wave.asset
Normal file → Executable file
|
@ -145,6 +145,7 @@ MonoBehaviour:
|
||||||
NPCPrefab: {fileID: 1804278872897102, guid: 05cc23ecb8ac4b147b123c1f3a4b4744, type: 2}
|
NPCPrefab: {fileID: 1804278872897102, guid: 05cc23ecb8ac4b147b123c1f3a4b4744, type: 2}
|
||||||
cameraRigPrefab: {fileID: 1009033979625728, guid: 1764211b5690c164d82aa46fa4ec707d,
|
cameraRigPrefab: {fileID: 1009033979625728, guid: 1764211b5690c164d82aa46fa4ec707d,
|
||||||
type: 2}
|
type: 2}
|
||||||
|
missionPanel: {fileID: 1933384739}
|
||||||
numNpcs: 10
|
numNpcs: 10
|
||||||
--- !u!4 &40329370
|
--- !u!4 &40329370
|
||||||
Transform:
|
Transform:
|
||||||
|
@ -1004,7 +1005,7 @@ Prefab:
|
||||||
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
||||||
type: 2}
|
type: 2}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0
|
value: 217.19734
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 224424466063770242, guid: c67fa24334c0f364cad8798522e92116,
|
- target: {fileID: 224424466063770242, guid: c67fa24334c0f364cad8798522e92116,
|
||||||
type: 2}
|
type: 2}
|
||||||
|
@ -2092,6 +2093,150 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 6
|
m_RootOrder: 6
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &653680996
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 653680997}
|
||||||
|
- component: {fileID: 653680998}
|
||||||
|
- component: {fileID: 653680999}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: MissionTracker
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &653680997
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 653680996}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 639.5663, y: 282.21793, z: -2.141474}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 25
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &653680998
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 653680996}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 38ee639fa49fd4048877470b920e67ab, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
spyMissionLogText: {fileID: 2018902401}
|
||||||
|
guardNotificationPanel: {fileID: 1213473208}
|
||||||
|
guardNotificationText: {fileID: 658035871}
|
||||||
|
--- !u!114 &653680999
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 653680996}
|
||||||
|
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:
|
||||||
|
- {fileID: 0}
|
||||||
|
ObservedComponentsFoldoutOpen: 1
|
||||||
|
viewIdField: 8
|
||||||
|
instantiationId: 8
|
||||||
|
currentMasterID: -1
|
||||||
|
isRuntimeInstantiated: 0
|
||||||
|
--- !u!1 &658035869
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 658035870}
|
||||||
|
- component: {fileID: 658035872}
|
||||||
|
- component: {fileID: 658035871}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &658035870
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 658035869}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -528, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1213473209}
|
||||||
|
m_RootOrder: 0
|
||||||
|
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: -528, y: 0}
|
||||||
|
m_SizeDelta: {x: 160, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &658035871
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 658035869}
|
||||||
|
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: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 16
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 1
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 0
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 1
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Notification area...
|
||||||
|
--- !u!222 &658035872
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 658035869}
|
||||||
--- !u!1 &678649002
|
--- !u!1 &678649002
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -3575,7 +3720,7 @@ Prefab:
|
||||||
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
||||||
type: 2}
|
type: 2}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0
|
value: 217.19734
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 0}
|
- target: {fileID: 0}
|
||||||
propertyPath: m_Enabled
|
propertyPath: m_Enabled
|
||||||
|
@ -3852,15 +3997,48 @@ Prefab:
|
||||||
propertyPath: m_IsActive
|
propertyPath: m_IsActive
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 114606039338021622, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
propertyPath: timerText
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 1184926821}
|
||||||
|
- target: {fileID: 114606039338021622, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
propertyPath: guardScore
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 1184926820}
|
||||||
|
- target: {fileID: 114606039338021622, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
propertyPath: spyScore
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 1184926818}
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_ParentPrefab: {fileID: 100100000, guid: 2e0806d99e91f374fb64a63401c2eb5d, type: 2}
|
m_ParentPrefab: {fileID: 100100000, guid: 2e0806d99e91f374fb64a63401c2eb5d, type: 2}
|
||||||
m_IsPrefabParent: 0
|
m_IsPrefabParent: 0
|
||||||
|
--- !u!114 &1184926818 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_PrefabParentObject: {fileID: 114935328999071964, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
m_PrefabInternal: {fileID: 1184926817}
|
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
--- !u!114 &1184926819 stripped
|
--- !u!114 &1184926819 stripped
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_PrefabParentObject: {fileID: 114999102298893536, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
m_PrefabParentObject: {fileID: 114999102298893536, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
type: 2}
|
type: 2}
|
||||||
m_PrefabInternal: {fileID: 1184926817}
|
m_PrefabInternal: {fileID: 1184926817}
|
||||||
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
--- !u!114 &1184926820 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_PrefabParentObject: {fileID: 114646529127711606, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
m_PrefabInternal: {fileID: 1184926817}
|
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
--- !u!114 &1184926821 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_PrefabParentObject: {fileID: 114821309591766944, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
m_PrefabInternal: {fileID: 1184926817}
|
||||||
|
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
--- !u!1 &1186065472
|
--- !u!1 &1186065472
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -3905,6 +4083,112 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 22
|
m_RootOrder: 22
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1213473208
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1213473209}
|
||||||
|
- component: {fileID: 1213473213}
|
||||||
|
- component: {fileID: 1213473212}
|
||||||
|
- component: {fileID: 1213473211}
|
||||||
|
- component: {fileID: 1213473210}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: NotificationPanel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &1213473209
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1213473208}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: -149.5, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 658035870}
|
||||||
|
m_Father: {fileID: 2115786144}
|
||||||
|
m_RootOrder: 5
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 121}
|
||||||
|
m_SizeDelta: {x: 700, y: 5}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1213473210
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1213473208}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 0
|
||||||
|
m_VerticalFit: 2
|
||||||
|
--- !u!114 &1213473211
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1213473208}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 5
|
||||||
|
m_Right: 5
|
||||||
|
m_Top: 5
|
||||||
|
m_Bottom: 5
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_Spacing: 0
|
||||||
|
m_ChildForceExpandWidth: 1
|
||||||
|
m_ChildForceExpandHeight: 1
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
--- !u!114 &1213473212
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1213473208}
|
||||||
|
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.392}
|
||||||
|
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 &1213473213
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1213473208}
|
||||||
--- !u!1 &1244254395
|
--- !u!1 &1244254395
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -4425,7 +4709,7 @@ Prefab:
|
||||||
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
- target: {fileID: 224003334026830312, guid: c67fa24334c0f364cad8798522e92116,
|
||||||
type: 2}
|
type: 2}
|
||||||
propertyPath: m_LocalPosition.y
|
propertyPath: m_LocalPosition.y
|
||||||
value: 0
|
value: 217.19734
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 224424466063770242, guid: c67fa24334c0f364cad8798522e92116,
|
- target: {fileID: 224424466063770242, guid: c67fa24334c0f364cad8798522e92116,
|
||||||
type: 2}
|
type: 2}
|
||||||
|
@ -5528,6 +5812,112 @@ RenderTexture:
|
||||||
m_WrapW: 1
|
m_WrapW: 1
|
||||||
m_Dimension: 2
|
m_Dimension: 2
|
||||||
m_VolumeDepth: 1
|
m_VolumeDepth: 1
|
||||||
|
--- !u!1 &1933384739
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1933384740}
|
||||||
|
- component: {fileID: 1933384744}
|
||||||
|
- component: {fileID: 1933384743}
|
||||||
|
- component: {fileID: 1933384742}
|
||||||
|
- component: {fileID: 1933384741}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: MissionPanel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!224 &1933384740
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1933384739}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 528, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 2018902400}
|
||||||
|
m_Father: {fileID: 2115786144}
|
||||||
|
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: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 130, y: 100}
|
||||||
|
m_Pivot: {x: 1, y: 0.5}
|
||||||
|
--- !u!114 &1933384741
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1933384739}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_HorizontalFit: 2
|
||||||
|
m_VerticalFit: 2
|
||||||
|
--- !u!114 &1933384742
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1933384739}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 5
|
||||||
|
m_Right: 5
|
||||||
|
m_Top: 5
|
||||||
|
m_Bottom: 5
|
||||||
|
m_ChildAlignment: 0
|
||||||
|
m_Spacing: 0
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 1
|
||||||
|
m_ChildControlWidth: 0
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
--- !u!114 &1933384743
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1933384739}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 2100000, guid: a3c9ba309d7999b489463b2ebe102c8b, type: 2}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0.303}
|
||||||
|
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 &1933384744
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1933384739}
|
||||||
--- !u!1 &1946704980
|
--- !u!1 &1946704980
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -5766,6 +6156,98 @@ MeshFilter:
|
||||||
m_PrefabInternal: {fileID: 0}
|
m_PrefabInternal: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1983515228}
|
m_GameObject: {fileID: 1983515228}
|
||||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!1 &2018902399
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2018902400}
|
||||||
|
- component: {fileID: 2018902402}
|
||||||
|
- component: {fileID: 2018902401}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2018902400
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2018902399}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: -1056, y: -270.5, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 1933384740}
|
||||||
|
m_RootOrder: 0
|
||||||
|
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: -991, y: -270.5}
|
||||||
|
m_SizeDelta: {x: 180, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &2018902401
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2018902399}
|
||||||
|
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: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 14
|
||||||
|
m_FontStyle: 0
|
||||||
|
m_BestFit: 0
|
||||||
|
m_MinSize: 10
|
||||||
|
m_MaxSize: 40
|
||||||
|
m_Alignment: 0
|
||||||
|
m_AlignByGeometry: 0
|
||||||
|
m_RichText: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 1
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: 'Mission Log : _
|
||||||
|
|
||||||
|
|
||||||
|
Be Spooky at Bookshelf (COMPLETED)
|
||||||
|
|
||||||
|
|
||||||
|
Procure the Bookshelf
|
||||||
|
|
||||||
|
|
||||||
|
Kill the Duke w/ Bookshelf
|
||||||
|
|
||||||
|
|
||||||
|
Eat Bookshelf
|
||||||
|
|
||||||
|
|
||||||
|
????????
|
||||||
|
|
||||||
|
|
||||||
|
Profit'
|
||||||
|
--- !u!222 &2018902402
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2018902399}
|
||||||
--- !u!1 &2105447052
|
--- !u!1 &2105447052
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -5850,6 +6332,11 @@ Transform:
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 18
|
m_RootOrder: 18
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!224 &2115786144 stripped
|
||||||
|
RectTransform:
|
||||||
|
m_PrefabParentObject: {fileID: 224257512679546302, guid: 2e0806d99e91f374fb64a63401c2eb5d,
|
||||||
|
type: 2}
|
||||||
|
m_PrefabInternal: {fileID: 1184926817}
|
||||||
--- !u!1 &2120177222
|
--- !u!1 &2120177222
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
@ -47,6 +47,6 @@ public class Interaction : ScriptableObject
|
||||||
//--------------------------------- Result functions ---------------------------------
|
//--------------------------------- Result functions ---------------------------------
|
||||||
void SpyMissionComplete(StateController controller)
|
void SpyMissionComplete(StateController controller)
|
||||||
{
|
{
|
||||||
ScorePanelController.CompleteMission();
|
MissionTracker.Singleton.CompleteMission(this.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,6 @@ public class GuardCamera : Photon.PunBehaviour {
|
||||||
private float xRotation = 0.0f;
|
private float xRotation = 0.0f;
|
||||||
private float yRotation = 0.0f;
|
private float yRotation = 0.0f;
|
||||||
|
|
||||||
private string mName;
|
|
||||||
|
|
||||||
private List<int> mPlayers; // Photo Player IDs
|
private List<int> mPlayers; // Photo Player IDs
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
|
@ -37,9 +35,6 @@ public class GuardCamera : Photon.PunBehaviour {
|
||||||
mCamera = GetComponent<Camera>();
|
mCamera = GetComponent<Camera>();
|
||||||
mListener = GetComponent<AudioListener>();
|
mListener = GetComponent<AudioListener>();
|
||||||
|
|
||||||
// Get the name of this camera.
|
|
||||||
mName = this.name;
|
|
||||||
|
|
||||||
// Everything off by default
|
// Everything off by default
|
||||||
mSpotlight.enabled = false;
|
mSpotlight.enabled = false;
|
||||||
mCamera.enabled = false;
|
mCamera.enabled = false;
|
||||||
|
|
|
@ -166,11 +166,11 @@ public class GuardController : Photon.PunBehaviour {
|
||||||
{
|
{
|
||||||
if (hit.transform.gameObject.tag == "NPC")
|
if (hit.transform.gameObject.tag == "NPC")
|
||||||
{
|
{
|
||||||
ScorePanelController.GuardCaughtNPC();
|
MissionTracker.Singleton.CaughtIncorrect();
|
||||||
}
|
}
|
||||||
else if (hit.transform.gameObject.tag == "Spy")
|
else if (hit.transform.gameObject.tag == "Spy")
|
||||||
{
|
{
|
||||||
ScorePanelController.CaughtSpy(hit.transform.gameObject.GetPhotonView().viewID);
|
MissionTracker.Singleton.CaughtAgent(hit.transform.gameObject.GetPhotonView().viewID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,11 @@ public class GameManager : Photon.PunBehaviour {
|
||||||
|
|
||||||
public GameObject guardController;
|
public GameObject guardController;
|
||||||
public GameObject spyPrefab, NPCPrefab, cameraRigPrefab;
|
public GameObject spyPrefab, NPCPrefab, cameraRigPrefab;
|
||||||
|
|
||||||
|
public GameObject missionPanel;
|
||||||
|
|
||||||
public int numNpcs = 9;
|
public int numNpcs = 9;
|
||||||
|
|
||||||
private static GameManager _activeManager = null;
|
private static GameManager _activeManager = null;
|
||||||
|
|
||||||
public override void OnLeftRoom()
|
public override void OnLeftRoom()
|
||||||
|
@ -52,7 +56,7 @@ public class GameManager : Photon.PunBehaviour {
|
||||||
if (PersistantPlayerSettings.character == PersistantPlayerSettings.Character.Guard)
|
if (PersistantPlayerSettings.character == PersistantPlayerSettings.Character.Guard)
|
||||||
{
|
{
|
||||||
guardController.SetActive(true);
|
guardController.SetActive(true);
|
||||||
//guardPanel.SetActive(true);
|
MissionTracker.IsGuard = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -61,7 +65,8 @@ public class GameManager : Photon.PunBehaviour {
|
||||||
|
|
||||||
GameObject cameraRig = Instantiate(cameraRigPrefab, Vector3.zero, Quaternion.identity);
|
GameObject cameraRig = Instantiate(cameraRigPrefab, Vector3.zero, Quaternion.identity);
|
||||||
cameraRig.GetComponentInChildren<ThirdPersonCameraController>().SetTarget(spy.transform);
|
cameraRig.GetComponentInChildren<ThirdPersonCameraController>().SetTarget(spy.transform);
|
||||||
//spyPanel.SetActive(true);
|
|
||||||
|
missionPanel.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PhotonNetwork.isMasterClient)
|
if (PhotonNetwork.isMasterClient)
|
||||||
|
|
240
Project Undercover/Assets/Scripts/MissionTracker.cs
Executable file
240
Project Undercover/Assets/Scripts/MissionTracker.cs
Executable file
|
@ -0,0 +1,240 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class MissionTracker : Photon.PunBehaviour
|
||||||
|
{
|
||||||
|
const string COMPLETED_TEXT = "(COMPLETED) ";
|
||||||
|
const string MISSION_LOG_TEXT = "Mission Log: _";
|
||||||
|
|
||||||
|
const int MAX_GUARD_POINTS = 5;
|
||||||
|
|
||||||
|
const float GUARD_NOTIFICATION_DELAY = 5.0f;
|
||||||
|
const float GUARD_NOTIFICATION_TIME = 10.0f;
|
||||||
|
|
||||||
|
private static MissionTracker mSingleton;
|
||||||
|
|
||||||
|
public Text spyMissionLogText;
|
||||||
|
public GameObject guardNotificationPanel;
|
||||||
|
public Text guardNotificationText;
|
||||||
|
|
||||||
|
private IDictionary<string, Mission> mMissionLog; // map interaction to mission
|
||||||
|
private int mCompletedMissions;
|
||||||
|
private int mGuardPoints;
|
||||||
|
private int mGuardIncorrectGuesses;
|
||||||
|
|
||||||
|
private class Mission
|
||||||
|
{
|
||||||
|
private string mAlertText; // text shown to overseers after mission completes
|
||||||
|
private string mDescription; // description of the mission for agents
|
||||||
|
private string mName; // name of the mission, for dev identification
|
||||||
|
|
||||||
|
public string AlertText { get { return mAlertText; } }
|
||||||
|
|
||||||
|
public bool Completed { get; set; }
|
||||||
|
|
||||||
|
public string Description { get { return mDescription; } }
|
||||||
|
|
||||||
|
public string Name { get { return mName; } }
|
||||||
|
|
||||||
|
public Mission(string name, string description, string alertText)
|
||||||
|
{
|
||||||
|
mAlertText = alertText;
|
||||||
|
mDescription = description;
|
||||||
|
mName = name;
|
||||||
|
Completed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Singleton instance of the MissionTracker.
|
||||||
|
*/
|
||||||
|
public static MissionTracker Singleton { get { return mSingleton; } }
|
||||||
|
|
||||||
|
public static bool IsGuard { get; set; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guard caught a spy.
|
||||||
|
*/
|
||||||
|
public void CaughtAgent(int agentId)
|
||||||
|
{
|
||||||
|
photonView.RPC("CaughtAgentRPC", PhotonTargets.All, agentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guard caught a partygoer and must be punished.
|
||||||
|
*/
|
||||||
|
public void CaughtIncorrect()
|
||||||
|
{
|
||||||
|
photonView.RPC("CaughtIncorrectRPC", PhotonTargets.All);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Complete a mission, maybe.
|
||||||
|
*/
|
||||||
|
public void CompleteMission(string interactionName)
|
||||||
|
{
|
||||||
|
// if the interactionName is invalid, cry I guess
|
||||||
|
if (!mMissionLog.ContainsKey(interactionName))
|
||||||
|
{
|
||||||
|
Debug.Log("Invalid interactionName passed to MissionTracker: " + interactionName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// grab the mission - if it's already complete, do nothing
|
||||||
|
Mission m = mMissionLog[interactionName];
|
||||||
|
if (m.Completed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// mark it as completed, then update the score and UI
|
||||||
|
photonView.RPC("CompleteMissionRPC", PhotonTargets.All, interactionName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the MissionTracker with all missions.
|
||||||
|
*/
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
// set the singleton
|
||||||
|
if (mSingleton)
|
||||||
|
{
|
||||||
|
Debug.Log("Multiple MissionTrackers in scene - please limit to one.");
|
||||||
|
}
|
||||||
|
mSingleton = this;
|
||||||
|
|
||||||
|
// populate missions and set initial values
|
||||||
|
mMissionLog = new Dictionary<string, Mission>();
|
||||||
|
mCompletedMissions = 0;
|
||||||
|
mGuardPoints = 0;
|
||||||
|
mGuardIncorrectGuesses = 0;
|
||||||
|
|
||||||
|
mMissionLog["statue_swap"] = new Mission(
|
||||||
|
"statue_swap",
|
||||||
|
"Replace the marked statue with a bugged replica.",
|
||||||
|
"We're picking up some electromagnetic interference. " +
|
||||||
|
"Enemy forces have planted listening devices somewhere on the premises!"
|
||||||
|
);
|
||||||
|
|
||||||
|
mMissionLog["book_message"] = new Mission(
|
||||||
|
"book_message",
|
||||||
|
"Plant critical intelligence in the designated book.",
|
||||||
|
"One of the staff saw someone suspicious over by the bookcases. " +
|
||||||
|
"The enemy moves among us."
|
||||||
|
);
|
||||||
|
|
||||||
|
mMissionLog["bathroom_kill"] = new Mission(
|
||||||
|
"bathroom_kill",
|
||||||
|
"Assassinate Knight-Captain Brystol in the bathroom.",
|
||||||
|
"Our men found Knight-Captain Brystol dead in the bathroom. " +
|
||||||
|
"The enemy must be stopped!"
|
||||||
|
);
|
||||||
|
|
||||||
|
mMissionLog["npc_dance"] = new Mission(
|
||||||
|
"npc_dance",
|
||||||
|
"Dance with Duchess Castra to distract her momentarily.",
|
||||||
|
"The peace talks progress poorly. Duchess Castra keeps getting distracted on the dance floor. " +
|
||||||
|
"Could this be a strategy of our enemies?"
|
||||||
|
);
|
||||||
|
|
||||||
|
mMissionLog["pass_secret"] = new Mission(
|
||||||
|
"pass_secret",
|
||||||
|
"Trade intelligence with another spy at the party.",
|
||||||
|
"One of our staff members spotted two individuals exchanging a secret. " +
|
||||||
|
"Enemy infiltrators abound."
|
||||||
|
);
|
||||||
|
|
||||||
|
mMissionLog["spike_punch"] = new Mission(
|
||||||
|
"spike_punch",
|
||||||
|
"Lower the inhibitions of those in attendance by spiking the punch.",
|
||||||
|
"Several of our guests have become extremely intoxicated. Our catering staff insist " +
|
||||||
|
"that the punch was non-alcoholic, so we have determined that this must be the plot of " +
|
||||||
|
"enemy agents."
|
||||||
|
);
|
||||||
|
|
||||||
|
UpdateMissionLog();
|
||||||
|
StartCoroutine(DisplayNotification("Be on the lookout for enemy agents..."));
|
||||||
|
|
||||||
|
CompleteMission("statue_swap");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the Mission Log UI element.
|
||||||
|
*/
|
||||||
|
private void UpdateMissionLog()
|
||||||
|
{
|
||||||
|
string text = MISSION_LOG_TEXT;
|
||||||
|
foreach (KeyValuePair<string, Mission> pair in mMissionLog)
|
||||||
|
{
|
||||||
|
text += "\n\n";
|
||||||
|
if (pair.Value.Completed)
|
||||||
|
{
|
||||||
|
text += COMPLETED_TEXT;
|
||||||
|
}
|
||||||
|
text += pair.Value.Description;
|
||||||
|
}
|
||||||
|
spyMissionLogText.text = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region coroutines
|
||||||
|
IEnumerator DisplayNotification(string text)
|
||||||
|
{
|
||||||
|
// only display for guards...
|
||||||
|
if (!IsGuard)
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait before displaying notification
|
||||||
|
yield return new WaitForSeconds(GUARD_NOTIFICATION_DELAY);
|
||||||
|
|
||||||
|
// set the text and show the panel
|
||||||
|
guardNotificationText.text = text;
|
||||||
|
guardNotificationPanel.SetActive(true);
|
||||||
|
|
||||||
|
// hide the panel after a certain amount of time
|
||||||
|
yield return new WaitForSeconds(GUARD_NOTIFICATION_TIME);
|
||||||
|
guardNotificationPanel.SetActive(false);
|
||||||
|
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region rpc
|
||||||
|
[PunRPC]
|
||||||
|
void CompleteMissionRPC(string interactionName)
|
||||||
|
{
|
||||||
|
Mission m = mMissionLog[interactionName];
|
||||||
|
m.Completed = true;
|
||||||
|
mCompletedMissions++;
|
||||||
|
|
||||||
|
float score = mCompletedMissions + mGuardIncorrectGuesses;
|
||||||
|
ScorePanelController.Singleton.UpdateSpyScore(score / mMissionLog.Count);
|
||||||
|
|
||||||
|
StartCoroutine(DisplayNotification(m.AlertText));
|
||||||
|
UpdateMissionLog();
|
||||||
|
}
|
||||||
|
|
||||||
|
[PunRPC]
|
||||||
|
void CaughtAgentRPC(int spyId)
|
||||||
|
{
|
||||||
|
mGuardPoints++;
|
||||||
|
ScorePanelController.Singleton.UpdateGuardScore((float) mGuardPoints / MAX_GUARD_POINTS);
|
||||||
|
|
||||||
|
// 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]
|
||||||
|
void CaughtIncorrectRPC()
|
||||||
|
{
|
||||||
|
mGuardIncorrectGuesses++;
|
||||||
|
float score = mCompletedMissions + mGuardIncorrectGuesses;
|
||||||
|
ScorePanelController.Singleton.UpdateSpyScore(score / mMissionLog.Count);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
13
Project Undercover/Assets/Scripts/MissionTracker.cs.meta
Executable file
13
Project Undercover/Assets/Scripts/MissionTracker.cs.meta
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 38ee639fa49fd4048877470b920e67ab
|
||||||
|
timeCreated: 1511998806
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -6,49 +6,49 @@ using UnityEngine.UI;
|
||||||
|
|
||||||
public class ScorePanelController : Photon.PunBehaviour {
|
public class ScorePanelController : Photon.PunBehaviour {
|
||||||
|
|
||||||
public Text _timerText;
|
public Text timerText;
|
||||||
public Image _guardScore, _spyScore;
|
public Image guardScore, spyScore;
|
||||||
|
|
||||||
private int _numOfMissions = 5, _maxGuardPoints = 5;
|
private float initalScoreWidth;
|
||||||
private int _missionsComplete = 0, _numGuardPoints = 0;
|
private static ScorePanelController mSingleton;
|
||||||
private float waitBetweenMissions = 5.0f;
|
|
||||||
private bool onMissionCooldown = false;
|
|
||||||
|
|
||||||
private float _initalScoreWidth;
|
public static ScorePanelController Singleton { get { return mSingleton; } }
|
||||||
private static ScorePanelController ActivePanel;
|
|
||||||
|
|
||||||
void Start () {
|
/**
|
||||||
if (!ActivePanel)
|
* Setup the ScorePanelController.
|
||||||
ActivePanel = this;
|
*/
|
||||||
else
|
void Start()
|
||||||
Debug.LogError("Two ScorePanelControllers in the scene");
|
{
|
||||||
|
// set the singleton
|
||||||
|
if (mSingleton)
|
||||||
|
{
|
||||||
|
Debug.LogError("Two ScorePanelControllers in the scene");
|
||||||
|
}
|
||||||
|
mSingleton = this;
|
||||||
|
|
||||||
|
// start the timer update coroutine
|
||||||
StartCoroutine(TimerUpdate());
|
StartCoroutine(TimerUpdate());
|
||||||
|
|
||||||
// Initialize scorebar variables
|
// initialize scorebar variables
|
||||||
_initalScoreWidth = _spyScore.rectTransform.sizeDelta.x;
|
initalScoreWidth = spyScore.rectTransform.sizeDelta.x;
|
||||||
_spyScore.rectTransform.sizeDelta = new Vector2(-1, _spyScore.rectTransform.sizeDelta.y);
|
spyScore.rectTransform.sizeDelta = new Vector2(-1, spyScore.rectTransform.sizeDelta.y);
|
||||||
_guardScore.rectTransform.sizeDelta = new Vector2(-1, _guardScore.rectTransform.sizeDelta.y);
|
guardScore.rectTransform.sizeDelta = new Vector2(-1, guardScore.rectTransform.sizeDelta.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CompleteMission()
|
/**
|
||||||
|
* Update the score panel to reflect a new guard score
|
||||||
|
*/
|
||||||
|
public void UpdateGuardScore(float progress)
|
||||||
{
|
{
|
||||||
if (ActivePanel.onMissionCooldown)
|
StartCoroutine(IncreaseScoreBarAnimation(guardScore, progress));
|
||||||
return;
|
|
||||||
ActivePanel.photonView.RPC("CompleteMissionRPC", PhotonTargets.All);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CaughtSpy(int spyId)
|
/**
|
||||||
|
* Update the score panel to reflect a new spy score
|
||||||
|
*/
|
||||||
|
public void UpdateSpyScore(float progress)
|
||||||
{
|
{
|
||||||
if (ActivePanel.onMissionCooldown)
|
StartCoroutine(IncreaseScoreBarAnimation(spyScore, progress));
|
||||||
return;
|
|
||||||
ActivePanel.photonView.RPC("CaughtSpyRPC", PhotonTargets.All, spyId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void GuardCaughtNPC()
|
|
||||||
{
|
|
||||||
if (ActivePanel.onMissionCooldown)
|
|
||||||
return;
|
|
||||||
ActivePanel.photonView.RPC("GuardCaughtNPCRPC", PhotonTargets.All);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Coroutines
|
#region Coroutines
|
||||||
|
@ -65,7 +65,7 @@ public class ScorePanelController : Photon.PunBehaviour {
|
||||||
timeString = minutes.ToString() + ":0" + seconds.ToString();
|
timeString = minutes.ToString() + ":0" + seconds.ToString();
|
||||||
else
|
else
|
||||||
timeString = minutes.ToString() + ":" + seconds.ToString();
|
timeString = minutes.ToString() + ":" + seconds.ToString();
|
||||||
_timerText.text = timeString;
|
timerText.text = timeString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class ScorePanelController : Photon.PunBehaviour {
|
||||||
{
|
{
|
||||||
Color originalColor = scoreBar.color;
|
Color originalColor = scoreBar.color;
|
||||||
var flashCoroutine = StartCoroutine(FlashScoreBar(scoreBar));
|
var flashCoroutine = StartCoroutine(FlashScoreBar(scoreBar));
|
||||||
float targetWidth = _initalScoreWidth * progress;
|
float targetWidth = initalScoreWidth * progress;
|
||||||
float overshotWidth = targetWidth * 1.2f;
|
float overshotWidth = targetWidth * 1.2f;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
@ -92,10 +92,18 @@ public class ScorePanelController : Photon.PunBehaviour {
|
||||||
}
|
}
|
||||||
StopCoroutine(flashCoroutine);
|
StopCoroutine(flashCoroutine);
|
||||||
StartCoroutine(ResetScoreBarColor(scoreBar, originalColor));
|
StartCoroutine(ResetScoreBarColor(scoreBar, originalColor));
|
||||||
if (_numGuardPoints >= _maxGuardPoints)
|
|
||||||
photonView.RPC("ShowWinScreen", PhotonTargets.All, true);
|
if (progress >= 1.0)
|
||||||
else if (_missionsComplete >= _numOfMissions)
|
{
|
||||||
photonView.RPC("ShowWinScreen", PhotonTargets.All, false);
|
if (scoreBar == guardScore)
|
||||||
|
{
|
||||||
|
photonView.RPC("ShowWinScreen", PhotonTargets.All, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
photonView.RPC("ShowWinScreen", PhotonTargets.All, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
@ -151,48 +159,9 @@ public class ScorePanelController : Photon.PunBehaviour {
|
||||||
}
|
}
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerator MissionCooldown()
|
|
||||||
{
|
|
||||||
onMissionCooldown = true;
|
|
||||||
yield return new WaitForSeconds(waitBetweenMissions);
|
|
||||||
onMissionCooldown = false;
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PunRPC
|
#region PunRPC
|
||||||
[PunRPC]
|
|
||||||
void CompleteMissionRPC()
|
|
||||||
{
|
|
||||||
Debug.Log("Mission Completed!");
|
|
||||||
_missionsComplete++;
|
|
||||||
StartCoroutine(MissionCooldown());
|
|
||||||
StartCoroutine(IncreaseScoreBarAnimation(_spyScore, (float)_missionsComplete / _numOfMissions));
|
|
||||||
}
|
|
||||||
|
|
||||||
[PunRPC]
|
|
||||||
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]
|
|
||||||
void GuardCaughtNPCRPC()
|
|
||||||
{
|
|
||||||
Debug.Log("Guard caught an NPC! Giving points to spies!");
|
|
||||||
_missionsComplete++;
|
|
||||||
StartCoroutine(MissionCooldown());
|
|
||||||
StartCoroutine(IncreaseScoreBarAnimation(_spyScore, (float)_missionsComplete / _numOfMissions));
|
|
||||||
}
|
|
||||||
|
|
||||||
[PunRPC]
|
[PunRPC]
|
||||||
void ShowWinScreen(bool guardsOrSpies)
|
void ShowWinScreen(bool guardsOrSpies)
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue