Beispiel #1
0
    public static Worker Instantiate(Housing house, Vector3 position, Quaternion rotation)
    {
        var result = Instantiate(ResourceLoader.GetInstance().WorkerPrefab, position + Vector3.Scale(Random.insideUnitSphere, new Vector3(3f, 0, 3f)), rotation);

        result.House            = house;
        result.createdFromScene = false;
        PopulationManager.GetInstance().AddToWorkforce(result);
        return(result);
    }
Beispiel #2
0
 public void OnDestroy()
 {
     try {
         var resourceManager = PopulationManager.GetInstance();
         foreach (var worker in workers)
         {
             worker.SetDestination(null);
         }
         workers.Clear();
     } catch (Exception) {
     }
 }
Beispiel #3
0
 public void OnPlace()
 {
     PopulationManager.GetInstance().AddHouse(this);
     workers = PopulationManager.GetInstance().GetHomelessWorkers(capacity);
     foreach (var worker in workers)
     {
         worker.House = this;
     }
     if (nightLight != null)
     {
         nightLight.ForceOff = false;
     }
 }
Beispiel #4
0
 public void OnRemove()
 {
     PopulationManager.GetInstance().RemoveHouse(this);
     foreach (var worker in workers)
     {
         var newHome = PopulationManager.GetInstance().GetAvailableHome();
         if (newHome != null)
         {
             newHome.workers.Add(worker);
             worker.House = newHome;
         }
     }
     workers.Clear();
 }
    private void Update()
    {
        var dayCycleManager = DayCycleManager.GetInstance();

        if (dayCycleManager.Day > 2 && dayCycleManager.GetCurrentHour() == spawnHour && prevHour != spawnHour)
        {
            var randomPoint = Random.insideUnitSphere;
            FloatingText.Instantiate(populationText.transform, 1, "Worker", false, true, 1);
            Worker.Instantiate(
                PopulationManager.GetInstance().GetAvailableHome(),
                spawnpoint.position + new Vector3(randomPoint.x, 0, randomPoint.z),
                spawnpoint.rotation);
        }
        prevHour = dayCycleManager.GetCurrentHour();
    }
Beispiel #6
0
 private void OnDestroy()
 {
     if (House != null)
     {
         House.RemoveWorker(this);
     }
     if (ResourceManager.GetInstance() != null)
     {
         PopulationManager.GetInstance().RemoveFromWorkforce(this);
     }
     if (assignedLocation != null)
     {
         assignedLocation.RemoveWorker(this);
     }
 }
Beispiel #7
0
    private void Start()
    {
        DayCycleManager.GetInstance().OnStartWorkDay.AddListener(() => {
            GetComponent <Walker>().SetDestination(previousLocation.GetValueOrDefault());
        });

        DayCycleManager.GetInstance().OnEndWorkDay.AddListener(() => {
            previousLocation = GetComponent <Walker>().GetDestination();
            GetComponent <Walker>().SetDestination(House != null ? House.transform.position : WorkerSpawner.GetInstance().transform.position);
        });

        if (createdFromScene)
        {
            PopulationManager.GetInstance().AddToWorkforce(this);
        }
    }
Beispiel #8
0
 public void AddWorker()
 {
     AddWorker(PopulationManager.GetInstance().GetNearestWorker(transform.position));
 }