Example #1
0
            // -----------------------------------------------
            public void Draw_AsExitUsr(BanCtrl_GUI ctrl_GUI)
            {
                if (m_GUI == ctrl_GUI)
                {
                    return;
                }

                m_GUI = ctrl_GUI;
                m_GUI.m_Btn_AI_talk.Enabled = false;
                m_GUI.m_Btn_AI_talk.Text    = "---";

                Button btn_ban = m_GUI.m_Btn_ban;

                btn_ban.Text = m_exit_unames;

                TextBox tbox_info = m_GUI.m_TBox_info;

                tbox_info.Text    = $"[{m_exit_unames}] / {m_encip}";
                tbox_info.Visible = true;

                if (mb_Rgst_ban)
                {
                    btn_ban.Enabled     = false;
                    tbox_info.BackColor = Color.LightPink;
                }
                else
                {
                    btn_ban.Enabled     = true;
                    tbox_info.BackColor = Color.Gainsboro;
                }
            }
Example #2
0
            // -----------------------------------------------
            public void Draw_AsRoomUsr(BanCtrl_GUI ctrl_GUI)
            {
                if (m_GUI == ctrl_GUI)
                {
                    return;
                }

                m_GUI = ctrl_GUI;
                m_GUI.m_Btn_AI_talk.Enabled = true;
                m_GUI.m_Btn_ban.Text        = m_uinfo.m_uname;
                m_GUI.m_Btn_ban.Enabled     = true;

                TextBox tbox_info = m_GUI.m_TBox_info;

                tbox_info.Text      = $"[{string.Join(", ", m_uinfo.m_unames_this_session)}] / {m_uinfo.m_uid.m_str_uid}";
                tbox_info.Visible   = true;
                tbox_info.BackColor = Color.White;

                if (mb_AI_talk)
                {
                    m_GUI.m_Btn_AI_talk.Text = "AI対応";
                    tbox_info.BackColor      = Color.Orange;
                }
                else
                {
                    m_GUI.m_Btn_AI_talk.Text = "---";
                }

                if (mb_Rgst_ban)
                {
                    tbox_info.BackColor = Color.HotPink;
                }
            }
Example #3
0
        // ------------------------------------------------------------------------------------
        void Create_BanCtrls_GUI()
        {
            int  top_btn      = TOP_Btn_BAN;
            Size size_ai_talk = new Size(WIDTH_Btn_delayBAN, HEIGHT_Btn_BAN);
            Size size_tbox    = new Size(WIDTH_TBox_BAN, HEIGHT_Btn_BAN);
            Size size_btn     = new Size(WIDTH_Btn_BAN, HEIGHT_Btn_BAN);

            for (int idx = 0; idx < NUM_Btn_BAN; top_btn += HEIGHT_Line, idx++)
            {
                BanCtrl_GUI btn_ctrl_GUI = new BanCtrl_GUI();
                msa_BanCtrl_GUIs[idx] = btn_ctrl_GUI;

                // ---------------------------
                Button btn_ai_talk = new Button();

                btn_ai_talk.Font     = MainForm.ms_meiryo_Ke_P_8pt;
                btn_ai_talk.Location = new Point(LEFT_Btn_delayBAN, top_btn);
                btn_ai_talk.Size     = size_ai_talk;
                btn_ai_talk.Text     = "---";
                btn_ai_talk.Enabled  = false;
                btn_ai_talk.UseVisualStyleBackColor = true;
                btn_ai_talk.Click += btn_ctrl_GUI.OnClk_Btn_AI_talk;

                splitContainer1.Panel1.Controls.Add(btn_ai_talk);
                msa_BanCtrl_GUIs[idx].m_Btn_AI_talk = btn_ai_talk;

                // ---------------------------
                Button btn = new Button();

                btn.Font     = MainForm.ms_meiryo_Ke_P_9pt;
                btn.Location = new Point(LEFT_Btn_BAN, top_btn);
                btn.Size     = size_btn;
                btn.Text     = " ---";
                btn.Enabled  = false;
                btn.UseVisualStyleBackColor = true;
                btn.TextAlign = ContentAlignment.MiddleLeft;
                btn.Click    += btn_ctrl_GUI.OnClk_Btn_BAN;

                splitContainer1.Panel1.Controls.Add(btn);
                msa_BanCtrl_GUIs[idx].m_Btn_ban = btn;

                // ---------------------------

                TextBox tbox = new TextBox();

                tbox.Font     = MainForm.ms_meiryo_Ke_P_9pt;
                tbox.Location = new Point(LEFT_TBox_BAN, top_btn);
                tbox.Size     = size_tbox;
                tbox.Visible  = false;

                splitContainer1.Panel1.Controls.Add(tbox);
                msa_BanCtrl_GUIs[idx].m_TBox_info = tbox;
            }
        }
Example #4
0
            // -----------------------------------------------
            public void Set_NewUInfo(int id_this_session, BanCtrl_GUI ctrl_GUI, UInfo uinfo)
            {
                m_id_this_session = id_this_session;
                m_GUI             = null;      // Draw_AsRoomUsr() で設定 & 描画を行う

                m_uinfo       = uinfo;
                m_exit_unames = null;
                m_encip       = uinfo.m_encip.m_str_encip;

                mb_Rgst_ban = uinfo.mb_to_ban_onAttend;
                mb_Exec_Ban = false;
                mb_AI_talk  = false;

                this.Draw_AsRoomUsr(ctrl_GUI);
            }
Example #5
0
            // -----------------------------------------------
            public void Set_NewExitUsr(int id_this_session, BanCtrl_GUI ctrl_GUI, int idx_eusr)
            {
                m_id_this_session = id_this_session;
                m_GUI             = null;      // Draw_AsExitUsr() で設定 & 描画を行う

                m_uinfo       = null;
                m_exit_unames = string.Join(", ", ExitEip_onTalks.msa_unames_on_talks[idx_eusr]);
                m_encip       = ExitEip_onTalks.msa_encip_on_talks[idx_eusr];

                if ((ExitEip_onTalks.msa_flags[idx_eusr] & ExitEip_onTalks.ExitUsr_Stt.EN_Regist_BAN) == 0)
                {
                    mb_Rgst_ban = false;
                }
                else
                {
                    mb_Rgst_ban = true;
                }

                mb_Exec_Ban = false;
                mb_AI_talk  = false;

                this.Draw_AsExitUsr(ctrl_GUI);
            }
Example #6
0
            // ban_ctrl に変更を行うときにコールされる関数
            // 戻り値: 実際に登録された BanCtrl
            public static BanCtrl Update_RoomUsr(BanCtrl pos_ctrl, int id_this_session, BanCtrl_GUI ctrl_GUI, UInfo uinfo)
            {
                BanCtrl ctrl = pos_ctrl;

                if (ctrl == ms_BanCtrl_bottom)
                {
                    ctrl.Set_NewUInfo(id_this_session, ctrl_GUI, uinfo);
                }
                else
                {
                    while (true)
                    {
                        int ctrl_id_this_session = ctrl.m_id_this_session;
                        if (ctrl_id_this_session == id_this_session)
                        {
                            // ユーザ情報はそのままでよい
                            ctrl.Draw_AsRoomUsr(ctrl_GUI);
                            break;
                        }

                        if (ctrl_id_this_session == 0)
                        {
                            ctrl.Set_NewUInfo(id_this_session, ctrl_GUI, uinfo);
                            break;
                        }
                        if (ctrl_id_this_session < 0)
                        {
                            ctrl = InsertFromLast(ctrl);
                            ctrl.Set_NewUInfo(id_this_session, ctrl_GUI, uinfo);
                            break;
                        }
                        if (ctrl_id_this_session > id_this_session)
                        {
                            throw new Exception(
                                      "!!! エラー検出: ctrl_id__this_session > id_this_session in BanCtrls_Ctrlr.Update_onRoomUsr()");
                        }

                        ctrl = MoveToLast(ctrl);
                    }
                }

                // GUI の表示を update する
//				ctrl.Draw_AsRoomUsr();
                return(ctrl);
            }
Example #7
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;
            }
        }