Пример #1
0
        public virtual void RaiseTargetInfoUpdated(TargetInfo targetInfo)
        {
            var raised = new TargetInfoEvent(this, targetInfo);
            EventHandler <TargetInfoEvent> handler = this.TargetInfoUpdated;

            handler?.Invoke(this, raised);
        }
        private static void OnTargetInfoUpdated(object sender, TargetInfoEvent targetInfoEvent)
        {
            // delegate event from target info from ram, not required to subsribe
            // this includes the full entities for current, previous, mouseover, focus targets (if 0+ are found)
            // it also includes a list of upto 16 targets that currently have hate on the currently targeted monster
            // these hate values are realtime and change based on the action used
            // this updates 10x a second and only sends data when the newly read data is differen than what was previously sent
            if (sender == null)
            {
                return;
            }

            TargetInfo targetInfo = targetInfoEvent.TargetInfo;

            if (ActorItem.CurrentUser != null)
            {
                XIVInfoViewModel.Instance.CurrentUser = ActorItem.CurrentUser;
            }

            XIVInfoViewModel.Instance.EnmityEntries   = new ObservableCollection <EnmityItem>(targetInfo.EnmityItems ?? new List <EnmityItem>());
            XIVInfoViewModel.Instance.CurrentTarget   = targetInfo.CurrentTarget ?? new ActorItem();
            XIVInfoViewModel.Instance.MouseOverTarget = targetInfo.MouseOverTarget ?? new ActorItem();
            XIVInfoViewModel.Instance.FocusTarget     = targetInfo.FocusTarget ?? new ActorItem();
            XIVInfoViewModel.Instance.PreviousTarget  = targetInfo.PreviousTarget ?? new ActorItem();
        }
        // private static void OnNewPlayerEntity(object sender, PlayerEntityEvent playerEntityEvent)
        // {
        // // delegate event from player info from ram, not required to subsribe
        // // this is for YOU and includes all your stats and your agro list with hate values as %
        // // this updates 10x a second and only sends data when the newly read data is differen than what was previously sent
        // if (sender == null)
        // {
        // return;
        // }
        // var playerEntity = playerEntityEvent.PlayerEntity;
        // }
        private static void OnTargetInfoUpdated(object sender, TargetInfoEvent targetInfoEvent)
        {
            // delegate event from target info from ram, not required to subsribe
            // this includes the full entities for current, previous, mouseover, focus targets (if 0+ are found)
            // it also includes a list of upto 16 targets that currently have hate on the currently targeted monster
            // these hate values are realtime and change based on the action used
            // this updates 10x a second and only sends data when the newly read data is differen than what was previously sent
            if (sender == null)
            {
                return;
            }

            TargetInfo targetInfo  = targetInfoEvent.TargetInfo;
            var        emptyEntity = new TargetInfo();

            // assign empty entity
            EnmityWidgetViewModel.Instance.TargetEntity        = emptyEntity;
            FocusTargetWidgetViewModel.Instance.TargetEntity   = emptyEntity;
            CurrentTargetWidgetViewModel.Instance.TargetEntity = emptyEntity;

            // assign default current/focus target info
            EnmityWidgetViewModel.Instance.EnmityTargetIsValid           = false;
            EnmityWidgetViewModel.Instance.EnmityTargetHPPercent         = 0;
            EnmityWidgetViewModel.Instance.EnmityTargetDistance          = 0;
            FocusTargetWidgetViewModel.Instance.FocusTargetIsValid       = false;
            FocusTargetWidgetViewModel.Instance.FocusTargetHPPercent     = 0;
            FocusTargetWidgetViewModel.Instance.FocusTargetDistance      = 0;
            CurrentTargetWidgetViewModel.Instance.CurrentTargetIsValid   = false;
            CurrentTargetWidgetViewModel.Instance.CurrentTargetHPPercent = 0;
            CurrentTargetWidgetViewModel.Instance.CurrentTargetDistance  = 0;

            if (ActorItem.CurrentUser != null)
            {
                XIVInfoViewModel.Instance.CurrentUser = ActorItem.CurrentUser;
            }

            // if valid assign actual current target info
            if (targetInfo.CurrentTarget != null && targetInfo.CurrentTarget.IsValid && Settings.Default.ShowEnmityWidgetOnLoad)
            {
                EnmityWidgetViewModel.Instance.TargetEntity          = targetInfo;
                EnmityWidgetViewModel.Instance.EnmityTargetIsValid   = true;
                EnmityWidgetViewModel.Instance.EnmityTargetHPPercent = targetInfo.CurrentTarget.HPPercent;

                try {
                    EnmityWidgetViewModel.Instance.EnmityTargetDistance = XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(targetInfo.CurrentTarget);
                }
                catch (Exception ex) {
                    Logging.Log(Logger, new LogItem(ex, true));
                }
            }

            // if valid assign actual current target info
            if (targetInfo.CurrentTarget != null && targetInfo.CurrentTarget.IsValid && Settings.Default.ShowCurrentTargetWidgetOnLoad)
            {
                CurrentTargetWidgetViewModel.Instance.TargetEntity           = targetInfo;
                CurrentTargetWidgetViewModel.Instance.CurrentTargetIsValid   = true;
                CurrentTargetWidgetViewModel.Instance.CurrentTargetHPPercent = targetInfo.CurrentTarget.HPPercent;

                try {
                    CurrentTargetWidgetViewModel.Instance.CurrentTargetDistance = XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(targetInfo.CurrentTarget);
                }
                catch (Exception ex) {
                    Logging.Log(Logger, new LogItem(ex, true));
                }
            }

            // if valid assign actual focus target info
            if (targetInfo.FocusTarget != null && targetInfo.FocusTarget.IsValid && Settings.Default.ShowFocusTargetWidgetOnLoad)
            {
                FocusTargetWidgetViewModel.Instance.TargetEntity         = targetInfo;
                FocusTargetWidgetViewModel.Instance.FocusTargetIsValid   = true;
                FocusTargetWidgetViewModel.Instance.FocusTargetHPPercent = targetInfo.FocusTarget.HPPercent;

                try {
                    FocusTargetWidgetViewModel.Instance.FocusTargetDistance = XIVInfoViewModel.Instance.CurrentUser.GetDistanceTo(targetInfo.FocusTarget);
                }
                catch (Exception ex) {
                    Logging.Log(Logger, new LogItem(ex, true));
                }
            }
        }