Пример #1
0
        // ---------------------------------------------------
        // 戻り値: ユーザ注意喚起メッセージを出力する際に利用可能な eidx
        public static int Regist(string encip, string uname)
        {
            int eidx = msa_encip_on_talks.IndexOf(encip);

            if (eidx < 0)
            {
                msa_encip_on_talks.Add(encip);
                msa_unames_on_talks.Add(DB_cur.NewStringList(uname));

                // 新規登録時にのみ encip to ban チェックを行う
                ExitUsr_Stt exitustt = ExitUsr_Stt.EN_OnTalksFlag;
                if (DB_static.IsBanned(encip))
                {
                    exitustt = ExitUsr_Stt.EN_OnTalksFlag | ExitUsr_Stt.EN_Regist_BAN;
                }
                msa_flags.Add(exitustt);

                msa_id_this_session.Add(m_next_id_this_session);
                m_next_id_this_session--;

                return(msa_encip_on_talks.Count - 1);
            }
            else
            {
                int name_idx = msa_unames_on_talks[eidx].IndexOf(uname);
                if (name_idx < 0)
                {
                    msa_unames_on_talks[eidx].Insert(0, uname);
                }
                msa_flags[eidx] |= ExitUsr_Stt.EN_OnTalksFlag;

                return(eidx);
            }
        }
Пример #2
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();
                }
            }
Пример #3
0
        bool mb_getJSON = false;          // await Drrr_Host2.GetJSON() で、awaiter が溜まるのを防ぐ
        async void GetJSON(DateTime datetime)
        {
            if (mb_getJSON)
            {
                return;
            }
            m_Btn_connect.Enabled = false;
            mb_getJSON            = true;

            // --------------------------------------------------
            // JOSN の取得
            byte[] bytes_utf8;
            try
            {
                Drrr_Host2.HttpTask getJSON_task = Drrr_Host2.GetJSON_Task_Factory.Create();
                await getJSON_task.DoWork();

                mb_getJSON            = false;
                m_Btn_connect.Enabled = true;

                if (getJSON_task.m_str_cancel != null)
                {
                    MainForm.WriteStatus($"!!! 「JSON取得」がキャンセルされました。\r\n{getJSON_task.m_str_cancel}");
                    return;
                }

                bytes_utf8 = await getJSON_task.m_http_res.Content.ReadAsByteArrayAsync();
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus(ex.ToString() + "\r\n");
                mb_getJSON            = false;
                m_Btn_connect.Enabled = true;
                return;
            }

            // --------------------------------------------------
            // JOSN の解析
            try
            {
                StringBuilder sb = DB_cur.Anlz_RoomJSON(bytes_utf8);
                if (sb.Length > 0)
                {
                    MainForm.WriteMsg(sb.ToString());
                }

                Update_BanCtrls();

                // 新規入室者へのメッセージ処理
                if (UInfo_onRoom.msb_dtct_new_usr)
                {
                    UInfo_onRoom.msb_dtct_new_usr = false;

                    try
                    {
                        Drrr_Host2.HttpTask postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create(
                            "来室者用自動メッセージ:この部屋の趣旨は、以下の URL を参考にしてください。宜しくお願いします。");
                        await postmsg_task.DoWork();

                        if (postmsg_task.m_str_cancel != null)
                        {
                            throw new Exception(postmsg_task.m_str_cancel);
                        }

                        await Task.Delay(750);

                        postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create("https://github.com/kn201905/Ron_BAN");
                        await postmsg_task.DoWork();

                        if (postmsg_task.m_str_cancel != null)
                        {
                            throw new Exception(postmsg_task.m_str_cancel);
                        }
                    }
                    catch (Exception ex)
                    {
                        MainForm.WriteStatus($"!!! 来室者用メッセージの出力時にエラーが発生しました。\r\n{ex.ToString()}\r\n\r\n");
                    }
                }
            }
            catch (Exception ex)
            {
                MainForm.WriteStatus($"!!! JSON解析中に例外が発生しました。JSON を保存します。\r\n{ex.ToString()}\r\n\r\n");

                File.WriteAllText(@"Z:err_" + datetime.ToString("HH_mm_ss_f") + ".json"
                                  , Encoding.UTF8.GetString(bytes_utf8));
            }
        }