Exemplo n.º 1
0
        protected override void RefreshEnmityView(CombatantEx targetInfo)
        {
            if (this.EnmityView == null)
            {
                return;
            }

            if (!this.EnmityView.ViewModel.OverlayVisible)
            {
                return;
            }

            var now = DateTime.Now;

            if ((now - this.enmityTimestamp).TotalMilliseconds <= 100d)
            {
                return;
            }

            this.enmityTimestamp = now;

            EnmityModel.CreateBrushes();

            if (targetInfo == null)
            {
                this.Model.RefreshEnmityList(null);
                return;
            }

            lock (this.CurrentEnmityModelList)
            {
                this.Model.RefreshEnmityList(
                    this.CurrentEnmityModelList,
                    this.currentTankEPS,
                    this.currentNearThreshold);
            }
        }
Exemplo n.º 2
0
        private void RefreshCurrentEnmityModelList(
            IEnumerable <EnmityEntry> enmityEntryList)
        {
            lock (this.CurrentEnmityModelList)
            {
                this.CurrentEnmityModelList.Clear();

                if (enmityEntryList == null)
                {
                    return;
                }

                var config      = Settings.Instance.Enmity;
                var pcNameStyle = ConfigBridge.Instance.PCNameStyle;

                var count = 0;
                foreach (var entry in enmityEntryList)
                {
                    if (entry.ID == 0)
                    {
                        continue;
                    }

                    count++;

                    if (count > config.MaxCountOfDisplay)
                    {
                        break;
                    }

                    var name = entry.Name;
                    if (string.IsNullOrEmpty(name))
                    {
                        name = CombatantEx.UnknownName;
                    }
                    else
                    {
                        name = config.IsSelfDisplayYou && entry.IsMe ?
                               "YOU" :
                               CombatantEx.NameToInitial(entry.Name, pcNameStyle);
                    }

                    var model = new EnmityModel();
                    model.Index    = count;
                    model.ID       = entry.ID;
                    model.Name     = name;
                    model.JobID    = (JobIDs)entry.Job;
                    model.Enmity   = (double)entry.Enmity;
                    model.HateRate = entry.HateRate / 100f;
                    model.IsMe     = entry.IsMe;
                    model.IsPet    = entry.IsPet;
                    model.IsTop    = count <= 1;
                    this.CurrentEnmityModelList.Add(model);

                    Thread.Yield();
                }

                // EPSを更新する
                var isRefreshed = this.RefreshEPS();

                // ログを出力する
                if (isRefreshed)
                {
                    this.WriteEnmityLog(enmityEntryList);
                }
            }
        }