/// <summary> /// 人外CO役職の更新を行う /// </summary> /// <param name="agent">エージェント</param> /// <param name="role">役職</param> /// <param name="talk">更新が行われた発話</param> private void UpdateMonsterSideComingOut(Agent agent, Role role, Talk talk) { // CO中の役職を確認する foreach (ComingOut co in ComingOut) { if (co.Agent == agent && co.IsEnable()) { if (co.Role != role) { // 違う役職をCOしていた場合、古いCOを無効にする co.Cancel(talk); break; } else { // 同じ役職をCOしていた場合、更新は必要ないため抜ける return; } } } // COリストに追加 ComingOut newCO = new ComingOut(agent, role, talk); MonsterSideComingOut.Add(newCO); return; }
/// <summary> /// CO役職の更新を行う /// </summary> /// <param name="agent">エージェント</param> /// <param name="role">役職</param> /// <param name="talk">更新が行われた発話</param> private void UpdateComingOut(Agent agent, Role role, Talk talk) { Boolean cancel = false; // CO中の役職を確認する foreach (ComingOut co in ComingOut) { if (co.Agent == agent && co.IsEnable()) { if (co.Role != role) { // 違う役職をCOしていた場合、古いCOを無効にする co.Cancel(talk); cancel = true; break; } else { // 同じ役職をCOしていた場合、更新は必要ないため抜ける return; } } } // COリストに追加 ComingOut newCO = new ComingOut(agent, role, talk); ComingOut.Add(newCO); // 村騙りを考慮せず内訳を削除する if (IsRemoveVillagerFakeCO) { if (cancel) { // 取り消し有り → 内訳再編成 RemakeViewPointInfo(); } else { // 取り消し無し → 内訳の削除 RemovePatternFromComingOut(role); } } return; }