@@ -134,6 +134,24 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &171744
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 4
m_Component:
- 4: {fileID: 470630}
- 212: {fileID: 21219954}
- 114: {fileID: 11406464}
- 114: {fileID: 11490646}
m_Layer: 5
m_Name: Dialog
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &177078
GameObject:
m_ObjectHideFlags: 1
@@ -275,6 +293,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 459922}
- {fileID: 470630}
m_Father: {fileID: 0}
m_RootOrder: 0
--- !u!4 &459922
@@ -316,6 +335,18 @@ Transform:
- {fileID: 464372}
m_Father: {fileID: 438848}
m_RootOrder: 2
--- !u!4 &470630
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 171744}
m_LocalRotation: {x: 0.3652435, y: 0.31641048, z: -0.1335661, w: 0.8652409}
m_LocalPosition: {x: 0, y: 2, z: 0}
m_LocalScale: {x: 0.25, y: 0.25, z: 0.25}
m_Children: []
m_Father: {fileID: 455714}
m_RootOrder: 1
--- !u!4 &471242
Transform:
m_ObjectHideFlags: 1
@@ -559,6 +590,17 @@ MonoBehaviour:
m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
delegates: []
--- !u!114 &11406464
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 171744}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ac73b8f480dd454caa57a20070af9af, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &11413018
MonoBehaviour:
m_ObjectHideFlags: 1
@@ -629,6 +671,17 @@ MonoBehaviour:
frequency: 10
amplitude: 0.05
swing: 2
--- !u!114 &11490646
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 171744}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2bd6f44057a115645b378d773e9b66d7, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!136 &13682742
CapsuleCollider:
m_ObjectHideFlags: 1
@@ -662,6 +715,36 @@ NavMeshAgent:
m_BaseOffset: 0
m_WalkableMask: 4294967295
m_ObstacleAvoidanceType: 4
--- !u!212 &21219954
SpriteRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 171744}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 0feabc2bc20b391458abd0f1bc51b93f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
@@ -0,0 +1,138 @@
%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: defaultMat
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 5
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
data:
first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _OcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
data:
first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
data:
first:
name: _SrcBlend
second: 1
data:
first:
name: _DstBlend
second: 0
data:
first:
name: _Cutoff
second: 0.5
data:
first:
name: _Parallax
second: 0.02
data:
first:
name: _ZWrite
second: 1
data:
first:
name: _Glossiness
second: 0.5
data:
first:
name: _BumpScale
second: 1
data:
first:
name: _OcclusionStrength
second: 1
data:
first:
name: _DetailNormalMapScale
second: 1
data:
first:
name: _UVSec
second: 0
data:
first:
name: _Mode
second: 0
data:
first:
name: _Metallic
second: 0
m_Colors:
data:
first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
data:
first:
name: _Color
second: {r: 0.8, g: 0.8, b: 0.8, a: 1}

Large diffs are not rendered by default.

@@ -24,7 +24,7 @@ RenderSettings:
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_AmbientMode: 1
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
@@ -389,13 +389,13 @@ Prefab:
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 152434, guid: cf63d91736e21144c83fff684951c9ba, type: 2}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: cf63d91736e21144c83fff684951c9ba, type: 2}
m_IsPrefabParent: 0
--- !u!4 &593892732 stripped
Transform:
m_PrefabParentObject: {fileID: 455714, guid: cf63d91736e21144c83fff684951c9ba, type: 2}
m_PrefabInternal: {fileID: 593892731}
--- !u!1 &611168856
GameObject:
m_ObjectHideFlags: 0
@@ -646,76 +646,6 @@ Prefab:
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 3f0f2ad9b14988a449a41d1545bc2b47, type: 3}
m_IsPrefabParent: 0
--- !u!1 &1005793927
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 4
m_Component:
- 4: {fileID: 1005793928}
- 212: {fileID: 1005793930}
- 114: {fileID: 1005793929}
m_Layer: 5
m_Name: Dialog
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1005793928
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1005793927}
m_LocalRotation: {x: 0.36524352, y: 0.31641045, z: -0.13356608, w: 0.8652409}
m_LocalPosition: {x: 0, y: 2, z: 0}
m_LocalScale: {x: 0.25, y: 0.25, z: 0.25}
m_Children: []
m_Father: {fileID: 593892732}
m_RootOrder: 1
--- !u!114 &1005793929
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1005793927}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7ac73b8f480dd454caa57a20070af9af, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!212 &1005793930
SpriteRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1005793927}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_UseLightProbes: 0
m_ReflectionProbeUsage: 0
m_ProbeAnchor: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 0feabc2bc20b391458abd0f1bc51b93f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
--- !u!4 &1022386891 stripped
Transform:
m_PrefabParentObject: {fileID: 426660, guid: b297b2dfb331eb64aa86854a25eafd48, type: 2}
@@ -37,9 +37,10 @@ public static class CatalogExtensions {
return array[Random.Range(0, array.Length)];
}

public static T GetByName<T>(this T[] array, string name) {
public static T GetByName<T>(this T[] array, string name) where T : UnityEngine.Object
{
for (int i = 0; i < array.Length; i++) {
if (array[i].ToString()==name) {
if (array[i].name.Equals(name)) {
return array[i];
}
}
@@ -1,24 +1,39 @@
using UnityEngine;
using System.Collections;
using System;

public class Bathroom : MonoBehaviour
public class Bathroom : MonoBehaviour, IStaffAssignation
{
public float breakChance = 0.25f;
public float poopTime = 5;
public float repairTime = 4;
public Transform enterPosition;
public Transform poopPosition;
public WaitingQueue waitingQueue;
public MeshFilter WCMeshFilter;
public MeshFilter ClosedWC;
public MeshFilter OpenWC;

public MeshRenderer puddle;

[HideInInspector]
public Jammer jammer;

private bool _isBroken;
public bool isBroken
{
get { return _isBroken; }
set
{
_isBroken = value;
puddle.enabled = value;
}
}

void Awake()
{
GameManager.instance.bathrooms.Add(this);
WCMeshFilter.mesh = OpenWC.sharedMesh;
isBroken = false;
}

public bool CanEnterJammer()
@@ -48,8 +63,16 @@ private void OnJammerReady()

public void Process()
{
// Enter the bathroom
jammer.walker.MoveTo(poopPosition.position, false, () => { StartCoroutine(UseBathroom()); });
if (!isBroken)
{
// Enter the bathroom
jammer.HideDialog();
jammer.walker.MoveTo(poopPosition.position, false, () => { StartCoroutine(UseBathroom()); });
}
else
{
jammer.LoadDialog(DialogType.WC);
}
}

public IEnumerator UseBathroom()
@@ -66,6 +89,9 @@ public IEnumerator UseBathroom()

public void ExitBathroom()
{
if (UnityEngine.Random.value < breakChance)
this.isBroken = true;

WCMeshFilter.mesh = OpenWC.sharedMesh;
jammer.walker.MoveTo(enterPosition.position, false, () => { FreeBathroom(); });
}
@@ -84,4 +110,62 @@ void OnTriggerExit(Collider other)
AddJammer(waitingQueue.GetNextJammer());
}
}

#region IStaffAssignation Implementation

[HideInInspector]
public Staff assignedStaff;

public Transform staffPosition;

public void AssignStaff(Staff newStaff)
{
if (this.assignedStaff != null)
return;

newStaff.Assign(this);
assignedStaff = newStaff;
assignedStaff.walker.MoveTo(staffPosition.position, false, OnStaffReady);
}

public void UnassignStaff()
{
StopAllCoroutines();
assignedStaff = null;
}

public void OnStaffReady()
{
assignedStaff.walker.MoveTo(poopPosition.position, false, () => { StartCoroutine(FixCoroutine()); });
}

public void OnClick()
{
if (GameManager.instance.selectedStaff != null)
{
this.AssignStaff(GameManager.instance.selectedStaff);
GameManager.instance.DeselectStaff();
}
}

#endregion

IEnumerator FixCoroutine()
{
WCMeshFilter.mesh = ClosedWC.sharedMesh;

yield return new WaitForSeconds(repairTime);

WCMeshFilter.mesh = OpenWC.sharedMesh;

assignedStaff.walker.MoveTo(staffPosition.position, false, FinishRepairs);
}

private void FinishRepairs()
{
isBroken = false;
assignedStaff.Unassign();
if (jammer != null)
Process();
}
}
@@ -63,6 +63,7 @@ public void OnStaffReady()
public void OnJammerReady()
{
jammer.walker.TurnTo(staffPosition.position);
jammer.LoadDialog(DialogType.Ticket);
jammerReady = true;
if (staffReady) Process();

@@ -77,6 +78,7 @@ IEnumerator ProcessCoroutine()
{
yield return new WaitForSeconds(CheckInTime);
jammerReady = false;
jammer.HideDialog();
jammer.FindFreeTable();
jammer = null;
if (!waitingQueue.isEmpty)
@@ -83,7 +83,7 @@ public void Process()
}
else
{
throw new System.Exception("No more pizza!!!!");
jammer.LoadDialog(DialogType.Food);
}
}

@@ -158,9 +158,11 @@ IEnumerator GoBuyFood()
}

private void RestockFood()
{
{
bool needHelp = foodRations == 0;
foodRations = MaxFoodRations;
assignedStaff.Unassign();
Process();
if (jammer != null && needHelp)
Process();
}
}
@@ -42,6 +42,11 @@ void Awake()
GetComponentInChildren<JammerDialog>().LoadDialog(dialogType);
}

public void HideDialog()
{
GetComponentInChildren<JammerDialog>().HideDialog();
}

public void AssignTable(Table newTable)
{
assignedTable = newTable;
@@ -6,11 +6,11 @@ public class TrollStaff : OnSiteProblem
{
public override void OnActivate()
{
Debug.Log("TollStaff Activated");
jammer.LoadDialog(DialogType.Troll);
}

public override void OnDeactivate()
{
Debug.Log("TrollStaff Deactivated");
jammer.HideDialog();
}
}
@@ -7,11 +7,11 @@ public class WiFiProblem : OnSiteProblem

public override void OnActivate()
{
Debug.Log("WiFi Problem Activated");
jammer.LoadDialog(DialogType.Wifi);
}

public override void OnDeactivate()
{
Debug.Log("WiFi Problem Deactivated");
jammer.HideDialog();
}
}