Advertisement
EagleOwle

UI_ModulEnergy

Jan 23rd, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.90 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.UI;
  4.  
  5. public class UI_ModulEnergy : UI_ModulBasys, IPointerClickHandler
  6. {
  7.     public GameObject radialImage;
  8.     public bool startCrossfade;
  9.     private float fadeSpeed = 0.5f;
  10.     private float t;
  11.     private bool fadeDown = true;
  12.  
  13.     private float reactorPower = 0;//Энергия, варабатываемая реактором
  14.     public float energyMaxValue;//Максимально возможное количество энергии
  15.  
  16.     public float energyReloadQuoueDefault;
  17.     public float energyReloadQuoueSpeed;//Процент потребления энергии
  18.     public float energyReloadQuoueArmore;//Процент потребления энергии
  19.     public float energyReloadQuoueWeapon;//Процент потребления энергии
  20.     public float energyReloadQuoueCustom;//Процент потребления энергии
  21.  
  22.     public float EnergyPower;//Текущее количество энергии
  23.     private float energyReloadQuoue; //Процент потребления энергии
  24.  
  25.     //Проверяем, что бы количество энергии не превышало максимально разрешенное
  26.     public float EnergyReloadQuoue
  27.     {
  28.         get { return energyReloadQuoue; }
  29.  
  30.         set
  31.         {
  32.             if (value > 0)
  33.             {
  34.                 energyReloadQuoue = Mathf.Clamp(value, 0, (energyMaxValue * 100) / reactorPower);
  35.             }
  36.             else
  37.             {
  38.                 energyReloadQuoue = 0;
  39.             }
  40.         }
  41.     }
  42.  
  43.     public void OnEnable()
  44.     {
  45.         if (image == null)
  46.         {
  47.             UI_Controller.Instance.highlightColorInitial.a = 0.5f;
  48.  
  49.             image = GetComponent<Image>();
  50.             modulText = GetComponentInChildren<Text>();
  51.             radialImage = transform.FindChild("RadialSliderImage").gameObject;
  52.             radialImage.SetActive(false);
  53.         }
  54.  
  55.         modulController = FindModul();//Находим соотв. модуль(ModulBasys modulController) на персонаже
  56.  
  57.         if (modulController == null)
  58.         {
  59.             gameObject.SetActive(false);
  60.             return;
  61.         }
  62.         else
  63.         {
  64.             if (modulController.useEnergy == false)
  65.             {
  66.                 gameObject.SetActive(false);
  67.                 return;
  68.             }
  69.         }
  70.        
  71.         message = "";
  72.         image.color = UI_Controller.Instance.normalColor;
  73.  
  74.         SetControllerValue();//Заполняем локальные переменные
  75.         startCrossfade = false;
  76.  
  77.         SendMessageUpwards("ListAdd", this);//Добавляем в UI_EnergyConfig.ui_ModulEnergyList себя
  78.     }
  79.  
  80.     void Update()
  81.     {
  82.         //Получаем энергию, варабатываемую реактором
  83.         if (modulController != null)
  84.         {
  85.             reactorPower = modulController.modulReactor.power;
  86.         }
  87.  
  88.         message = EnergyReloadQuoue.ToString("f1") + "%";// + " / " + EnergyPower.ToString("f1");
  89.         SetText(message);//Рисуем текущий процент потребления энергии
  90.         Crossfade();//Мигание иконки
  91.         CalculatePower();//Расчет энергии исходя из текущего процента
  92.     }
  93.  
  94.     public void ApplyChange()
  95.     {
  96.         modulController.energyReloadQuoue = energyReloadQuoue;
  97.     }
  98.  
  99.     private void SetControllerValue()//Заполняем локальные переменные
  100.     {
  101.         if (modulController != null)
  102.         {
  103.             //Если максимально разрешонное количество энергии больше, чем вырабатывает реактор
  104.             //Максимально разрешонное количество делаем равным энергии реактора
  105.             if (modulController.energyMaxValue > reactorPower)
  106.             {
  107.                 energyMaxValue = reactorPower;
  108.             }
  109.             else
  110.             {
  111.                 energyMaxValue = modulController.energyMaxValue;
  112.             }
  113.  
  114.             EnergyReloadQuoue = modulController.energyReloadQuoue;
  115.         }
  116.     }
  117.  
  118.     public void OnPointerClick(PointerEventData eventData)//Нажали мышкой на обьект
  119.     {
  120.         startCrossfade = true;//Разрешаем мигать ;)
  121.         SendMessageUpwards("SelectChangeModul", this);//Сообщаем в класс UI_EnergyConfig что выбран обьект с данным экземпляром класса
  122.  
  123.         UI_Controller.Instance.currentMouseOverGameObject = null;//К делу не относятся
  124.         EventSystem.current.SetSelectedGameObject(null);//К делу не относятся
  125.     }
  126.  
  127.     private void Crossfade()//Мигание иконки
  128.     {
  129.         if (startCrossfade == true)
  130.         {
  131.             if (t <= 1f)
  132.             {
  133.                 t += Time.deltaTime / fadeSpeed;
  134.                 if (fadeDown)
  135.                 {
  136.                     image.color = Color.Lerp(UI_Controller.Instance.highlightColorInitial, UI_Controller.Instance.highlightColorFadeTo, t);
  137.                 }
  138.                 else
  139.                 {
  140.                     image.color = Color.Lerp(UI_Controller.Instance.highlightColorFadeTo, UI_Controller.Instance.highlightColorInitial, t);
  141.                 }
  142.             }
  143.             else
  144.             {
  145.                 t = 0;
  146.                 fadeDown = !fadeDown;
  147.             }
  148.         }
  149.         else
  150.         {
  151.             //image.color = UI_Controller.Instance.normalColor;
  152.         }
  153.     }
  154.  
  155.     public void CalculatePower()//Расчет энергии исходя из текущего процента
  156.     {
  157.         EnergyPower = (modulController.modulReactor.power / 100) * energyReloadQuoue;
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement