Example #1
0
        private void DisplayResivedMessage()
        {
            string MsgType = message.Split('|')[1];
            string user = message.Split('|')[2];
            string user_name = user.Split('¶')[1];
            string user_id = user.Split('¶')[2];
            int user_color = Convert.ToInt32(user.Split('¶')[3]);
            IPAddress user_ip = IPAddress.Parse(user.Split('¶')[4]);
            int user_pen_color = Convert.ToInt32(user.Split('¶')[5]);
            int user_pen_width = Convert.ToInt32(user.Split('¶')[6]);
            string user_paint_type = user.Split('¶')[7];
            Pen p = new Pen(Color.FromArgb(user_pen_color), user_pen_width);
            p.StartCap = LineCap.Round;
            p.EndCap = LineCap.Round;
            string time = DateTime.Now.ToString("t");

            CUser sender_user = new CUser(user_name, user_id, Color.FromArgb(user_color), user_ip,p,user_paint_type);

            switch (MsgType)
            {
                //Вход в чат
                case "i":
                    AddText(textMessages," ***" + sender_user.name + " вошёл в чат***\n", "system","null");
                    SendData("r",'|' + sender_user.ID);
                    if (me.ID != sender_user.ID && GetUserByID(sender_user.ID)==null) UsersListAdd(sender_user);
                break;
                //Выход из чата
                case "o":
                    AddText(textMessages, " ***" + GetUserByID(sender_user.ID).name + " вышел из чата***\n", "system", "null");
                    if (GetUserByID(sender_user.ID)!=null) UsersListRemove(sender_user.ID);
                break;
                //Сообщение в общий чат
                case "m":
                    AddText(textMessages, message.Split('|')[3] + "\n", "user", sender_user.ID);
                    toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time;

                break;
                //Сообщение о присутсвии в чате
                case "r":
                    if (me.ID == (message.Split('|')[3]) & me.ID != sender_user.ID) UsersListAdd(sender_user);
                break;
                //Смена цвета чата
                case "cc":
                    SetUserColor(sender_user.ID, user_color);
                    AddText(textMessages, " ***Пользователь " + sender_user.name + " сменил свой цвет чата***\n", "system", sender_user.ID);
                break;
                //Смена имени
                case "nc":
                    AddText(textMessages, " ***Пользователь сменил своё имя (" + GetUserByID(sender_user.ID).name + "->" + message.Split('|')[3] + ")***\n", "system", "null");
                    GetUserByID(sender_user.ID).name = message.Split('|')[3];
                    users_listbox.Items[GetUserPos(sender_user.ID)] = message.Split('|')[3];
                    ts_name.Text = me.name;
                    if (PageIsSet(sender_user) != null) PageIsSet(sender_user).Text = sender_user.name;
                break;
                //Прием файла
                case "sf":
                if (me.ID == (message.Split('|')[3]))
                {
                    int k = GetFormNum();
                    rf[k] = new transferfile_form(me, sender_user, Convert.ToInt32(message.Split('|')[7]), message.Split('|')[4], message.Split('|')[8], k,Int32.Parse( message.Split('|')[9]));
                    rf[k].Show();
                }
                break;
                //Подтверждение приема
                case "rf":
                if (me.ID == (message.Split('|')[3]))
                {
                    int n = Int32.Parse(message.Split('|')[5]);
                    if (rf[n] != null) {
                         rf[n].heformnum = Int32.Parse(message.Split('|')[6]);
                         rf[n].bw_sender.RunWorkerAsync();}
                }
                break;
                //Отказ от файла
                case "cf":
                if (me.ID == (message.Split('|')[3]))
                {
                    int n=Int32.Parse(message.Split('|')[4]);
                    rf[n].lbl_state.Text = "Пользователь отказался от вашего файла";
                    rf[n].send_btn.Enabled = true;
                    rf[n].choosefile_btn.Enabled = true;
                }
                break;
                //Прерывание передачи
                case "fc":
                if (me.ID == (message.Split('|')[3]))
                {
                    int n = Int32.Parse(message.Split('|')[4]);
                    if (rf[n] != null)
                    rf[n].client.Close();
                }
                break;
                //Создание секретного чата
                case "nsc":
                if (me.ID == (message.Split('|')[3]))
                {
                   CreateSecretChat(sender_user);
                }
                break;
                //Сообщение в секретный чат
                case "scm":
                    if (me.ID == (message.Split('|')[3]))
                    {
                        if (PageIsSet(sender_user) == null) { CreateSecretChat(sender_user); }
                        AddText(tabControl.TabPages["tab"+sender_user.ID].Controls["rtb"+sender_user.ID] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID);
                        if (tabControl.TabPages["tab" + sender_user.ID] != tabControl.SelectedTab)
                        {
                            tabControl.TabPages["tab" + sender_user.ID].Tag = 1;
                        }
                    }
                    tabControl.SelectedTab.Text = tabControl.SelectedTab.Text;
                    toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time;
                break;
                //Запрос обновления списка пользователей
                case "rl":
                     SendData("rla","|"+sender_user.ID);
                break;
                //Ответ на запрос обновления списка пользователей
                case "rla":
                    if (me.ID == (message.Split('|')[3]))
                    {
                        if (GetUserByID(sender_user.ID) != null) GetUserByID(sender_user.ID).Refresh();
                        else UsersListAdd(sender_user);
                    }
                break;
                //Сообщения в канал
                case "chm":
                if (PageIsSet(message.Split('|')[3])!=null)
                {
                    AddText(tabControl.TabPages["Chanel_tab_" + message.Split('|')[3]].Controls["Chanel_rtb_" + message.Split('|')[3]] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID);
                }
                break;
                //Рисование
                case "d":
                if (sender_user.ID != me.ID)
                {
                    int x1 = Convert.ToInt32(message.Split('|')[3]);
                    int y1 = Convert.ToInt32(message.Split('|')[4]);
                    int x2 = Convert.ToInt32(message.Split('|')[5]);
                    int y2 = Convert.ToInt32(message.Split('|')[6]);
                    switch (message.Split('|')[7])
                    {
                        case "p": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen);
                            break;
                        case "l": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen);
                            break;
                        case "e": PaintEllips(x1, y1, x2, y2, sender_user.P_Pen,sender_user.paint_type);
                            break;
                        case "r": PaintRectangle(x1, y1, x2, y2, sender_user.P_Pen, sender_user.paint_type);
                            break;
                    }
                    PBboard.Refresh();
                    toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name;
                }
                break;
                //Смена вида рисования
                case "pc":
                    GetUserByID(sender_user.ID).P_Pen = sender_user.P_Pen;
                    GetUserByID(sender_user.ID).paint_type = sender_user.paint_type;
                break;
                //Отчистка доски
                case "bc":
                    PBboard.Image = Image.FromFile(Environment.CurrentDirectory + @"\white.bmp");
                    toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name;
                break;
                #region knb
                //Предложение сыграть в игру КНБ
                case "g_knb":
                if (me.ID == (message.Split('|')[3]))
                {
                    DialogResult d = MessageBox.Show(sender_user.name + " предлагает Вам сыграть в КНБ, высогласны?", "Предложение развлечься", MessageBoxButtons.YesNo);
                    if (d == DialogResult.Yes)
                    {
                        SendData("g_knb_yes", "|" + sender_user.ID);
                        f = new f_GameKNB(sender_user, me);
                        f.Show();
                    }
                    else
                    {
                        SendData("g_knb_no", "|" + sender_user.ID);
                    }
                }
                break;
                //Пользователь согласился играть в КНБ
                case "g_knb_yes":
                if (me.ID == (message.Split('|')[3]))
                {
                    f = new f_GameKNB(sender_user, me);
                    f.Show();
                }
                break;
                //Пользователь отказался играть в КНБ
                case "g_knb_no":
                if (me.ID == (message.Split('|')[3]))
                {
                    MessageBox.Show(sender_user.name + " отказался играть с вами!");
                }
                break;
                //Пользователь выбрал элемент КНБ
                case "g_knb_vybral":
                if (me.ID == (message.Split('|')[3]) || me.ID == sender_user.ID)
                {
                    if (me.ID == (message.Split('|')[3]))
                    {
                        f.prot_vybor = (message.Split('|')[4]);
                        f.l_K.Visible = false;
                        f.l_N.Visible = false;
                        f.l_B.Visible = false;
                    }
                    if (((f.my_vybor != "") && (me.ID == message.Split('|')[3])) || ((f.prot_vybor != "") && (me.ID == sender_user.ID)))
                    {
                        switch (f.prot_vybor)
                        {
                            case "K": f.l_choose.Image = arrok__chat.Properties.Resources.web; break;
                            case "N": f.l_choose.Image = arrok__chat.Properties.Resources.cut; break;
                            case "B": f.l_choose.Image = arrok__chat.Properties.Resources.copy; break;
                        }
                        if (((f.my_vybor == "K") && (f.prot_vybor == "N")) || ((f.my_vybor == "N") && (f.prot_vybor == "B")) || ((f.my_vybor == "B") && (f.prot_vybor == "K")))
                        {
                            MessageBox.Show("Вы выйграли");
                            f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString();
                        }
                        else if (f.prot_vybor == f.my_vybor)
                        {
                            MessageBox.Show("Ничья");
                            f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString();
                            f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString();
                        }
                        else
                        {
                            MessageBox.Show("Вы проиграли");
                            f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString();
                        }
                        f.l_K.Visible = true;
                        f.l_N.Visible = true;
                        f.l_B.Visible = true;
                        f.l_choose.Image = arrok__chat.Properties.Resources.user;
                        f.b_K.Visible = true;
                        f.b_N.Visible = true;
                        f.b_B.Visible = true;
                        f.b_choose.BackgroundImage = arrok__chat.Properties.Resources.user;
                        f.b_choose.Enabled = false;
                        f.my_vybor = "";
                        f.prot_vybor = "";
                    }
                }
                break;
                #endregion

            }
        }
Example #2
0
 private int GetFormNum()
 {
     int n=0;
     foreach (transferfile_form frm in rf)
     {
         if (frm == null) return n;
         n += 1;
     }
     transferfile_form[] rff=new transferfile_form[rf.Length];
     rf.CopyTo(rff, 0);
     rf= new transferfile_form[rff.Length + 1];
     rff.CopyTo(rf, 0);
     return n;
 }
Example #3
0
 private void user_conMenu_sendFile_Click(object sender, EventArgs e)
 {
     int k = GetFormNum();
     rf[k] = new transferfile_form(me,users[users_listbox.SelectedIndex],k);
     rf[k].Show();
 }