Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
    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);
        }
    }
Exemplo n.º 4
0
    public Facility GetEmptyFacility(FacilityInfo.FacilityType facilityType)
    {
        foreach (Facility facility in FacilityLists[facilityType])
        {
            if (facility.employees.Count == 0)
            {
                return(facility);
            }
        }

        return(null);
    }
Exemplo n.º 5
0
    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();
            }
        }
    }