Placido_GDD

Drone Manager

Nov 14th, 2021 (edited)
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.43 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class DroneManager : MonoBehaviour
  6. {
  7.     public GameObject dronePrefab;
  8.     public GameObject atkTarget;
  9.     Vector3 targetCurrentPos;
  10.     public int maxDrones;
  11.     DroneManager droneManage;
  12.     DroneMove droneMove;
  13.     DroneHealth droneHealth;
  14.     DroneAtk droneAtk;
  15.     public string droneOwner;
  16.     public string droneTag;
  17.     public int droneLayer;
  18.  
  19.     ShipHealth ship_HP;
  20.     public List<GameObject> drones = new List<GameObject>();
  21.     public int droneCount;
  22.     int droneID;
  23.     public float droneRange; //how far can the carrier release it's drones
  24.     public float distFromEnemy; //distance between player and Enemy Target.
  25.    
  26.     public GameObject selectedTarget;
  27.     GameObject tempHolder;
  28.     public GameObject thisObj;
  29.     float droneSpawn_Delay;
  30.     protected float distanceFromTgt;
  31.     protected bool generateRndPoints;
  32.  
  33.    
  34.  
  35.  
  36.     // Start is called before the first frame update
  37.     void Start()
  38.     {
  39.         //targetCurrentPos = atkTarget.position;
  40.         thisObj = this.gameObject;
  41.         ship_HP = GetComponent<ShipHealth>();
  42.         generateRndPoints = true;
  43.  
  44.         //InvokeRepeating("RndPointCheck", 0.0f, 0.3f);
  45.     }
  46.  
  47.     // Update is called once per frame  
  48.     void LateUpdate()
  49.     {
  50.         TargetDestroyed();
  51.         if (atkTarget != null)
  52.         {
  53.             UpdateTargetPos();
  54.  
  55.  
  56.         }
  57.         if (selectedTarget != null)
  58.         {
  59.             CheckEnemyDist();
  60.         }
  61.         if (ship_HP.isDead == true)
  62.         {
  63.             foreach (GameObject drone in drones)
  64.             {
  65.                 drones.Remove(drone);
  66.                 Destroy(drone);
  67.             }
  68.         }
  69.     }
  70.  
  71.     public void RndPointCheck()
  72.     {
  73.         if (generateRndPoints == true)
  74.         {
  75.             generateRndPoints = false;
  76.             //Debug.Log("Generate Points:" + generateRndPoints);
  77.         }
  78.         else if (generateRndPoints == false)
  79.         {
  80.             generateRndPoints = true;
  81.             //Debug.Log("Generate Points:" + generateRndPoints);
  82.         }
  83.     }
  84.     public void CheckEnemyDist()
  85.     {
  86.         distFromEnemy = Vector3.Distance(thisObj.transform.position, selectedTarget.transform.position);
  87.     }
  88.     public void DeleteInterceptors(GameObject dronetbd)
  89.     {
  90.         drones.Remove(dronetbd);
  91.     }
  92.  
  93.    
  94.  
  95.     void TargetDestroyed()
  96.     {
  97.         if (selectedTarget == null)
  98.         {
  99.             if (drones.Count > 0)
  100.             {
  101.                 RecallInterceptors();
  102.             }
  103.            
  104.         }
  105.     }
  106.     public void UpdateTarget(Transform newTarget)
  107.     {
  108.         foreach (GameObject drone in drones)
  109.         {
  110.             droneMove = drone.GetComponent<DroneMove>();
  111.             droneMove.target = newTarget;
  112.             droneMove.newTarget = true;
  113.         }
  114.         targetCurrentPos = atkTarget.transform.position;
  115.     }
  116.     public void UpdateTargetPos()
  117.     {
  118.         if (atkTarget.transform.position != targetCurrentPos)
  119.         {
  120.             foreach (GameObject drone in drones)
  121.             {
  122.                 droneMove = drone.GetComponent<DroneMove>();
  123.                 droneMove.GenerateRndPoints();
  124.  
  125.             }
  126.             targetCurrentPos = atkTarget.transform.position;
  127.         }
  128.     }
  129.     public void SpawnInterceptors()
  130.     {
  131.         while (drones.Count < maxDrones)
  132.         {
  133.             tempHolder = Instantiate(dronePrefab, this.transform.position, this.transform.rotation);
  134.             tempHolder.gameObject.tag = droneOwner;
  135.             tempHolder.layer = droneLayer;
  136.             drones.Add(tempHolder);
  137.             droneMove = tempHolder.GetComponent<DroneMove>();
  138.             droneMove.target = atkTarget.transform;
  139.             droneMove.carrier = thisObj;
  140.             droneMove.obj_Tag = droneOwner;
  141.             droneHealth = tempHolder.GetComponent<DroneHealth>();
  142.             droneHealth.droneManage = thisObj.GetComponent<DroneManager>();
  143.             droneAtk = tempHolder.GetComponent<DroneAtk>();
  144.             droneAtk.targetedObj = atkTarget;
  145.             droneAtk.droneManager = thisObj.GetComponent<DroneManager>();
  146.             droneAtk.atkTag = atkTarget.tag;
  147.         }
  148.  
  149.     }
  150.     public void RecallInterceptors()
  151.     {
  152.  
  153.         foreach (GameObject drone in drones)
  154.         {
  155.             droneMove = drone.GetComponent<DroneMove>();
  156.             droneMove.target = null;
  157.         }
  158.  
  159.  
  160.     }
  161. }
Add Comment
Please, Sign In to add comment