public static string[] GetNames( this string fullName) { combatant.SetName(fullName); return(new[] { combatant.Name, combatant.NameFI, combatant.NameIF, combatant.NameII }); }
private void RefreshCombatantListFromFFXIVPlugin() { dynamic list = this.pluginScancombat.GetCombatantList(); var count = (int)list.Count; var newList = new List <Combatant>(count); var newDictionary = new Dictionary <uint, Combatant>(count); var player = default(Combatant); var pcCount = 0; foreach (dynamic item in list.ToArray()) { if (item == null) { continue; } var combatant = new Combatant(); combatant.ID = (uint)item.ID; combatant.OwnerID = (uint)item.OwnerID; combatant.Job = (byte)item.Job; combatant.type = (ObjectType)((byte)item.type); combatant.Level = (byte)item.Level; combatant.CurrentHP = (int)item.CurrentHP; combatant.MaxHP = (int)item.MaxHP; combatant.CurrentMP = (int)item.CurrentMP; combatant.MaxMP = (int)item.MaxMP; combatant.CurrentTP = (short)item.CurrentTP; combatant.IsCasting = (bool)item.IsCasting; combatant.CastBuffID = (int)item.CastBuffID; combatant.CastDurationCurrent = (float)item.CastDurationCurrent; combatant.CastDurationMax = (float)item.CastDurationMax; // 扱うプレイヤー数の最大数を超えたらカットする if (combatant.type == ObjectType.PC) { pcCount++; if (pcCount >= MaxPCCount) { continue; } } this.SetSkillName(combatant); combatant.PosX = (float)item.PosX; combatant.PosY = (float)item.PosY; combatant.PosZ = (float)item.PosZ; var name = (string)item.Name; // 名前を登録する // TYPEによって分岐するため先にTYPEを設定しておくこと combatant.SetName(name); if (player == null) { player = combatant; } combatant.Player = player; newList.Add(combatant); newDictionary.Add(combatant.ID, combatant); } lock (this.combatantListLock) { var addedCombatants = this.combatantList == null? newList.ToArray() : newList .Where(x => !this.combatantList.Any(y => y.ID == x.ID)) .ToArray(); this.combatantList = newList; this.combatantDictionary = newDictionary; if (addedCombatants.Any()) { Task.Run(() => this.OnAddedCombatants(new AddedCombatantsEventArgs(addedCombatants))); } } lock (this.playerLocker) { this.player = player; } }