Advertisement
maus234

WorldPoolManager

Apr 14th, 2024
644
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.17 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Archer;
  5. using Farmer;
  6. using SwordsMan;
  7. public class WorldPoolManager : MonoBehaviour
  8. {
  9.     private GameObject safeZone;
  10.     private GameObject searchZone;
  11.     private GameObject CampFireZone;
  12.     private GameObject field;
  13.     public List<ArcherController> archers = new List<ArcherController>();
  14.     public List<BuilderController> builders = new List<BuilderController>();
  15.     public List<FarmerController> farmers = new List<FarmerController>();
  16.     public List<SwordsmanController> swordsmans = new List<SwordsmanController>();
  17.     private void OnTriggerEnter2D(Collider2D other)
  18.     {
  19.         // Use switch statement to handle different collider tags
  20.         switch (other.tag)
  21.         {
  22.             case "Field":
  23.                 Debug.Log("Field found!");
  24.                 field = other.gameObject;
  25.                 UpdateFieldLocation();
  26.                 break;
  27.             case "SafeZone":
  28.                 Debug.Log("SafeZone find!");
  29.                 safeZone = other.gameObject;
  30.                 UpdateSafeZones();
  31.                 break;
  32.  
  33.             case "SearchZone":
  34.                 Debug.Log("SearchZone find!");
  35.                 searchZone = other.gameObject;
  36.                 UpdateArcherSearchZones();
  37.                 break;
  38.  
  39.             case "CampFire":
  40.                 Debug.Log("Camp Fire find!");
  41.                 CampFireZone = other.gameObject;
  42.                 UpdateFarmerCampFireZone();
  43.                 break;
  44.  
  45.             case "Archer":
  46.                 Debug.Log("Archer entered");
  47.                 ArcherController archer = other.GetComponent<ArcherController>();
  48.                 if (archer != null && !archers.Contains(archer))
  49.                 {
  50.                     RegisterArcher(archer);
  51.                 }
  52.                 break;
  53.  
  54.             case "Builder":
  55.                 BuilderController builder = other.GetComponent<BuilderController>();
  56.                 if (builder != null && !builders.Contains(builder))
  57.                 {
  58.                     RegisterBuilder(builder);
  59.                 }
  60.                 break;
  61.  
  62.             case "Farmer":
  63.                 FarmerController farmer = other.GetComponent<FarmerController>();
  64.                 if (farmer != null && !farmers.Contains(farmer))
  65.                 {
  66.                     RegisterFarmer(farmer);
  67.                 }
  68.                 break;
  69.  
  70.             case "Swordsman":
  71.                 SwordsmanController swordsman = other.GetComponent<SwordsmanController>();
  72.                 if (swordsman != null && !swordsmans.Contains(swordsman))
  73.                 {
  74.                     RegisterSwordsman(swordsman);
  75.                 }
  76.                 break;
  77.  
  78.             default:
  79.                 // Optionally handle the case where no known tag is matched
  80.                 //Debug.Log("Unknown tag detected: " + other.tag);
  81.                 break;
  82.         }
  83.     }
  84.  
  85.  
  86.     private void OnTriggerExit2D(Collider2D other)
  87.     {
  88.         if (other.CompareTag("Archer"))
  89.         {
  90.             Debug.Log("Archer exited");
  91.             ArcherController archer = other.GetComponent<ArcherController>();
  92.             if (archer != null)
  93.             {
  94.                 DeregisterArcher(archer);
  95.             }
  96.         }
  97.     }
  98.     private void RegisterBuilder(BuilderController builder)
  99.     {
  100.         builders.Add(builder);
  101.         builder.SetSafeZone(safeZone); // Assuming SetSafeZone(GameObject safeZone) is implemented in BuilderController
  102.     }
  103.     private void UpdateBuildersSafeZone() // Add this method
  104.     {
  105.         foreach (BuilderController builder in builders)
  106.         {
  107.             builder.SetSafeZone(safeZone);
  108.         }
  109.     }
  110.     private void RegisterSwordsman(SwordsmanController swardman)
  111.     {
  112.         swordsmans.Add(swardman);
  113.     }
  114.     private void RegisterFarmer(FarmerController farmer)
  115.     {
  116.         farmers.Add(farmer);
  117.     }
  118.  
  119.     private void RegisterArcher(ArcherController archer)
  120.     {
  121.         archers.Add(archer);
  122.         archer.AssignPool(this);
  123.     }
  124.  
  125.     private void DeregisterArcher(Archer.ArcherController archer)
  126.     {
  127.         archers.Remove(archer);
  128.         archer.AssignPool(null);
  129.     }
  130.  
  131.     private void UpdateSafeZones()
  132.     {
  133.         foreach (ArcherController archer in archers)
  134.         {
  135.             archer.SetSafeZone(safeZone);
  136.         }
  137.         foreach (SwordsmanController swordsman in swordsmans)
  138.         {
  139.             swordsman.SetSafeZone(safeZone);
  140.         }
  141.     }
  142.  
  143.     private void UpdateArcherSearchZones()
  144.     {
  145.         foreach (Archer.ArcherController archer in archers)
  146.         {
  147.             archer.SetSearchZone(searchZone);
  148.         }
  149.     }
  150.  
  151.  
  152.     private void UpdateFarmerCampFireZone()
  153.     {
  154.         foreach (FarmerController farmer in farmers)
  155.         {
  156.             farmer.SetCampFireZone(CampFireZone);
  157.         }
  158.     }
  159.  
  160.     private void UpdateFieldLocation()
  161.     {
  162.         if (farmers.Count > 0 && field != null)
  163.         {
  164.             // Sending field coordinates to the first farmer in the list
  165.             farmers[0].SetField(field);
  166.             Debug.Log($"Field coordinates sent to Farmer: {field.transform.position}");
  167.         }
  168.     }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement