Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.SceneManagement;
  6. using UnityEngine.UI;
  7.  
  8. public class Battle : MonoBehaviour
  9. {
  10. public static EnemyData[] Enemies;
  11. public static readonly PlayerEntity playerEntity = new PlayerEntity();
  12. public static bool won = true;
  13. private static bool playerDead = false;
  14. public static string worldObjName = "";
  15.  
  16. private static float animTime = 0;
  17.  
  18. static Battle()
  19. {
  20. playerEntity.InitStats("Dragon", 1);
  21. }
  22.  
  23. public Transform PlayerTransform;
  24. public Transform[] EnemiesTransforms3 = new Transform[3];
  25. public Transform[] EnemiesTransforms2 = new Transform[2];
  26. private static Transform[] enemyTransforms;
  27.  
  28. public SlidingBar healthBar;
  29.  
  30. public GameObject PlayerPrefab;
  31. public GameObject MagePrefab;
  32. public GameObject PrincePrefab;
  33.  
  34. private static int enemiesAmount;
  35.  
  36. private static List<GameObject> enemiesGameObjects = new List<GameObject>();
  37. private static List<EnemyBattleScript> enemiesScripts = new List<EnemyBattleScript>();
  38. private static bool[] alive;
  39.  
  40. public static BattleUIController battleUIScript;
  41. public GameObject battleUIObject;
  42.  
  43. public static PlayerBattleScript playerScript;
  44. public static GameObject playerObject;
  45.  
  46. private static bool playerTurn = true;
  47.  
  48. private int enemyIndex = 0;
  49. // Use this for initialization
  50. void Start()
  51. {
  52. won = false;
  53.  
  54. enemiesAmount = Enemies.Length;
  55. GameObject player = Instantiate(PlayerPrefab, PlayerTransform);
  56. playerObject = player;
  57. playerScript = player.GetComponent<PlayerBattleScript>();
  58. switch(enemiesAmount)
  59. {
  60. case 1:
  61. case 3:
  62. enemyTransforms = EnemiesTransforms3;
  63. break;
  64. case 2:
  65. enemyTransforms = EnemiesTransforms2;
  66. break;
  67. default:
  68. throw new Exception("EnemiesAmount invalid");
  69. }
  70.  
  71. for(int i = 0; i < enemiesAmount; i++)
  72. {
  73. GameObject enemy;
  74. if(Enemies[i].MageType == MageType.Prince)
  75. {
  76. enemy = Instantiate(PrincePrefab, enemyTransforms[i]);
  77. }
  78. else
  79. {
  80. enemy = Instantiate(MagePrefab, enemyTransforms[i]);
  81. }
  82. EnemyBattleScript enemyScript = enemy.GetComponent<EnemyBattleScript>();
  83. enemiesGameObjects.Add(enemy);
  84. enemiesScripts.Add(enemyScript);
  85. }
  86.  
  87. for(int i = 0; i < enemiesAmount; i++)
  88. {
  89. GameObject enemy = enemiesGameObjects[i];
  90. EnemyBattleScript enemyScript = enemy.GetComponent<EnemyBattleScript>();
  91. Canvas canvas = enemyTransforms[i].gameObject.GetComponentInChildren<Canvas>();
  92. SlidingBar slidingBar = enemyTransforms[i].gameObject.GetComponentInChildren<SlidingBar>();
  93. enemyScript.Init(Enemies[i].Level, Enemies[i].MageType, enemiesGameObjects.ToArray(), slidingBar, canvas);
  94. }
  95.  
  96. alive = new bool[enemiesAmount];
  97. for(int i = 0; i < alive.Length; i++)
  98. {
  99. alive[i] = true;
  100. }
  101.  
  102. playerScript.SetEnemiesGameObjects(enemiesGameObjects.ToArray());
  103.  
  104. battleUIScript = battleUIObject.GetComponent<BattleUIController> ();
  105. battleUIScript.SetBattleScript (playerScript);
  106.  
  107. battleUIScript.SetEnemiesGameObjects (enemiesGameObjects.ToArray());
  108.  
  109. healthBar.SetMaxValue(playerEntity.Stats.MaxHealth);
  110. }
  111.  
  112. void Update()
  113. {
  114. healthBar.SetCurValue(playerEntity.CurrentHealth);
  115.  
  116. bool allDead = true;
  117. foreach(bool var in alive)
  118. {
  119. if(var)
  120. {
  121. allDead = false;
  122. }
  123. }
  124.  
  125. if(playerTurn)
  126. {
  127. if(playerScript.Turn())
  128. {
  129. playerTurn = false;
  130. battleUIScript.UpdateUI ();
  131. }
  132. }
  133. else
  134. {
  135. bool done;
  136. if(alive[enemyIndex])
  137. {
  138. GameObject enemy = enemiesGameObjects[enemyIndex];
  139. EnemyBattleScript enemyScript = enemy.GetComponent<EnemyBattleScript>();
  140. done = enemyScript.Turn();
  141. battleUIScript.EnemiesTurn();
  142. }
  143. else
  144. {
  145. done = true;
  146. }
  147. if(done)
  148. {
  149. enemyIndex++;
  150. if(enemyIndex >= enemiesGameObjects.Count)
  151. {
  152. battleUIScript.ResetTurn();
  153. playerTurn = true;
  154. enemyIndex = 0;
  155. }
  156. }
  157. }
  158.  
  159. if(playerDead)
  160. {
  161. float animTime = playerScript.Disable();
  162. if(animTime > 0)
  163. {
  164. enemiesGameObjects.Clear();
  165. enemiesScripts.Clear();
  166. battleUIScript.BattleResults(false);
  167. Invoke("MoveToForestScene", animTime);
  168. }
  169. }
  170.  
  171. if(allDead)
  172. {
  173. int sum = 0;
  174. foreach(GameObject enemy in enemiesGameObjects)
  175. {
  176. EnemyBattleScript enemyScript = enemy.GetComponent<EnemyBattleScript>();
  177. sum += enemyScript.entity.Stats.Experience;
  178. }
  179.  
  180. playerEntity.CurrentExperience += sum;
  181. while(playerEntity.CurrentExperience >= playerEntity.Stats.Experience)
  182. {
  183. int remainder = playerEntity.CurrentExperience - playerEntity.Stats.Experience;
  184. playerEntity.LevelUp();
  185. playerEntity.CurrentExperience += remainder;
  186. }
  187. enemiesGameObjects.Clear();
  188. enemiesScripts.Clear();
  189. won = true;
  190.  
  191. SaveLoadController.data.CurrHealth = playerEntity.CurrentHealth;
  192. SaveLoadController.data.CurrExp = playerEntity.CurrentExperience;
  193. SaveLoadController.data.CurrLevel = playerEntity.Stats.Level;
  194. battleUIScript.BattleResults (true);
  195.  
  196. Invoke("MoveToForestScene", animTime);
  197. }
  198. }
  199.  
  200. private void MoveToForestScene()
  201. {
  202. SceneManager.LoadScene("forest_scene");
  203. }
  204.  
  205. public static void KillEnemy(GameObject enemy)
  206. {
  207. if(enemy == playerObject)
  208. {
  209. playerDead = true;
  210. }
  211.  
  212. for(int i = 0; i < enemiesGameObjects.Count; i++)
  213. {
  214. GameObject enemyObj = enemiesGameObjects[i];
  215. if(enemy == enemyObj)
  216. {
  217. animTime = enemyObj.GetComponent<EnemyBattleScript>().Disable ();
  218.  
  219. alive[i] = false;
  220. for(int j = 0; j < enemiesScripts.Count; j++)
  221. {
  222. if(alive[j])
  223. {
  224. enemiesScripts[j].Kill(i);
  225. }
  226. }
  227. break;
  228. }
  229. }
  230. }
  231.  
  232. public static int[] GetAliveIndices()
  233. {
  234. List<int> ret = new List<int>();
  235. for(int i = 0; i < alive.Length; i++)
  236. {
  237. if(alive[i])
  238. {
  239. ret.Add(i);
  240. }
  241. }
  242.  
  243. return ret.ToArray();
  244. }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement