public void AssignFacility(FacilityInfo.FacilityType facilityType) { if (facilityType == FacilityInfo.FacilityType.WorkSpace) { if (assignedWorkPoints.ContainsKey(facilityType)) { assignedWorkPoints[facilityType] = OfficeManager.instance.GetEmptyFacility(facilityType); } else { assignedWorkPoints.Add(FacilityInfo.FacilityType.WorkSpace, OfficeManager.instance.GetEmptyFacility(FacilityInfo.FacilityType.WorkSpace)); } //OfficeManager.instance.RemoveFacility(assignedWorkPoints[FacilityInfo.FacilityType.WorkSpace]); } else { if (assignedWorkPoints.ContainsKey(facilityType)) { assignedWorkPoints[facilityType] = Director.Instance.assignFacility(assignedFloor, facilityType, assignedWorkPoints[FacilityInfo.FacilityType.WorkSpace].gameObject, this); } else { assignedWorkPoints.Add(facilityType, Director.Instance.assignFacility(assignedFloor, facilityType, assignedWorkPoints[FacilityInfo.FacilityType.WorkSpace].gameObject, this)); } } if (assignedWorkPoints[facilityType] != null) { assignedWorkPoints[facilityType].employees.Add(this); } }
public Facility assignFacility(int floor, FacilityInfo.FacilityType facilityType, GameObject assignedDesk, Employee emp) { for (int i = 0; i < floors[floor].facilities.Count; i++) { if (floors[floor].facilities[i].facilityInfo.facilityType == facilityType) { if (floors[floor].facilities[i].workPoint) { if (floors[floor].facilities[i].facilityInfo.facilityType != FacilityInfo.FacilityType.WorkSpace) { return(floors[floor].facilities[i]); } else { foreach (Facility fal in floors[floor].facilities) { if (fal.facilityInfo.facilityType == FacilityInfo.FacilityType.WorkSpace && fal.employees.Count < 1) { return(fal); } } } } else { Debug.Log("broke fam"); return(null); } } } return(findClosestFacility(facilityType, assignedDesk, emp)); }
public Facility findClosestFacility(FacilityInfo.FacilityType facilityType, GameObject assignedDesk, Employee emp) { Facility best = null; float closest = Mathf.Infinity; foreach (Facility fal in OfficeGenerator.instance.getFacilities()) { Vector3 direction = fal.transform.position - assignedDesk.transform.position; float squareDistance = direction.magnitude; if (squareDistance < closest && fal.facilityInfo.facilityType == facilityType) { closest = squareDistance; best = fal; } } if (best != null) { return(best); } else { return(null); } }
public Facility GetEmptyFacility(FacilityInfo.FacilityType facilityType) { foreach (Facility facility in FacilityLists[facilityType]) { if (facility.employees.Count == 0) { return(facility); } } return(null); }
public void CutFacility() { FacilityInfo.FacilityType facilityType = facilityInfo.facilityType; Messages.instance.NewMessage("Floor " + floor.floorNo + " " + facilityInfo.facilityName + " has been cut.", Messages.MessageType.Ticker); if (facilityType != FacilityInfo.FacilityType.WorkSpace) { Messages.instance.CreateNoticeboardMessage("Floor " + floor.floorNo + " " + facilityInfo.facilityName, "Unfortunately, this facility was unable to meet our expectations and had to be temporarily closed. We hear you, but please be assured that this is for the benefit of us all."); } if (facilityInfo.facilityType != FacilityInfo.FacilityType.Empty && facilityInfo.facilityType != FacilityInfo.FacilityType.Copy) { OfficeManager.instance.RemoveFacility(this); } foreach (Floor.FacilityRow column in floor.facilityArray) { foreach (Facility facility in column.row) // loop through all the facilities on this floor { if (facility.CopyOf == this || facility == this) // if they are this facility or a copy of it, then set it to empty. { facility.facilityInfo = FacilityList.instance.GetFacilityByName("Empty"); facility.name = facility.facilityInfo.facilityName; if (facility.childObject) { Destroy(facility.childObject.gameObject); } if (facility.facilityInfo.child != null) { facility.childObject = GameObject.Instantiate(facility.facilityInfo.child, facility.transform); } } } } if (facilityType != FacilityInfo.FacilityType.Empty && facilityType != FacilityInfo.FacilityType.Copy) { if (employees.Count > 0) { for (int i = 0; i < employees.Count; i++) { employees[i].AssignFacility(facilityType); } employees.Clear(); } } }