コード例 #1
0
        public bool CanCast(WoWUnit target = null, bool checkrange = false)
        {
            WoWLocalPlayer Me = Manager.LocalPlayer;

            if (!IsReady)
            {
                return(false);
            }
            if (Me.IsCasting)
            {
                return(false);
            }
            if (IsUsing)
            {
                return(false);
            }
            var r = WoWScript.Execute("IsUsableSpell(select(1, GetSpellInfo(" + this.Id + ")))");

            if (r.Count <= 0 || !r[0].Equals("1"))
            {
                return(false);
            }
            if (checkrange && target != null)
            {
                if (IsMeleeRange && !Me.IsWithinMeleeRangeOf(target))
                {
                    return(false);
                }
                else if (IsRanged && (target.Distance < MinRange || target.Distance > MaxRange))
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #2
0
        public void Direct3D_EndScene()
        {
            ulong localPlayerGuid = _getLocalPlayer();
            if (localPlayerGuid == 0)
                return;

            IntPtr localPlayerPointer = _getObjectByGuid(localPlayerGuid, -1);
            if (localPlayerPointer == IntPtr.Zero)
                return;

            LocalPlayer = new WoWLocalPlayer(localPlayerPointer);

            foreach (WoWObject obj in _objects.Values)
                obj.Pointer = IntPtr.Zero;

            _enumVisibleObjects(_ourCallback, 0);

            foreach (var pair in _objects.Where(p => p.Value.Pointer == IntPtr.Zero).ToList())
                _objects.Remove(pair.Key);

            if (Direct3D.FrameCount == 0)
            {
                Log.WriteLine("ObjectManager: {0} objects", _objects.Count);
            }

            Objects = _objects.Values.ToList();
        }