// ----------------------------------------------- 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(); } }
// 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; } }