Beispiel #1
0
        private void timerTargeting_Tick(object sender, EventArgs e)
        {
            // exit quickly if Debug tab not displayed
            if (tabControl1.SelectedTab != tabDebug)
            {
                return;
            }

            SendMessage(lblPoi.Handle, WM_SETREDRAW, false, (IntPtr)0);
            SendMessage(lblTargets.Handle, WM_SETREDRAW, false, (IntPtr)0);
            SendMessage(lblTankToStayNear.Handle, WM_SETREDRAW, false, (IntPtr)0);
            SendMessage(lblTargets.Handle, WM_SETREDRAW, false, (IntPtr)0);
            SendMessage(lblAuxTargets.Handle, WM_SETREDRAW, false, (IntPtr)0);

            // update POI
            int i  = 0;
            var sb = new StringBuilder();

            // poitype   distance
            sb.Append(BotPoi.Current.Type.ToString());

            try {
                WoWObject o = BotPoi.Current.AsObject;
                if (o != null)
                {
                    sb.Append(" @ " + o.Distance.ToString("F1") + " yds - " + o.SafeName());
                }
            }
            catch {
            }

            lblPoi.Text = sb.ToString();

            // update list of Targets
            i  = 0;
            sb = new StringBuilder();
            foreach (WoWUnit u in Targeting.Instance.TargetList)
            {
                try
                {
                    sb.AppendLine(u.SafeName().AlignLeft(20) + " " + u.HealthPercent.ToString("F1").AlignRight(5) + "%  " + u.Distance.ToString("F1").AlignRight(5) + " yds");
                    if (++i == 5)
                    {
                        break;
                    }
                }
                catch
                {
                }
            }
            lblTargets.Text = sb.ToString();

            // update list of Heal Targets
            sb = new StringBuilder();
            if (HealerManager.NeedHealTargeting)
            {
                try
                {
                    WoWUnit tank = HealerManager.TankToStayNear;
                    if (tank == null)
                    {
                        sb.Append("None");
                    }
                    else
                    {
                        sb.Append(tank.SafeName().AlignLeft(22) + "- " + tank.HealthPercent.ToString("F1").AlignRight(5) + "% @ " + tank.Distance.ToString("F1").AlignRight(5) + " yds");
                    }
                }
                catch
                {
                    sb.Append("Error");
                }

                lblTankToStayNear.Text = sb.ToString();

                i  = 0;
                sb = new StringBuilder();
                foreach (WoWUnit u in HealerManager.Instance.TargetList)
                {
                    try
                    {
                        sb.AppendLine(u.SafeName().AlignLeft(22) + "- " + u.HealthPercent.ToString("F1").AlignRight(5) + "% @ " + u.Distance.ToString("F1").AlignRight(5) + " yds");
                        if (++i == 5)
                        {
                            break;
                        }
                    }
                    catch
                    {
                    }
                }
                lblAuxTargets.Text = sb.ToString();
            }

            // update list of Tank Targets
            if (TankManager.NeedTankTargeting)
            {
                i  = 0;
                sb = new StringBuilder();
                foreach (WoWUnit u in TankManager.Instance.TargetList)
                {
                    try
                    {
                        sb.AppendLine(u.SafeName().AlignLeft(20) + " " + u.HealthPercent.ToString("F1").AlignRight(5) + "%  " + u.Distance.ToString("F1").AlignRight(5) + " yds");
                        if (++i == 5)
                        {
                            break;
                        }
                    }
                    catch (System.AccessViolationException)
                    {
                    }
                    catch (Styx.InvalidObjectPointerException)
                    {
                    }
                }
                lblTargets.Text = sb.ToString();
            }

            UpdateBehaviorFlags();
            UpdateCapabilitiesFlags();

            SendMessage(lblPoi.Handle, WM_SETREDRAW, true, (IntPtr)0);
            SendMessage(lblTargets.Handle, WM_SETREDRAW, true, (IntPtr)0);
            SendMessage(lblTankToStayNear.Handle, WM_SETREDRAW, true, (IntPtr)0);
            SendMessage(lblTargets.Handle, WM_SETREDRAW, true, (IntPtr)0);
            SendMessage(lblAuxTargets.Handle, WM_SETREDRAW, true, (IntPtr)0);

            tabDebug.Refresh();
        }