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); }
public void OnDestroy() { try { var resourceManager = PopulationManager.GetInstance(); foreach (var worker in workers) { worker.SetDestination(null); } workers.Clear(); } catch (Exception) { } }
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; } }
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(); }
private void OnDestroy() { if (House != null) { House.RemoveWorker(this); } if (ResourceManager.GetInstance() != null) { PopulationManager.GetInstance().RemoveFromWorkforce(this); } if (assignedLocation != null) { assignedLocation.RemoveWorker(this); } }
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); } }
public void AddWorker() { AddWorker(PopulationManager.GetInstance().GetNearestWorker(transform.position)); }