示例#1
0
        private void ProcessingResponse(string message)
        {
            try
            {
                string[] mass = message.Split(' ');
                if (mass[0].Equals($"ход"))
                {
                    Player player = players.Find(x => x.Name.Equals(mass[1]));
                    if (player == thisPlayer)
                    {
                        if (isNewRound)
                        {
                            form.Invoke(new MethodInvoker(form.ShowBetPanel));
                        }
                        else
                        {
                            form.Invoke(new MethodInvoker(form.ShowBetAndTrustPanel));
                        }
                    }
                    isNewRound = false;
                    form.Invoke(new UpdateForm <Player>(form.ShowWhoseTurn), player);
                }
                else if (mass[0].Equals("ставка"))
                {
                    Player player;
                    if (mass[1].Equals(thisPlayer.Name))
                    {
                        player = thisPlayer;
                    }
                    else
                    {
                        player = players.Find(x => x.Name.Equals(mass[1]));
                    }

                    Bet bet = new Bet()
                    {
                        betType = BetType.bet, CountOfDices = Int32.Parse(mass[2]), DiceValue = Int32.Parse(mass[3])
                    };

                    form.Invoke(new SendDataToForm <object>(form.ShowBetNotification), new List <object>()
                    {
                        bet, player
                    });
                }
                else if (mass[0].Equals($"выбыл"))
                {
                    Player player = players.Find(x => x.Name.Equals(mass[1]));
                    Label  label  = players.Find(x => x.Name.Equals(mass[1])).NameLabel;
                    if (mass[1].Equals(thisPlayer.Name))
                    {
                        Alive = false;
                    }
                    else
                    {
                        opponents.Remove(player);
                    }
                    form.Invoke(new UpdateForm <Label>(form.SetLabelColorToRed), label);
                }
                else if (mass[0].Equals("верю"))
                {
                    Player player;
                    if (mass[1].Equals(thisPlayer.Name))
                    {
                        player = thisPlayer;
                    }
                    else
                    {
                        player = players.Find(x => x.Name.Equals(mass[1]));
                    }
                    Bet bet = new Bet()
                    {
                        betType = BetType.trust
                    };

                    form.Invoke(new SendDataToForm <object>(form.ShowBetNotification), new List <object>()
                    {
                        bet, player
                    });
                }
                else if (mass[0].Equals("не"))//не верю
                {
                    Player player;
                    if (mass[2].Equals(thisPlayer.Name))
                    {
                        player = thisPlayer;
                    }
                    else
                    {
                        player = players.Find(x => x.Name.Equals(mass[2]));
                    }
                    Bet bet = new Bet()
                    {
                        betType = BetType.notTrust
                    };

                    form.Invoke(new SendDataToForm <object>(form.ShowBetNotification), new List <object>()
                    {
                        bet, player
                    });
                }
                else if (mass[0].Equals("кости"))
                {
                    for (int i = 1; i < mass.Length; i++)
                    {
                        if (thisPlayer.Name.Equals(mass[i]))
                        {
                            i += thisPlayer.dices.Count;
                        }
                        else
                        {
                            Player p = opponents.Find(x => x.Name.Equals(mass[i]));
                            for (int j = 0; j < p.dices.Count; j++)
                            {
                                i++;
                                p.dices[j].Num = Int32.Parse(mass[i]);
                            }
                        }
                    }
                    string log = "кости игроков:";
                    //log += dices.Where(x => x!=null);
                    foreach (var p in opponents)
                    {
                        log += " " + p;
                        foreach (var d in p.dices)
                        {
                            log += " " + d.Num;
                        }
                    }
                    LogMessage(log);

                    form.Invoke(new SendDataToForm <Player>(form.ShowPlayersDices), opponents);
                    Thread.Sleep(4000);
                }
                else if (mass[0].Equals("твои"))
                {
                    try
                    {
                        for (int i = 2; i < mass.Length; i++)
                        {
                            thisPlayer.dices[i - 2].Num = Int32.Parse(mass[i]);
                        }
                        form.Invoke(new UpdateForm <Player>(form.ChangeDicesOnTable), thisPlayer);
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message);
                    }

                    string log = "твои кости:";
                    //log += dices.Where(x => x!=null);
                    foreach (var d in thisPlayer.dices)
                    {
                        log += d;
                    }
                    LogMessage(log);

                    //form.Invoke(new SendDataToForm<Dice>(form.ChangeDicesOnTable), thisPlayer.dices);
                }
                else if (mass[0].Equals("проиграл"))
                {
                    Player player = players.Find(x => x.Name.Equals(mass[1]));
                    player.dices.RemoveAt(player.dices.Count - 1);
                    form.Invoke(new UpdateForm <Player>(form.RemovePlayersDice), player);
                }
                else if (mass[0].Equals("количество"))
                {
                    int      n   = Int32.Parse(mass[2]);
                    string[] arr = new string[n];
                    Array.Copy(mass, 3, arr, 0, n);
                    SetPlayersOnTable(n, arr);

                    form.Invoke(new SendDataToForm <Player>(form.SetPlayersNames), players);
                }
                else if (mass[0].Equals("игра") || mass[0].Equals("новый"))
                {
                    isNewRound = true;
                    form.Invoke(new MethodInvoker(form.HidePlayersDices));
                }
                else if (mass[0].Equals("выиграл"))
                {
                    form.Invoke(new UpdateForm <string>(form.ShowWinner), $"Поздравляем {mass[1]}!");
                    if (mass[1].Equals(thisPlayer.Name))
                    {
                        Alive = false;
                    }
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(message);
            }
        }