Advertisement
Zidinjo

RangeTower

May 16th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.46 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4.  
  5. public class TrapTower : Tower {
  6.  
  7.     private float flSlowBetweenNextSlow = 1.0f;
  8.     private float flSlowTimer = 0.0f;
  9.     private Collider[] col;
  10.     private GameObject[] gaAllTowers;
  11.     private float iRangeSize = 30;
  12.     private float flDmgUpgradeTowerInRange = 2.0f;
  13.     private bool bFirstRun = true;
  14.     private List<GameObject> liTowerInRange;
  15.  
  16.     void Awake(){
  17.         enTypeTower = EnumCollection.TypeTower.SlowTrap;
  18.         liTowerInRange = new List<GameObject> ();
  19.     }
  20.  
  21.     private void OnDrawGizmos(){
  22.         Gizmos.color = Color.yellow;
  23.         Gizmos.DrawWireSphere (transform.position, 100);
  24.     }
  25.     void SearchingTowerAwake(){
  26.         col = Physics.OverlapSphere (this.transform.position, 50);
  27.         foreach (Collider peter in col) {
  28.             if (peter.gameObject.tag == "Tower") {
  29.                 if (peter.gameObject.GetComponent<ShootTower> ().GetIsInRange () == EnumCollection.RangeCondition.No) {
  30.                     peter.GetComponent<ShootTower> ().SetDamageByTower (flDmgUpgradeTowerInRange);
  31.                     peter.GetComponent<ShootTower> ().SetIsInRange (EnumCollection.RangeCondition.Yes);
  32.                     liTowerInRange.Add (peter.gameObject);
  33.                 }
  34.             }
  35.         }
  36.         Debug.Log (liTowerInRange.Count);
  37.     }
  38.  
  39.     void SetBoxColliderSize(float iSize){
  40.         BoxCollider boSize;
  41.         Transform trRange;
  42.         trRange = this.gameObject.transform.FindChild ("r_Range");
  43.         boSize = trRange.gameObject.GetComponent<BoxCollider> ();
  44.         boSize.size = new Vector3 (iSize, 1, iSize);
  45.     }
  46.  
  47.  
  48.     void OnCollisionStay(Collision col){
  49.         CheckTrapVersion (col.gameObject);
  50.     }
  51.  
  52.     void OnCollisionEnter(Collision col) {
  53.         CheckTrapVersion (col.gameObject);
  54.         TowerRangeEnter (col.gameObject);
  55.     }
  56.  
  57.     void OnCollisionExit(Collision col) {
  58.         CheckTrapVersion (col.gameObject);
  59.         if (CheckCollisionTitan(col.gameObject)) {
  60.             if (enTypeTower == EnumCollection.TypeTower.SlowTrap) {
  61.                 col.gameObject.GetComponent<Titans> ().SetSlowTime (false);
  62.             }
  63.         }
  64.     }
  65.  
  66.     void Update(){
  67.         flFireCoolDown += Time.deltaTime;
  68.         if (this.getTypeTower () == EnumCollection.TypeTower.RangeTrap && bFirstRun ) {
  69.             liTowerInRange = new List<GameObject> ();
  70.             //SearchingTowerAwake ();
  71.             SetBoxColliderSize (iRangeSize);
  72.             bFirstRun = false;
  73.         }
  74.     }
  75.  
  76.  
  77.     public void TowerRangeEnter(GameObject gaTower){
  78.         if (liTowerInRange != null) {
  79.             if (CheckCollisionTower (gaTower)) {
  80.                 if (gaTower.GetComponent<ShootTower> ().GetIsInRange () == EnumCollection.RangeCondition.No) {
  81.                     Debug.Log ("Tower Upgrade");
  82.                     gaTower.GetComponent<ShootTower> ().SetDamageByTower (flDmgUpgradeTowerInRange);
  83.                     gaTower.GetComponent<ShootTower> ().SetIsInRange (EnumCollection.RangeCondition.Yes);
  84.                     liTowerInRange.Add (gaTower.gameObject);
  85.  
  86.                     Debug.Log (liTowerInRange.Count);
  87.                 }
  88.             }
  89.         }
  90.     }
  91.  
  92.     public void TowerRangeExist(GameObject gaTower){
  93.             if (gaTower.GetComponent<ShootTower> ().GetIsInRange () == EnumCollection.RangeCondition.Yes) {
  94.                 Debug.Log ("Tower Leave");
  95.                 gaTower.GetComponent<ShootTower> ().SetLoseDamageByTower (flDmgUpgradeTowerInRange);
  96.                 gaTower.GetComponent<ShootTower> ().SetIsInRange (EnumCollection.RangeCondition.No);
  97.             }
  98.     }
  99.  
  100.     bool CheckCollisionTitan(GameObject gaTitan){
  101.         if (gaTitan.tag == "Titans")
  102.             return true;
  103.         else
  104.             return false;
  105.     }
  106.  
  107.     bool CheckCollisionTower(GameObject gaTower){
  108.         if (gaTower.tag == "Tower")
  109.             return true;
  110.         else
  111.             return false;
  112.     }
  113.  
  114.     public void GetDestroyed(){
  115.         Debug.Log ("ON DEYTROY " + liTowerInRange.Count);
  116.         foreach(GameObject gaTower in liTowerInRange){
  117.             TowerRangeExist (gaTower);
  118.         }
  119.         liTowerInRange.Clear ();
  120.         Destroy (this.gameObject);
  121.     }
  122.        
  123.  
  124. //      col = Physics.OverlapSphere (this.gameObject.transform.position, iRangeSize);
  125. //
  126. //      if (bFirstRun) {
  127. //          foreach (Collider coTower in col) {
  128. //              if (coTower.gameObject.tag == "Tower") {
  129. //                  coTower.gameObject.GetComponent<ShootTower> ().SetDamageByTower (flDmgUpgradeTowerInRange);
  130. //                  coTower.gameObject.GetComponent<ShootTower> ().SetIsInRange(EnumCollection.RangeCondition.Yes);
  131. //                  liTowerInRange.Add (coTower.gameObject);
  132. //              }
  133. //              bFirstRun = false;
  134. //          }
  135. //      } else {
  136. //          foreach(GameObject gaTower in liTowerInRange){
  137. //                  foreach (Collider coTower in col) {
  138. //                      if (coTower.gameObject.tag == "Tower") {
  139. //                          if (gaTower.GetInstanceID() == coTower.gameObject.GetInstanceID()) {
  140. //                              bNichtGefunden = true;
  141. //                          }
  142. //                      }
  143. //                      if (!bNichtGefunden) {
  144. //                          gaTower.GetComponent<ShootTower> ().SetLoseDamageByTower (flDmgUpgradeTowerInRange);
  145. //                          gaTower.GetComponent<ShootTower> ().SetIsInRange (EnumCollection.RangeCondition.No);
  146. //                      } else {
  147. //                          foreach (Collider coTower2 in col) {
  148. //                              if (coTower2.gameObject.tag == "Tower") {
  149. //                                  foreach (GameObject gaTower2 in liTowerInRange) {
  150. //                                      if (coTower2.gameObject.GetInstanceID () == gaTower2.GetInstanceID ()) {
  151. //                                          bNeuerGefunden = true;
  152. //                                      }
  153. //
  154. //                                      if (!bNeuerGefunden) {
  155. //                                          coTower2.gameObject.GetComponent<ShootTower> ().SetDamageByTower (flDmgUpgradeTowerInRange);
  156. //                                          coTower2.gameObject.GetComponent<ShootTower> ().SetIsInRange (EnumCollection.RangeCondition.Yes);
  157. //                                      }
  158. //                                  }
  159. //                                  bNeuerGefunden = false;
  160. //                              }
  161. //                          }
  162. //                      }
  163. //                  }
  164. //              bNichtGefunden = false;
  165. //          }
  166. //      }
  167.  
  168. //      liTowerInRange.Clear ();
  169. //      foreach (Collider coTower in col) {
  170. //          if (coTower.gameObject.tag == "Tower") {
  171. //              liTowerInRange.Add (coTower.gameObject);
  172. //          }
  173. //      }
  174. //
  175. //  }
  176.  
  177.     void CheckTrapVersion(GameObject gaTitan){
  178.         if (CheckCollisionTitan(gaTitan)) {
  179.             switch (enTypeTower) {
  180.             case EnumCollection.TypeTower.FireTrap:
  181.                 StartFireTrap (gaTitan);
  182.                 break;
  183.             case EnumCollection.TypeTower.SlowTrap:
  184.                 StartSlowTrap (gaTitan);
  185.                 break;
  186.             }
  187.         }
  188.     }
  189.  
  190.     void StartFireTrap(GameObject gaTitan){
  191.         if (flFireCoolDown >= flFireTrapDmgTime) {
  192.             gaTitan.GetComponent<Titans> ().getHit (flFireTrapDmgPerSecond, this);
  193.             flFireCoolDown = 0.0f;
  194.         }
  195.     }
  196.  
  197.     void StartSlowTrap(GameObject gaTitan){
  198.         if (!gaTitan.GetComponent<Titans> ().GetSlowTime () && gaTitan.GetComponent<Titans>().GetRestSlow()) {
  199.             gaTitan.GetComponent<Titans> ().getHit (0.0f, this);
  200.         } else if (gaTitan.GetComponent<Titans> ().GetSlowTime ()){
  201.             flSlowTimer += Time.deltaTime;
  202.             if (flSlowTimer >= flSlowBetweenNextSlow) {
  203.                 gaTitan.GetComponent<Titans> ().SetSlowTime (false);
  204.                 gaTitan.GetComponent<Titans> ().SetRestSlow (true);
  205.                 flSlowTimer = 0.0f;
  206.             }
  207.         }
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement