示例#1
0
 public int GetTextWidth()
 {
     CheckExists();
     return((int)UnitaleUtil.CalcTextWidth(this));
 }
示例#2
0
    // Update is called once per frame
    private void Update()
    {
        // do not update the attack UI if the ATTACKING state is frozen
        if (UIController.instance.frozenState != UIController.UIState.PAUSE)
        {
            return;
        }

        if (shakeInProgress)
        {
            int shakeidx = (int)Mathf.Floor(shakeTimer * shakeX.Length / totalShakeTime);
            if (Damage > 0 && shakeIndex != shakeidx)
            {
                if (shakeIndex != shakeidx && shakeIndex >= shakeX.Length)
                {
                    shakeIndex = shakeX.Length - 1;
                }
                shakeIndex = shakeidx;
                Vector2 localEnePos = enemy.GetComponent <RectTransform>().anchoredPosition; // get local position to do the shake
                enemy.GetComponent <RectTransform>().anchoredPosition = new Vector2(localEnePos.x + shakeX[shakeIndex], localEnePos.y);

                /*#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
                 *  if (StaticInits.ENCOUNTER == "01 - Two monsters" && StaticInits.MODFOLDER == "Examples")
                 *      Misc.MoveWindow(shakeX[shakeIndex] * 2, 0);
                 #endif*/
            }
            if (shakeTimer < 1.5f)
            {
                damageTextRt.localPosition = new Vector2(damageTextRt.localPosition.x, enemy.offsets[2].y + 40 * (2 + Mathf.Sin(shakeTimer * Mathf.PI * 0.75f)));
            }
            shakeTimer += Time.deltaTime;
            if (shakeTimer >= totalShakeTime)
            {
                shakeInProgress = false;
            }
        }
        else if ((slice.animcomplete && !slice.img.GetComponent <KeyframeCollection>().enabled&& stopped && !showedup) || needAgain)
        {
            needAgain = true;
            if (!wait1frame)
            {
                wait1frame = true;
                slice.StopAnimation();
                slice.Set("empty");
                enemy.TryCall("BeforeDamageValues", new[] { DynValue.NewNumber(Damage) });
                if (Damage > 0)
                {
                    AudioSource aSrc = GetComponent <AudioSource>();
                    aSrc.clip = AudioClipRegistry.GetSound("hitsound");
                    aSrc.Play();
                }
                // set damage numbers and positioning
                string damageTextStr;
                if (Damage == 0)
                {
                    if (enemy.DefenseMissText == null)
                    {
                        damageTextStr = "[color:c0c0c0]MISS";
                    }
                    else
                    {
                        damageTextStr = "[color:c0c0c0]" + enemy.DefenseMissText;
                    }
                }
                else if (Damage > 0)
                {
                    damageTextStr = "[color:ff0000]" + Damage;
                }
                else
                {
                    damageTextStr = "[color:00ff00]" + Damage;
                }
                damageTextRt.localPosition = new Vector3(0, 0, 0);
                damageText.SetText(new TextMessage(damageTextStr, false, true));
                damageTextRt.localPosition = new Vector3(-UnitaleUtil.CalcTextWidth(damageText) / 2 + enemy.offsets[2].x, 40 + enemy.offsets[2].y);

                // initiate lifebar and set lerp to its new health value
                if (Damage != 0)
                {
                    int newHP = enemy.HP - Damage;
                    try {
                        lifeBar.GetComponent <RectTransform>().localPosition = new Vector2(enemy.offsets[2].x, 20 + enemy.offsets[2].y);
                        lifeBar.GetComponent <RectTransform>().sizeDelta     = new Vector2(enemy.GetComponent <RectTransform>().rect.width, 13);
                        lifeBar.whenDamageValue = enemy.GetComponent <RectTransform>().rect.width;
                        lifeBar.setInstant(enemy.HP < 0 ? 0 : enemy.HP / (float)enemy.MaxHP);
                        lifeBar.setLerp(enemy.HP / (float)enemy.MaxHP, newHP / (float)enemy.MaxHP);
                        lifeBar.setVisible(true);
                        enemy.doDamage(Damage);
                    } catch { return; }
                }
                enemy.HandleAttack(Damage);
            }
            else
            {
                // finally, damage enemy and call its attack handler in case you wanna stop music on death or something
                shakeInProgress = true;
                waitingToFade   = true;
                needAgain       = false;
                totalShakeTime  = shakeX.Length * (1.5f / 8.0f);
                showedup        = true;
            }
        }
        else if (!slice.animcomplete)
        {
            slice.img.gameObject.GetComponent <RectTransform>().sizeDelta = new Vector2(slice.img.GetComponent <Image>().sprite.rect.width, slice.img.GetComponent <Image>().sprite.rect.height);
        }
    }