Exemplo n.º 1
0
            // -----------------------------------------------
            public void OnClk_Btn_AI_talk()
            {
                if (mb_AI_talk)
                {
                    // AI talk 停止処理
                    mb_AI_talk = false;
                    m_GUI.m_Btn_AI_talk.Text    = "---";
                    m_GUI.m_TBox_info.BackColor = Color.White;

                    DB_cur.Clear_Uid_AI_talked();
                }
                else
                {
                    // AI talk 開始処理
                    mb_AI_talk = true;
                    m_GUI.m_Btn_AI_talk.Text    = "AI対応";
                    m_GUI.m_TBox_info.BackColor = Color.Orange;

                    DB_cur.Set_Uid_AI_talked(m_uinfo.m_uid.m_str_uid);
                    AI_talk.Set_TgtUname(m_uinfo.m_uname);

                    AI_talk.Greet_toTgt();
                }
            }
Exemplo n.º 2
0
        // GetJSON() の後にコールされる
        void Update_BanCtrls()
        {
            int     c_num_on_room = Math.Min(NUM_Btn_BAN, UInfo_onRoom.msa_uinfo.Count);
            BanCtrl ban_ctrl      = BanCtrls_Ctrlr.ms_BanCtrl_top;

            for (int idx = 0; idx < c_num_on_room; idx++)
            {
                UInfo       uinfo        = UInfo_onRoom.msa_uinfo[idx];
                BanCtrl_GUI ban_ctrl_GUI = msa_BanCtrl_GUIs[idx];

                // uinfo、ban_ctrl、ban_ctrl_GUI の3つを lead_id_this_session を軸として結びつけていく
                int lead_id_this_session = uinfo.m_id_this_session;

                if (ban_ctrl_GUI.m_id_this_session != lead_id_this_session)
                {
                    ban_ctrl = BanCtrls_Ctrlr.Update_RoomUsr(ban_ctrl, lead_id_this_session, ban_ctrl_GUI, uinfo);
                    ban_ctrl_GUI.m_id_this_session = lead_id_this_session;
                    ban_ctrl_GUI.m_ban_ctrl        = ban_ctrl;
                }

                if (ban_ctrl.mb_Rgst_ban && ban_ctrl.mb_Exec_Ban == false)
                {
                    ma_btn_idx_to_ban[m_tmnt_btn_idx_to_ban] = idx;
                    m_tmnt_btn_idx_to_ban++;
                }
                ban_ctrl = ban_ctrl.m_next;
            }

            int idx_tmnt;

            {
                int idx_eusr = ExitEip_onTalks.msa_encip_on_talks.Count;
                idx_tmnt = Math.Min(NUM_Btn_BAN, c_num_on_room + idx_eusr);
                idx_eusr--;                  // eusr は、後方から処理をしていく(時間的順序を考慮)

                for (int idx_GUI = c_num_on_room; idx_GUI < idx_tmnt; idx_eusr--, idx_GUI++)
                {
                    BanCtrl_GUI ban_ctrl_GUI = msa_BanCtrl_GUIs[idx_GUI];

                    // exit_user、ban_ctrl、ban_ctrl_GUI の3つを lead_id_this_session を軸として結びつけていく
                    int lead_id_this_session = ExitEip_onTalks.msa_id_this_session[idx_eusr];

                    if (ban_ctrl_GUI.m_id_this_session != lead_id_this_session)
                    {
                        ban_ctrl = BanCtrls_Ctrlr.Update_ExitUsr(ban_ctrl, lead_id_this_session, ban_ctrl_GUI, idx_eusr);

                        ban_ctrl_GUI.m_id_this_session = lead_id_this_session;
                        ban_ctrl_GUI.m_ban_ctrl        = ban_ctrl;
                    }
                    ban_ctrl = ban_ctrl.m_next;
                }
            }

            // 非使用の ban_ctrl_GUI の id_this_session をクリア
            for (int idx_GUI = idx_tmnt; idx_GUI < NUM_Btn_BAN; idx_GUI++)
            {
                BanCtrl_GUI ban_ctrl_GUI = msa_BanCtrl_GUIs[idx_GUI];
                if (ban_ctrl_GUI.m_id_this_session == 0)
                {
                    break;
                }

                ban_ctrl_GUI.m_Btn_AI_talk.Text    = "---";
                ban_ctrl_GUI.m_Btn_AI_talk.Enabled = false;

                ban_ctrl_GUI.m_Btn_ban.Text    = " ---";
                ban_ctrl_GUI.m_Btn_ban.Enabled = false;

                ban_ctrl_GUI.m_TBox_info.Visible = false;
                ban_ctrl_GUI.m_id_this_session   = 0;
            }

            // 非使用の ban_ctrl の id_this_session をクリア
            while (ban_ctrl != null)
            {
                if (ban_ctrl.m_id_this_session == 0)
                {
                    break;
                }

                ban_ctrl.m_id_this_session = 0;
                ban_ctrl = ban_ctrl.m_next;
            }

            // BanCtrl の表示更新を終えたタイミングで、即時 BAN 対象者がいたら BAN を実行する
            for (int i = 0; i < m_tmnt_btn_idx_to_ban; i++)
            {
                msa_BanCtrl_GUIs[ma_btn_idx_to_ban[i]].m_ban_ctrl.OnClk_Btn_BAN();
            }
            m_tmnt_btn_idx_to_ban = 0;

            // AI_talk 対応ユーザがいたら、AI_talk に対応させる
            if (DB_cur.msb_to_appear_AI_talk)
            {
                AI_talk.Talk_toTgt();
                DB_cur.msb_to_appear_AI_talk = false;
            }
        }