Example #1
0
        //Update
        public void Update()
        {
            if (MyEntity == null || MyEntity.IsDisposed())
            {
                if (!EntityWindow.IsHidden)
                {
                    EntityWindow.Hide();
                }

                return;
            }
            else
            {
                if (EntityWindow.IsHidden)
                {
                    EntityWindow.Show();
                }
            }

            if (PlayerBox)
            {
                if (EntityWindow.IsHidden)
                {
                    EntityWindow.Show();
                }

                if (MyEntity.IsDisposed())
                {
                    Dispose();
                }
            }

            if (!mInitialized)
            {
                SetupEntityElements();
                UpdateSpellStatus();
                if (EntityType == EntityTypes.Event)
                {
                    EventDesc.AddText(((Event)MyEntity).Desc, Color.White);
                    EventDesc.SizeToChildren(false, true);
                }

                mInitialized = true;
            }

            //Time since this window was last updated (for bar animations)
            var elapsedTime = (Globals.System.GetTimeMs() - mLastUpdateTime) / 1000.0f;

            //Update the event/entity face.
            UpdateImage();

            IsHidden = true;
            if (EntityType != EntityTypes.Event)
            {
                EntityName.SetText(MyEntity.Name);
                UpdateLevel();
                UpdateMap();
                UpdateHpBar(elapsedTime);
                UpdateMpBar(elapsedTime);
                IsHidden = false;
            }
            else
            {
                if (!EntityNameAndLevel.IsHidden)
                {
                    EntityNameAndLevel.Text = MyEntity.Name;
                }
            }

            //If player draw exp bar
            if (PlayerBox && MyEntity == Globals.Me)
            {
                UpdateXpBar(elapsedTime);
            }

            if (MyEntity.GetEntityType() == EntityTypes.Player && MyEntity != Globals.Me)
            {
                if (MyEntity.Vital[(int)Vitals.Health] <= 0)
                {
                    TradeLabel.Hide();
                    PartyLabel.Hide();
                    FriendLabel.Hide();
                }
                else if (TradeLabel.IsHidden || PartyLabel.IsHidden || FriendLabel.IsHidden)
                {
                    TradeLabel.Show();
                    PartyLabel.Show();
                    FriendLabel.Show();
                }
            }

            if (UpdateStatuses)
            {
                UpdateSpellStatus();
                UpdateStatuses = false;
            }

            foreach (var itm in mActiveStatuses)
            {
                itm.Value.Update();
            }

            mLastUpdateTime = Globals.System.GetTimeMs();
        }