/// <summary> /// ロード /// </summary> /// <param name="sender">イベント発生元</param> /// <param name="e">イベント引数</param> private void SelectJobForm_Load(object sender, EventArgs e) { var jobs = this.JobFilter.Split(','); this.JobsCheckedListBox.Items.Clear(); foreach (var job in Job.GetJobList()) { this.JobsCheckedListBox.Items.Add( job, jobs.Any(x => x == job.JobId.ToString())); } }
/// <summary> /// パーティリストを更新する /// </summary> public static void RefreshPTList() { if (ptmember == null) { ptmember = new List <string>(); } else { ptmember.Clear(); } if (Settings.Default.EnabledPartyMemberPlaceholder) { Debug.WriteLine("PT: Refresh"); // プレイヤー情報を取得する var player = FF14PluginHelper.GetPlayer(); if (player == null) { return; } // PTメンバの名前を記録しておく if (Settings.Default.EnabledPartyMemberPlaceholder) { var partyList = FF14PluginHelper.GetCombatantListParty(); // FF14内部のPTメンバ自動ソート順で並び替える var sorted = from x in partyList join y in Job.GetJobList() on x.Job equals y.JobId where x.ID != player.ID orderby y.Role, x.Job, x.ID select x.Name.Trim(); foreach (var name in sorted) { ptmember.Add(name); Debug.WriteLine("<- " + name); } } } }
/// <summary> /// パーティリストを更新する /// </summary> public static void RefreshPTList() { if (ptmember == null) { ptmember = new List <string>(); } else { ptmember.Clear(); } if (replacementsByJobs == null) { replacementsByJobs = new List <KeyValuePair <string, string> >(); } else { replacementsByJobs.Clear(); } if (enabledPartyMemberPlaceHolder) { #if DEBUG Debug.WriteLine("PT: Refresh"); #endif // プレイヤー情報を取得する var player = FF14PluginHelper.GetPlayer(); if (player == null) { return; } // PTメンバの名前を記録しておく var combatants = FF14PluginHelper.GetCombatantListParty(); // FF14内部のPTメンバ自動ソート順で並び替える var sorted = from x in combatants join y in Job.GetJobList() on x.Job equals y.JobId where x.ID != player.ID orderby y.Role, x.Job, x.ID descending select x.Name.Trim(); foreach (var name in sorted) { ptmember.Add(name); #if DEBUG Debug.WriteLine("<- " + name); #endif } // パーティメンバが空だったら自分を補完しておく if (!combatants.Any()) { combatants.Add(player); } // ジョブ名によるプレースホルダを登録する foreach (var job in Job.GetJobList()) { // このジョブに該当するパーティメンバを抽出する var combatantsByJob = ( from x in combatants where x.Job == job.JobId orderby x.ID == player.ID ? 0 : 1, x.ID descending select x).ToArray(); if (!combatantsByJob.Any()) { continue; } // <JOBn>形式を置換する // ex. <PLD1> → Taro Paladin // ex. <PLD2> → Jiro Paladin for (int i = 0; i < combatantsByJob.Length; i++) { var placeholder = string.Format( "<{0}{1}>", job.JobName, i + 1); replacementsByJobs.Add(new KeyValuePair <string, string>(placeholder.ToUpper(), combatantsByJob[i].Name)); } // <JOB>形式を置換する // ただし、この場合は正規表現のグループ形式とする // また、グループ名にはジョブの略称を設定する // ex. <PLD> → (?<PLDs>Taro Paladin|Jiro Paladin) var names = string.Join("|", combatantsByJob.Select(x => x.Name).ToArray()); var oldValue = string.Format("<{0}>", job.JobName); var newValue = string.Format( "(?<{0}s>{1})", job.JobName.ToUpper(), names); replacementsByJobs.Add(new KeyValuePair <string, string>(oldValue.ToUpper(), newValue)); } } // 置換後のマッチングキーワードを消去する SpellTimerTable.ClearReplacedKeywords(); OnePointTelopTable.Default.ClearReplacedKeywords(); // スペルタイマーの再描画を行う SpellTimerTable.ClearUpdateFlags(); }