示例#1
0
    //Material localMat;
    // Start is called before the first frame update
    void Start()
    {
        rendertimings         = 0;
        arrowTimer            = 0f;
        missileWarningAlpha   = 0f;
        latestStatus          = invStatus.Normal;
        missileWarningPulse   = 0f;
        missileIconAltDeplete = 0f;
        missileIconIncrement  = 0f;
        visible            = true;
        IconTranslateRange = 342.5f;
        hudColors          = new hudChangingColors.hudColors(true);
        string path = "combatHud/Missiles";

        //hudType = HudType;
        //missileCapacity = MissileCapacity;
        //numMissiles = NumMissiles;
        //missilesActive = MissilesActive;
        missileIcon         = gameObject.transform.Find(path + "/MIcon").gameObject.GetComponent <Image>();
        missileDigits       = gameObject.transform.Find(path + "/MIcon/count").gameObject.GetComponent <Text>();
        missileBar          = gameObject.transform.Find(path + "/MBarBack/MBar").gameObject.GetComponent <hudEnergyBar>();
        missileWarning      = gameObject.transform.Find(path + "/MIcon/depleted").gameObject.GetComponent <Text>();
        arrowUp             = gameObject.transform.Find(path + "/MIcon/arrowUp").gameObject.GetComponent <Image>();
        arrowDown           = gameObject.transform.Find(path + "/MIcon/arrowDown").gameObject.GetComponent <Image>();
        hasArrows           = arrowUp && arrowDown;
        iconTransform       = missileIcon.transform;
        missileDigits.color = hudColors.missileDigitsFont;
        missileDigits.gameObject.GetComponent <Outline>().effectColor = hudColors.missileDigitsOutline;
        missileIcon.color = hudColors.missileIconColorInactive;
        missileBar.SetEmptyColor(hudColors.missileBarEmpty);
        missileBar.SetFilledColor(hudColors.missileBarFilled);
        missileBar.SetShadowColor(hudColors.missileBarShadow);
        missileBar.SetTesselation(1f);
        missileBar.SetMaxEnergy(5f);
        missileBar.SetFilledDrainSpeed(99f);
        missileBar.SetShadowDrainSpeed(20f);
        missileBar.SetShadowDrainDelay(0.7f);
        missileBar.SetIsAlwaysResetTimer(true);
        rIconLerp = 1f;
        missIni   = false;
        if (missileWarning)
        {
            missileWarning.color = hudColors.missileWarningFont;
            missileWarning.gameObject.GetComponent <Outline>().effectColor = hudColors.missileWarningOutline;
        }
        //localMat = new Material(missileDigits.material);
        //missileDigits.material = localMat;
        latestStatus = GetInvStatus();
    }
示例#2
0
    public void UpdateHud(float dt)
    {
        if (missileCapacity < 1)
        {
            if (missileIcon.enabled)
            {
                missileIcon.enabled = false;
            }
        }
        else
        {
            if (!missileIcon.enabled)
            {
                missileIcon.enabled = true;
            }
        }

        if (missileIconIncrement < 0f)
        {
            missileIconIncrement -= 3f * dt;
            if (missileIconIncrement <= -1f)
            {
                missileIconIncrement = 1f;
            }
        }
        else if (missileIconIncrement > 0f)
        {
            missileIconIncrement = Mathf.Max(0f, missileIconIncrement - dt);
        }

        Color addColor = hudColors.missileIconColorActive * missileIconIncrement;

        if (missileIconAltDeplete > 0f)
        {
            missileIcon.color = Color.Lerp(hudColors.missileIconColorInactive, hudColors.missileIconDepleteAlt, missileIconAltDeplete) + addColor;
        }
        else
        {
            if (hasAlt)
            {
                if (numMissiles > 5)
                {
                    missileIcon.color = hudColors.missileIconColorCanAlt + addColor;
                }
                else
                {
                    missileIcon.color = hudColors.missileIconColorNoAlt + addColor;
                }
            }
            else
            {
                // Color lerp2Test = Color.Lerp(hudColors.missileIconColorInactive, hudColors.missileIconColorActive, iconLerp);
                if (missilesActive)
                {
                    missileIcon.color = hudColors.missileIconColorActive + addColor;
                }
                //missileIcon.color = lerp2Test + addColor;
                else
                {
                    missileIcon.color = hudColors.missileIconColorInactive + addColor;
                }
                //missileIcon.color = lerp1Test + addColor;
                //if (iconLerp < 1 && missilesActive) {
                //missileIcon.color = lerp2Test + addColor;
                //    if (rIconLerp != 0)
                //        rIconLerp = 0;
                //}
                //if (!missilesActive)
                //{
                //    getReverseIconLerp();
                //    Color lerp1Test = Color.Lerp(hudColors.missileIconColorActive, hudColors.missileIconColorInactive, rIconLerp);
                //    missileIcon.color = lerp1Test + addColor;
                //}
            }
        }


        missileIconAltDeplete = Mathf.Max(0f, missileIconAltDeplete - dt);

        missileBar.SetMaxEnergy(missileCapacity);
        missileBar.SetCurrEnergy(numMissiles, hudEnergyBar.ESetMode.Normal);

        missileIcon.transform.localPosition = new Vector3(0f, numMissiles * IconTranslateRange / (float)missileCapacity, 0f);
        if (hasArrows)
        {
            if (arrowTimer > 0f)
            {
                arrowTimer = Mathf.Max(0f, arrowTimer - dt);
                Color color = hudColors.missileIconColorActive;
                color.a      *= arrowTimer / 0.5f;
                arrowUp.color = color;
                if (!arrowUp.enabled)
                {
                    arrowUp.enabled = true;
                }
                if (arrowDown.enabled)
                {
                    arrowDown.enabled = false;
                }
            }
            else if (arrowTimer < 0f)
            {
                arrowTimer = Mathf.Min(0f, arrowTimer + dt);
                Color color = hudColors.missileIconColorActive;
                color.a        *= -arrowTimer / 0.5f;
                arrowDown.color = color;
                if (!arrowDown.enabled)
                {
                    arrowDown.enabled = true;
                }
                if (arrowUp.enabled)
                {
                    arrowUp.enabled = false;
                }
            }
            else
            {
                //if (arrowUp.enabled || arrowDown.enabled)
                //{
                arrowDown.enabled = false;
                arrowUp.enabled   = false;
                //}
            }
        }

        if (missileWarning)
        {
            invStatus curStatus = GetInvStatus();
            if (curStatus != latestStatus)
            {
                string tString = "";
                switch (curStatus)
                {
                case invStatus.Warning:
                    tString = "Missiles Low";
                    break;

                case invStatus.Depleted:
                    tString = "Depleted";
                    break;

                default:
                    break;
                }
                missileWarning.text = tString;
                if (latestStatus == invStatus.Normal && curStatus == invStatus.Warning)
                {
                    //play missile warning
                    missileWarningPulse = 7f;
                }
                else if (curStatus == invStatus.Depleted)
                {
                    //play missile warning
                    missileWarningPulse = 7f;
                }
                latestStatus = curStatus;
            }

            missileWarningPulse = Mathf.Max(0f, missileWarningPulse - dt);
            float warnPulse = Mathf.Min(missileWarningPulse, 1f);
            debugWarnPulse = warnPulse;
            if (latestStatus != invStatus.Normal)
            {
                missileWarningAlpha = Mathf.Min(missileWarningAlpha + 2f * dt, 1f);
            }
            else
            {
                missileWarningAlpha = Mathf.Max(0f, missileWarningAlpha - 2f * dt);
            }
            debugMissileWarningAlpha = missileWarningAlpha;
            float tmp = Mathf.Abs(fmod(GetSecondsMod900(), 0.5f));
            debugTMP = tmp;
            if (tmp < 0.25f)
            {
                tmp = tmp / 0.25f;
            }
            else
            {
                tmp = (0.5f - tmp) / 0.25f;
            }

            Color color = Color.white;
            color.a = missileWarningAlpha * tmp * warnPulse;
            missileWarning.material.color = color;
            if (missileWarning.material.color.a > 0)
            {
                //if (!missileWarning.enabled)
                missileWarning.enabled = true;
            }
            else
            {
                //if (missileWarning.enabled)
                missileWarning.enabled = false;
            }
        }
        missileBar.updateBar(dt);
        missileBar.Draw();
    }