Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- public class UI_ModulEnergy : UI_ModulBasys, IPointerClickHandler
- {
- public GameObject radialImage;
- public bool startCrossfade;
- private float fadeSpeed = 0.5f;
- private float t;
- private bool fadeDown = true;
- private float reactorPower = 0;//Энергия, варабатываемая реактором
- public float energyMaxValue;//Максимально возможное количество энергии
- public float energyReloadQuoueDefault;
- public float energyReloadQuoueSpeed;//Процент потребления энергии
- public float energyReloadQuoueArmore;//Процент потребления энергии
- public float energyReloadQuoueWeapon;//Процент потребления энергии
- public float energyReloadQuoueCustom;//Процент потребления энергии
- public float EnergyPower;//Текущее количество энергии
- private float energyReloadQuoue; //Процент потребления энергии
- //Проверяем, что бы количество энергии не превышало максимально разрешенное
- public float EnergyReloadQuoue
- {
- get { return energyReloadQuoue; }
- set
- {
- if (value > 0)
- {
- energyReloadQuoue = Mathf.Clamp(value, 0, (energyMaxValue * 100) / reactorPower);
- }
- else
- {
- energyReloadQuoue = 0;
- }
- }
- }
- public void OnEnable()
- {
- if (image == null)
- {
- UI_Controller.Instance.highlightColorInitial.a = 0.5f;
- image = GetComponent<Image>();
- modulText = GetComponentInChildren<Text>();
- radialImage = transform.FindChild("RadialSliderImage").gameObject;
- radialImage.SetActive(false);
- }
- modulController = FindModul();//Находим соотв. модуль(ModulBasys modulController) на персонаже
- if (modulController == null)
- {
- gameObject.SetActive(false);
- return;
- }
- else
- {
- if (modulController.useEnergy == false)
- {
- gameObject.SetActive(false);
- return;
- }
- }
- message = "";
- image.color = UI_Controller.Instance.normalColor;
- SetControllerValue();//Заполняем локальные переменные
- startCrossfade = false;
- SendMessageUpwards("ListAdd", this);//Добавляем в UI_EnergyConfig.ui_ModulEnergyList себя
- }
- void Update()
- {
- //Получаем энергию, варабатываемую реактором
- if (modulController != null)
- {
- reactorPower = modulController.modulReactor.power;
- }
- message = EnergyReloadQuoue.ToString("f1") + "%";// + " / " + EnergyPower.ToString("f1");
- SetText(message);//Рисуем текущий процент потребления энергии
- Crossfade();//Мигание иконки
- CalculatePower();//Расчет энергии исходя из текущего процента
- }
- public void ApplyChange()
- {
- modulController.energyReloadQuoue = energyReloadQuoue;
- }
- private void SetControllerValue()//Заполняем локальные переменные
- {
- if (modulController != null)
- {
- //Если максимально разрешонное количество энергии больше, чем вырабатывает реактор
- //Максимально разрешонное количество делаем равным энергии реактора
- if (modulController.energyMaxValue > reactorPower)
- {
- energyMaxValue = reactorPower;
- }
- else
- {
- energyMaxValue = modulController.energyMaxValue;
- }
- EnergyReloadQuoue = modulController.energyReloadQuoue;
- }
- }
- public void OnPointerClick(PointerEventData eventData)//Нажали мышкой на обьект
- {
- startCrossfade = true;//Разрешаем мигать ;)
- SendMessageUpwards("SelectChangeModul", this);//Сообщаем в класс UI_EnergyConfig что выбран обьект с данным экземпляром класса
- UI_Controller.Instance.currentMouseOverGameObject = null;//К делу не относятся
- EventSystem.current.SetSelectedGameObject(null);//К делу не относятся
- }
- private void Crossfade()//Мигание иконки
- {
- if (startCrossfade == true)
- {
- if (t <= 1f)
- {
- t += Time.deltaTime / fadeSpeed;
- if (fadeDown)
- {
- image.color = Color.Lerp(UI_Controller.Instance.highlightColorInitial, UI_Controller.Instance.highlightColorFadeTo, t);
- }
- else
- {
- image.color = Color.Lerp(UI_Controller.Instance.highlightColorFadeTo, UI_Controller.Instance.highlightColorInitial, t);
- }
- }
- else
- {
- t = 0;
- fadeDown = !fadeDown;
- }
- }
- else
- {
- //image.color = UI_Controller.Instance.normalColor;
- }
- }
- public void CalculatePower()//Расчет энергии исходя из текущего процента
- {
- EnergyPower = (modulController.modulReactor.power / 100) * energyReloadQuoue;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement