예제 #1
0
        public static void OnChange(Entity sender, Int32PropertyChangeEventArgs args)
        {
            var hero = sender as Hero;

            if (hero == null)
            {
                return;
            }
            if (hero.Team != Members.MyHero.Team || hero.IsIllusion())
            {
                return;
            }
            if (args.PropertyName != "m_iTaggedAsVisibleByTeam")
            {
                return;
            }
            DelayAction.Add(50, () =>
            {
                var visible = args.NewValue == 0x1E;
                var player  = hero.Player;
                RectangleStruct st;
                if (!RectDictionary.TryGetValue(player, out st))
                {
                    var newRect =
                        new Rectangle(
                            new Vector2((float)HudInfoNew.GetTopPanelSizeX(hero), (float)HUDInfo.GetTopPanelSizeY(hero)),
                            Clr)
                    {
                        Position = HudInfoNew.GetTopPanelPosition(hero)
                    };
                    st = new RectangleStruct(newRect, eventArgs => newRect.Render());
                    RectDictionary.Add(player, st);
                    //Log.Info($"Init new player {player.Name}({hero.GetRealName()})");
                }
                var rect = st.Rect;
                var draw = st.Draw;
                if (visible)
                {
                    if (IsEnable)
                    {
                        if (!rect.IsInitialized)
                        {
                            rect.Initialize();
                            rect.Color          = Clr; //new ColorBGRA(0,155,255,10);
                            Drawing.OnEndScene += draw;
                        }
                    }
                }
                else
                {
                    if (rect.IsInitialized)
                    {
                        rect.Dispose();
                        Drawing.OnEndScene -= draw;
                    }
                }
            });
        }
예제 #2
0
 public static Vector2 GetTopPanelPosition(Hero v)
 {
     try
     {
         Vector2 pos;
         if (Members.TopPanelPostiion.TryGetValue(v.StoredName(), out pos))
         {
             return(pos);
         }
         Members.TopPanelPostiion.Add(v.StoredName(), HudInfoNew.GetTopPanelPosition(v));
         //Members.TopPanelPostiion.Add(v.StoredName(), HUDInfo.GetTopPanelPosition(v));
         return(HudInfoNew.GetTopPanelPosition(v));
         //return HUDInfo.GetTopPanelPosition(v);
     }
     catch (Exception e)
     {
         Printer.Print("GetTopPanelPosition: " + e.Message);
         return(new Vector2());
     }
 }