Files
grow-ai-unity/Assets/Scripts/Work/Workplace.cs
2022-03-06 16:04:18 +01:00

82 lines
2.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Workplace : MonoBehaviour
{
[Header("Workplace")]
[SerializeField] int space = 1;
[SerializeField] float salary = 4.5f;
[SerializeField] List<Person> workers = new List<Person>();
[SerializeField] List<Person> activeWorkers = new List<Person>(); // Workers which are currently present and working
[SerializeField] Company company;
public void SetCompany(Company _company) => company = _company;
public void AddActiveWorker(Person worker) => activeWorkers.Add(worker);
public void RemoveActiveWorker(Person worker) => activeWorkers.Remove(worker);
void Awake()
{
company.AddWorkplace(this);
}
void Start()
{
TimeManager.OnHourUpdate += OnHourUpdate;
}
void OnTriggerEnter2D(Collider2D collision)
{
if(collision.GetComponent<Person>() != null)
{
if (workers.Contains(collision.GetComponent<Person>()))
{
if (!activeWorkers.Contains(collision.GetComponent<Person>()))
{
activeWorkers.Add(collision.GetComponent<Person>());
}
}
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.GetComponent<Person>() != null)
{
if (activeWorkers.Contains(collision.GetComponent<Person>()))
{
activeWorkers.Remove(collision.GetComponent<Person>());
}
}
}
void OnHourUpdate()
{
EconomyManager.instance.AddMoney(salary * activeWorkers.Count);
}
public bool AddWorker(Person worker) // True: Worker is added - False: no enough space for worker
{
if (!workers.Contains(worker) && workers.Count < space)
{
workers.Add(worker);
Debug.Log(worker.GetFullName() + " now works");
return true;
}
else
return false;
}
public void RemoveWorker(Person worker)
{
if (workers.Contains(worker))
{
workers.Remove(worker);
Debug.Log(worker.GetFullName() + " does not work anymore");
}
}
}