Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
        /// <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;
        }