mirror of
				https://github.com/DerTyp7/grow-ai-unity.git
				synced 2025-10-30 21:07:09 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| 
 | |
| public class Workplace : MonoBehaviour
 | |
| {
 | |
|     [Header("Workplace")]
 | |
|     [SerializeField] int space = 4;
 | |
|     [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);
 | |
|     public int GetAvaiableSpace() => space - workers.Count;
 | |
| 
 | |
|     void Awake()
 | |
|     {
 | |
|         company.AddWorkplace(this);
 | |
|         company.GetCity().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");
 | |
|         }
 | |
|     }
 | |
| }
 | 
