Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ Update()

void Terraria.PopupText.Update ( int whoAmI)
inline

Definition at line 568 of file PopupText.cs.

569 {
570 if (!active)
571 {
572 return;
573 }
574 float targetScale = TargetScale;
575 alpha += (float)alphaDir * 0.01f;
576 if ((double)alpha <= 0.7)
577 {
578 alpha = 0.7f;
579 alphaDir = 1;
580 }
581 if (alpha >= 1f)
582 {
583 alpha = 1f;
584 alphaDir = -1;
585 }
586 if (expert)
587 {
588 color = new Color((byte)Main.DiscoR, (byte)Main.DiscoG, (byte)Main.DiscoB, Main.mouseTextColor);
589 }
590 else if (master)
591 {
592 color = new Color(255, (byte)(Main.masterColor * 200f), 0, Main.mouseTextColor);
593 }
594 bool flag = false;
595 Vector2 textHitbox = GetTextHitbox();
596 Rectangle rectangle = new Rectangle((int)(position.X - textHitbox.X / 2f), (int)(position.Y - textHitbox.Y / 2f), (int)textHitbox.X, (int)textHitbox.Y);
597 for (int i = 0; i < 20; i++)
598 {
599 PopupText popupText = Main.popupText[i];
600 if (!popupText.active || i == whoAmI)
601 {
602 continue;
603 }
604 Vector2 textHitbox2 = popupText.GetTextHitbox();
605 Rectangle value = new Rectangle((int)(popupText.position.X - textHitbox2.X / 2f), (int)(popupText.position.Y - textHitbox2.Y / 2f), (int)textHitbox2.X, (int)textHitbox2.Y);
606 if (rectangle.Intersects(value) && (position.Y < popupText.position.Y || (position.Y == popupText.position.Y && whoAmI < i)))
607 {
608 flag = true;
609 int num = numActive;
610 if (num > 3)
611 {
612 num = 3;
613 }
614 popupText.lifeTime = activeTime + 15 * num;
615 lifeTime = activeTime + 15 * num;
616 }
617 }
618 if (!flag)
619 {
620 velocity.Y *= 0.86f;
621 if (scale == targetScale)
622 {
623 velocity.Y *= 0.4f;
624 }
625 }
626 else if (velocity.Y > -6f)
627 {
628 velocity.Y -= 0.2f;
629 }
630 else
631 {
632 velocity.Y *= 0.86f;
633 }
634 velocity.X *= 0.93f;
636 lifeTime--;
637 if (lifeTime <= 0)
638 {
639 scale -= 0.03f * targetScale;
640 if ((double)scale < 0.1 * (double)targetScale)
641 {
642 active = false;
643 if (sonarText == whoAmI)
644 {
645 sonarText = -1;
646 }
647 }
648 lifeTime = 0;
649 }
650 else
651 {
652 if (scale < targetScale)
653 {
654 scale += 0.1f * targetScale;
655 }
656 if (scale > targetScale)
657 {
658 scale = targetScale;
659 }
660 }
661 }
static int sonarText
Definition PopupText.cs:42
static float TargetScale
Definition PopupText.cs:68
static int numActive
Definition PopupText.cs:34
Vector2 GetTextHitbox()
Definition PopupText.cs:663
static int activeTime
Definition PopupText.cs:32
bool Intersects(Rectangle value)
Definition Rectangle.cs:129

References Terraria.PopupText.active, Terraria.PopupText.activeTime, Terraria.PopupText.alpha, Terraria.PopupText.alphaDir, Terraria.PopupText.color, Terraria.Main.DiscoB, Terraria.Main.DiscoG, Terraria.Main.DiscoR, Terraria.PopupText.expert, Terraria.PopupText.GetTextHitbox(), Microsoft.Xna.Framework.Rectangle.Intersects(), Terraria.PopupText.lifeTime, Terraria.PopupText.master, Terraria.Main.masterColor, Terraria.Main.mouseTextColor, Terraria.PopupText.numActive, Terraria.Main.popupText, Terraria.PopupText.position, Terraria.PopupText.scale, Terraria.PopupText.sonarText, Terraria.PopupText.TargetScale, System.value, Terraria.PopupText.velocity, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.