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; } } }); }
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()); } }