internal static Dictionary <string, object> ToDictionary(this TargetStatus target) =>
 new Dictionary <string, object>()
 {
     ["id"] = target.Id,
     ["current_availability"] = target.CurrentAvailability,
     ["average_queue_time"]   = target.AverageQueueTime,
 };
示例#2
0
 void Start()
 {
     _target          = cam.GetComponent <alTarget>();
     _targetText.text = _targetStr;
     TargetStatus     = GameObject.Find("TargetStatus");
     TargetStatus.SetActive(TargetStatusActive);
 }
示例#3
0
    void OnDevicePoseStatusChanged(ObserverBehaviour behaviour, TargetStatus targetStatus)
    {
        var statusInfo = targetStatus.StatusInfo;

        if (statusInfo == StatusInfo.RELOCALIZING)
        {
            // If the status is Relocalizing, then start the timer if it isn't active
            if (!mRelocalizationStatusDelayTimer.Enabled)
            {
                mRelocalizationStatusDelayTimer.Start();
            }
        }
        else
        {
            // If the status is not Relocalizing, then stop the timers if they are active
            if (mRelocalizationStatusDelayTimer.Enabled)
            {
                mRelocalizationStatusDelayTimer.Stop();
            }

            if (mResetDeviceObserverTimer.Enabled)
            {
                mResetDeviceObserverTimer.Stop();
            }

            // Clear the status message
            StatusMessage.Instance.Display(string.Empty);
        }
    }
 public Target(int idx, int cnt, bool vis, TargetStatus st)
 {
     id             = idx;
     remainTouchCnt = cnt;
     visible        = vis;
     status         = st;
 }
示例#5
0
        public GridAi()
        {
            for (int i = 0; i < TargetState.Length; i++)
            {
                TargetState[i] = new TargetStatus();
            }

            AiComp = new AiComponent(this);
        }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature player, Target target = null, CastedSpell spell = null, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1);
            TargetStatus         targetStatus = DndUtils.GetTargetStatus(args[0]);
            TargetCountEventArgs ea           = new TargetCountEventArgs();

            ea.TargetStatus = targetStatus;
            OnRequestTargetCount(player, ea);
            return(ea.Count);
        }
示例#7
0
        /// <summary>
        /// Returns Target status as string from TargetStatus Enum
        /// </summary>
        public static string TargetStatusAsString(TargetStatus Status)
        {
            string ret = string.Empty;

            if (Status != TargetStatus.Null)
            {
                ret = Status.ToString().Replace('_', ' ');
            }
            return(ret);
        }
示例#8
0
 internal Focus(int count)
 {
     Target       = new MyEntity[count];
     SubSystem    = new BlockTypes[count];
     TargetState  = new TargetStatus[count];
     PrevTargetId = new long[count];
     for (int i = 0; i < TargetState.Length; i++)
     {
         TargetState[i] = new TargetStatus();
     }
 }
示例#9
0
        public void NotifyVoyeurOfEvent(TargetStatus status)
        {
            if (PhysicsObj == null || VoyeurTable == null)
            {
                return;
            }

            foreach (var voyeur in VoyeurTable.Values.ToList())
            {
                SendVoyeurUpdate(voyeur, PhysicsObj.Position, status);
            }
        }
示例#10
0
文件: TargetInfo.cs 项目: acriaf/ACE
 /// <summary>
 /// Copy constructor
 /// </summary>
 public TargetInfo(TargetInfo info)
 {
     ContextID            = info.ContextID;
     ObjectID             = info.ObjectID;
     Radius               = info.Radius;
     Quantum              = info.Quantum;
     TargetPosition       = new Position(info.TargetPosition);
     InterpolatedPosition = new Position(info.InterpolatedPosition);
     InterpolatedHeading  = new Vector3(info.InterpolatedHeading.X, info.InterpolatedHeading.Y, info.InterpolatedHeading.Z);
     Velocity             = new Vector3(info.Velocity.X, info.Velocity.Y, info.Velocity.Z);
     Status               = info.Status;
     LastUpdateTime       = info.LastUpdateTime;
 }
示例#11
0
    private static bool FighterHasTargetableStatuses(Fighter targetFighter, TargetStatus targetStatus)
    {
        switch (targetStatus)
        {
        case TargetStatus.Any:
            return(true);

        case TargetStatus.Active:
            return(targetFighter.CurrentHealth > 0);

        case TargetStatus.Unconscious:
            return(targetFighter.CurrentHealth == 0);
        }
        return(false);
    }
示例#12
0
    void Update()
    {
        _currentTarget = _target.getActiveObject();

        if (_currentTarget != null)
        {
            var controller = _currentTarget.GetComponent(typeof(alNpcController)) as alNpcController;
            _targetStr         = _currentTarget.name;
            targetHp           = controller.getHP();
            _targetText.text   = _targetStr;
            hp_text.text       = targetHp.ToString() + " HP";
            TargetStatusActive = true;
            TargetStatus.SetActive(TargetStatusActive);
        }
    }
示例#13
0
        public override void Empty()
        {
            base.Empty();

            TargetNumber       = 0;
            TargetDistance     = 0.0;
            BearingFromOwnShip = 0.0;
            BearingUnits       = string.Empty;
            TargetSpeed        = 0.0;
            TargetCourse       = 0.0;
            TargetCourseUnits  = string.Empty;
            DistanceOfClosestPointOfApproach        = 0.0;
            NumberOfMinutesToClosestPointOfApproach = 0.0;
            Increasing   = string.Empty;
            TargetName   = string.Empty;
            TargetStatus = TargetStatus.Unknown;
        }
示例#14
0
        public void SendVoyeurUpdate(TargettedVoyeurInfo voyeur, Position pos, TargetStatus status)
        {
            voyeur.LastSentPosition = new Position(pos);    // ref?

            var info = new TargetInfo(0, PhysicsObj.ID, voyeur.Radius, voyeur.Quantum);

            info.TargetPosition       = PhysicsObj.Position;
            info.InterpolatedPosition = new Position(pos);    // ref?
            info.Velocity             = PhysicsObj.get_velocity();
            info.Status = status;

            var voyeurObj = PhysicsObj.GetObjectA(voyeur.ObjectID);

            if (voyeurObj != null)
            {
                voyeurObj.receive_target_update(info);
            }
        }
示例#15
0
 /// <summary>
 /// For deserialization from a binary table.
 /// </summary>
 public EO3Skill(BinaryReader reader, int skillId, Table nameTable) : base(reader, skillId, nameTable)
 {
     Game            = SkillModes.EO3;
     MaxLevel        = reader.ReadByte();
     Type            = reader.ReadByte();
     UseRequirements = new EO3UseRequirements(reader.ReadUInt16());
     TargetStatus    = new TargetStatus(reader.ReadUInt16());
     TargetType      = reader.ReadByte();
     TargetTeam      = reader.ReadByte();
     UsableLocation  = new UsableLocation(reader.ReadByte());
     ModifierStatus  = reader.ReadByte();
     ModifierType    = reader.ReadByte();
     reader.ReadByte(); // Unknown.
     ModifierElement    = new Element(reader.ReadUInt16());
     DamageElement      = new DamageElement(reader.ReadUInt16());
     InflictionStatus   = reader.ReadUInt16();
     AssociatedDisables = new Disables(reader.ReadUInt16());
     SkillFlags         = new EO3SkillFlags(reader.ReadInt32());
     DataSections       = new DataSections(reader, Game);
 }
        public override object Evaluate(List <string> args, ExpressionEvaluator evaluator, Creature creature, Target target, CastedSpell spell, DiceStoppedRollingData dice = null)
        {
            ExpectingArguments(args, 1, 3);
            TargetStatus targetStatus = Expressions.Get <TargetStatus>(args[0], creature, target, spell, dice);

            ea = new TargetEventArgs();
            if (args.Count > 1)
            {
                ea.MinTargets = Expressions.GetInt(args[1], creature, target, spell, dice);
                if (args.Count > 2)
                {
                    ea.MaxTargets = Expressions.GetInt(args[2], creature, target, spell, dice);
                }
            }

            ea.Player = creature as Character;
            ea.Target = target;

            ea.ShowUI       = true;
            ea.TargetStatus = targetStatus;
            OnRequestSelectTarget(ea);
            return(ea.Target);
        }
示例#17
0
        public static int GetTargetCount(TargetStatus targetStatus)
        {
            int count = 0;

            foreach (InGameCreature inGameCreature in Creatures)
            {
                if (inGameCreature.IsTargeted)
                {
                    if (targetStatus.HasFlag(TargetStatus.Friendly) && inGameCreature.IsAlly)
                    {
                        count++;
                    }
                    else if (targetStatus.HasFlag(TargetStatus.Adversarial) && inGameCreature.IsEnemy)
                    {
                        count++;
                    }
                    else if (targetStatus.HasFlag(TargetStatus.AllTargets))
                    {
                        count++;
                    }
                }
            }
            return(count);
        }
示例#18
0
 // Works with "None" as well
 public static bool HasFlag(TargetStatus a, TargetStatus b)
 {
     return((a & b) == b);
 }
示例#19
0
 public void NotifyVoyeurOfEvent(TargetStatus status)
 {
 }
示例#20
0
        //Заготовка под бег
        public void Run(EsoWindow esoWindow, IntPtr processHandle, IntPtr hWnd, String xAddress, String yAdress, String cAdress, String xTarget, String yTarget, String cTarget)
        {
            if (Form1.stopAction)
            {
                return;                   //Прекращаем функцию, если нажато F12
            }
            int              timeCount = 0;
            IntPtr           bytesRead;
            NumberFormatInfo nfi = new NumberFormatInfo();

            nfi.NumberDecimalSeparator = ","; //Задаем запятую, как разделитель между числом и дробной частью

            //Создаем массивы, куда будут считываться данные из памяти
            var bufferX = new byte[8];
            var bufferY = new byte[8];
            var bufferC = new byte[8];
            //Переводим адреса памяти из String в Hex
            var addrX = long.Parse(xAddress, System.Globalization.NumberStyles.HexNumber);
            var addrY = long.Parse(yAdress, System.Globalization.NumberStyles.HexNumber);
            var addrC = long.Parse(cAdress, System.Globalization.NumberStyles.HexNumber);
            //Читаем текущие значения X, Y, Corner
            var resultX = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrX), bufferX, (uint)bufferX.Length, out bytesRead);
            var resultY = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrY), bufferY, (uint)bufferY.Length, out bytesRead);
            var resultC = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrC), bufferC, (uint)bufferC.Length, out bytesRead);
            //Переводим текущие значения X, Y, Corner в Double
            double actualX = BitConverter.ToDouble(bufferX, 0);
            double actualY = BitConverter.ToDouble(bufferY, 0);
            double actualC = BitConverter.ToDouble(bufferC, 0);

            Console.WriteLine("Целевые координаты: " + "X: " + xTarget + " Y: " + yTarget + " C: " + cTarget);
            Console.WriteLine("Текущие координаты: " + "X: " + Convert.ToString(actualX) + " Y: " + Convert.ToString(actualY) + " C: " + Convert.ToString(actualC));

            //Переводим целевые значения из String в Double с использованием заданного
            double targetX = Convert.ToDouble(xTarget, nfi);
            double targetY = Convert.ToDouble(yTarget, nfi);
            //Расчет катетов прямоугольного треугольника
            double katetX = Math.Abs(targetX - actualX);
            double katetY = Math.Abs(targetY - actualY);
            //Находим тангенс угла и угол а
            double cornerA = Math.Atan(katetY / katetX) * 180 / Math.PI;

            //Поворачиваем к цели
            if ((targetX > actualX) && (targetY > actualY)) //Если оба целевых значения больше текущих
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(270 - cornerA));
                tStatus = TargetStatus.X_bigger_Y_bigger;
            }

            if ((targetX < actualX) && (targetY < actualY)) //Если оба целевых значения меньше текущих
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(90 - cornerA));
                tStatus = TargetStatus.X_less_Y_less;
            }

            if ((targetX > actualX) && (targetY < actualY)) //Если целевой X больше, а Y - меньше
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(270 + cornerA));
                tStatus = TargetStatus.X_bigger_Y_less;
            }

            if ((targetX < actualX) && (targetY > actualY)) //Если целевой X меньше, а Y - больше
            {
                turnCornerVer3(esoWindow, cAdress, processHandle, Convert.ToString(90 + cornerA));
                tStatus = TargetStatus.X_less_Y_bigger;
            }

            //Бежим к цели
            while (ReachTarget(targetX, actualX, targetY, actualY))
            {
                if (Form1.stopAction)
                {
                    break;
                }
                if (timeCount > 30000)
                {
                    Form1.stopAction = true;
                    break;
                }
                if (isFight())
                {
                    esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.W), new IntPtr(0));
                    Fight(esoWindow, hWnd); //Если в бою, то воюем.
                }
                esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYDOWN, new IntPtr((ushort)System.Windows.Forms.Keys.W), new IntPtr(0));
                Thread.Sleep(150);
                timeCount = timeCount + 150;
                resultX   = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrX), bufferX, (uint)bufferX.Length, out bytesRead);
                resultY   = esoWindow.ReadProcessMemory(processHandle, new IntPtr(addrY), bufferY, (uint)bufferY.Length, out bytesRead);
                actualX   = BitConverter.ToDouble(bufferX, 0);
                actualY   = BitConverter.ToDouble(bufferY, 0);
            }

            esoWindow.SendMessage(hWnd, (uint)WindowMessages.WM_KEYUP, new IntPtr((ushort)Keys.W), new IntPtr(0));
            if (!Form1.stopAction && cTarget != null)
            {
                if (!cTarget.Equals(""))
                {
                    turnCornerVer3(esoWindow, cAdress, processHandle, cTarget);
                }
            }
        }
示例#21
0
    public static List <Fighter> GetTargettableFighters(Fighter originator, TargetCount targetCount, TargetSelection targetSelection, bool excludeSelf, TargetStatus targetStatus, ActionAttribute attackAttribute, TargetPosition targetPosition, TargetElevation targetElevation)
    {
        List <Fighter> targettableFighters = new List <Fighter>();

        if (targetCount == TargetCount.AllFighters)
        {
            // Allys first
            targettableFighters.AddRange(originator.FighterTeam.TeamMembers);
            // Reverse ally order for navigation
            targettableFighters.Reverse();

            if (excludeSelf)
            {
                targettableFighters.Remove(originator);
            }
            targettableFighters.AddRange(originator.FighterTeam.opposingTeam.TeamMembers);
        }
        else
        {
            switch (targetSelection)
            {
            case TargetSelection.Ally:
                targettableFighters.AddRange(originator.FighterTeam.TeamMembers);
                if (excludeSelf)
                {
                    targettableFighters.Remove(originator);
                }
                break;

            case TargetSelection.Enemy:
                targettableFighters.AddRange(originator.FighterTeam.opposingTeam.TeamMembers);
                break;

            case TargetSelection.Self:
                targettableFighters.Add(originator);
                break;
            }
        }

        for (int i = targettableFighters.Count - 1; i >= 0; i--)
        {
            if (!FighterIsOnTargetableElevation(targettableFighters[i], targetElevation))
            {
                targettableFighters.RemoveAt(i);
                continue;
            }

            // Positional actions will never focus on all teams, so lets do this conditionally
            switch (targetPosition)
            {
            case TargetPosition.Front:
                if (i > 0)
                {
                    targettableFighters.RemoveAt(i);
                    continue;
                }
                break;

            case TargetPosition.Rear:
                if (i < targettableFighters.Count - 1)
                {
                    targettableFighters.RemoveAt(i);
                }
                break;
            }

            if (!FighterHasTargetableStatuses(targettableFighters[0], targetStatus))
            {
                targettableFighters.RemoveAt(i);
            }

            if (!FighterHasTargetableAttributes(targettableFighters[0], attackAttribute))
            {
                targettableFighters.RemoveAt(i);
            }
        }

        return(targettableFighters);
    }
示例#22
0
        /// <summary>
        /// Callback from the EasyAR component whic renders the foreground nodes.
        /// </summary>
        /// <param name="oFrame"></param>
        /// <param name="cameraParameters"></param>
        /// <param name="aspectRatio"></param>
        /// <param name="rotation"></param>
        protected void OnARFrameUpdated(OutputFrame oFrame, CameraParameters cameraParameters, float aspectRatio, int rotation)
        {
            var       far  = 100f;
            var       near = 0.01f;
            Matrix44F sp   = cameraParameters.projection(near, far, aspectRatio, rotation, true, false);

            foreach (Optional <FrameFilterResult> unTypedResult in oFrame.results())
            {
                if (unTypedResult.OnSome)
                {
                    if (unTypedResult.Some is ImageTrackerResult result)
                    {
                        int targetIndex = 0;
                        List <TargetInstance> targetInstances = result.targetInstances();
                        foreach (TargetInstance targetInstance in targetInstances)
                        {
                            TargetStatus status = targetInstance.status();
                            if (status == TargetStatus.Tracked)
                            {
                                Optional <Target> optionalTarget = targetInstance.target();
                                if (optionalTarget.OnSome)
                                {
                                    Target target = optionalTarget.Some;
                                    if (target is ImageTarget imageTarget)
                                    {
                                        List <Image> images      = imageTarget.images();
                                        Image        targetImage = images[0];

                                        Matrix4 prj = sp.ToUrhoMatrix();
                                        prj.M34 /= 2f;
                                        prj.M33  = far / (far - near);
                                        prj.M43 *= -1;
                                        fgCamera.SetProjection(prj);

                                        Matrix4 convertedPoseMatrix = targetInstance.pose().ToUrhoMatrix();
                                        Vector3 scale = new Vector3(imageTarget.scale(), imageTarget.scale() * targetImage.height() / targetImage.width(), 1);
                                        UpdateArScene(targetIndex, convertedPoseMatrix, scale);
                                        foreach (Image targetImageToRelease in images)
                                        {
                                            targetImageToRelease.Dispose();
                                        }
                                    }
                                    target.Dispose();
                                }
                            }
                            targetInstance.Dispose();
                            targetIndex++;
                        }

                        // Remove any targets that can no longer be located
                        while (targetNodes.Count > targetIndex)
                        {
                            Node node = targetNodes[targetIndex];
                            targetNodes.RemoveAt(targetIndex);
                            node.Remove();
                        }
                    }
                    unTypedResult.Some.Dispose();
                }
            }
        }
示例#23
0
 public static TargetStatus SetFlag(TargetStatus a, TargetStatus b)
 {
     return(a | b);
 }
示例#24
0
 public static TargetStatus ToogleFlag(TargetStatus a, TargetStatus b)
 {
     return(a ^ b);
 }
示例#25
0
        public override bool Parse(Sentence sentence)
        {
            /*
            ** TTM - Tracked Target Message
            **
            **                                         11     13
            **        1  2   3   4 5   6   7 8   9   10|    12| 14
            **        |  |   |   | |   |   | |   |   | |    | | |
            ** $--TTM,xx,x.x,x.x,a,x.x,x.x,a,x.x,x.x,a,c--c,a,a*hh<CR><LF>
            **
            **  1) Target Number
            **  2) Target Distance
            **  3) Bearing from own ship
            **  4) Bearing Units
            **  5) Target speed
            **  6) Target Course
            **  7) Course Units
            **  8) Distance of closest-point-of-approach
            **  9) Time until closest-point-of-approach "-" means increasing
            ** 10) "-" means increasing
            ** 11) Target name
            ** 12) Target Status
            ** 13) Reference Target
            ** 14) Checksum
            */

            /*
            ** First we check the checksum...
            */

            if (sentence.IsChecksumBad() == NMEA.Boolean.True)
            {
                Empty();
                return(false);
            }

            TargetNumber       = sentence.Integer(1);
            TargetDistance     = sentence.Double(2);
            BearingFromOwnShip = sentence.Double(3);
            BearingUnits       = sentence.Field(4);
            TargetSpeed        = sentence.Double(5);
            TargetCourse       = sentence.Double(6);
            TargetCourseUnits  = sentence.Field(7);
            DistanceOfClosestPointOfApproach        = sentence.Double(8);
            NumberOfMinutesToClosestPointOfApproach = sentence.Double(9);
            Increasing = sentence.Field(10);
            TargetName = sentence.Field(11);

            string field_data = sentence.Field(12);

            if (field_data == "L")
            {
                TargetStatus = TargetStatus.Lost;
            }
            else if (field_data == "Q")
            {
                TargetStatus = TargetStatus.Query;
            }
            else if (field_data == "T")
            {
                TargetStatus = TargetStatus.Tracking;
            }
            else
            {
                TargetStatus = TargetStatus.Unknown;
            }

            ReferenceTarget = sentence.Field(13);

            return(true);
        }
示例#26
0
 public static TargetStatus UnsetFlag(TargetStatus a, TargetStatus b)
 {
     return(a & (~b));
 }