Exemplo n.º 1
0
        void Delegat()
        {
            Intent   intent   = null;
            EditText edittext = FindViewById <EditText>(Resource.Id.loginArea);

            byte[]      buffer = new byte[MAX_LENGTH];
            AlertDialog ad     = null;

            buffer = System.Text.Encoding.ASCII.GetBytes(string.Format("{0};{1}", Convert.ToInt32(MessageTypes.Hello), edittext.Text));
            Sockets.client.GetStream().Write(buffer, 0, buffer.Length);
            buffer = new byte[MAX_LENGTH];
            Sockets.client.GetStream().Read(buffer, 0, buffer.Length);
            string[] parse = MessageParser.Split(buffer);
            switch (MessageParser.ToMessageType(parse[0]))
            {
            case MessageTypes.WelcomeClient:
                intent = new Intent(this, typeof(GameManager));
                intent.PutExtra("Nickname", edittext.Text);
                //strbuff = System.Text.Encoding.ASCII.GetString(buffer).Split(';')[1];
                intent.PutExtra("PlayerList", parse[1]);
                StartActivity(intent);
                break;

            case MessageTypes.PlayerExist:
                ad = new AlertDialog.Builder(this).Create();
                ad.SetCancelable(false);     // This blocks the 'BACK' button
                ad.SetMessage("Gracz o takim nicku istnieje! Wpisz inny login");
                ad.SetButton("OK", delegate {
                    Sockets.client.Close();
                    ConnectToServer();
                });
                ad.Show();
                break;

            default:
                ad = new AlertDialog.Builder(this).Create();
                ad.SetCancelable(false);     // This blocks the 'BACK' button
                ad.SetMessage("Nieoczekiwany błąd. Aplikacja zostanie zamknięta.");
                ad.SetButton("OK", delegate {
                    Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                });
                ad.Show();
                break;
            }
        }
Exemplo n.º 2
0
        void GameThreadProc()
        {
            NetworkStream stream = Sockets.client.GetStream();

            byte[]      buffer;
            AlertDialog ad = null;

            while (Sockets.client.Connected)
            {
                try
                {
                    buffer = new byte[MainActivity.MAX_LENGTH];
                    stream.Read(buffer, 0, buffer.Length);
                    string[] data = MessageParser.Split(buffer);
                    if (data.Length == 1)
                    {
                        Sockets.client.Close();
                        RunOnUiThread(delegate
                        {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false); // This blocks the 'BACK' button
                            ad.SetMessage("Nie mo¿na po³¹czyæ siê z serwerem. SprawdŸ po³¹czenie z internetem.");
                            ad.SetButton("OK", delegate
                            {
                                Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                            });
                            ad.Show();
                        });
                    }
                    switch (MessageParser.ToMessageType(data[0]))
                    {
                    case MessageTypes.TurnClient:
                        RunOnUiThread(delegate { ParseCanvas(data[1]); });
                        isMyTurn = true;
                        break;

                    case MessageTypes.WinClient:
                        RunOnUiThread(delegate
                        {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false);     // This blocks the 'BACK' button
                            if (data[1].Contains(nickname))
                            {
                                ad.SetMessage("Gratulacje! Wygra³eœ!");
                            }
                            else
                            {
                                ad.SetMessage("Niestety przegra³eœ!");
                            }
                            ad.SetButton("WyjdŸ", delegate
                            {
                                GameManager.thLock = false;
                                Finish();
                            });
                            ad.Show();
                        });
                        return;

                        break;

                    case MessageTypes.LeftClient:
                        RunOnUiThread(delegate
                        {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false);     // This blocks the 'BACK' button
                            ad.SetMessage("Twój przeciwnik opuœci³ grê!");
                            ad.SetButton("WyjdŸ", delegate
                            {
                                //th.Abort();
                                GameManager.thLock = false;
                                Finish();
                            });
                            ad.Show();
                        });
                        return;

                        break;
                    }
                }
                catch (System.Threading.ThreadAbortException e)
                {
                    return;
                }
                catch (Exception e)
                {
                    Sockets.client.Close();
                    RunOnUiThread(delegate
                    {
                        ad = new AlertDialog.Builder(this).Create();
                        ad.SetCancelable(false); // This blocks the 'BACK' button
                        ad.SetMessage("Nie mo¿na po³¹czyæ siê z serwerem. SprawdŸ po³¹czenie z internetem.");
                        ad.SetButton("OK", delegate
                        {
                            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                        });
                        ad.Show();
                    });
                }
            }
        }
Exemplo n.º 3
0
        void MessageExecuteThread()
        {
            byte[]        buffer;
            NetworkStream stream = Sockets.client.GetStream();

            while (Sockets.client.Connected)
            {
                if (thLock)
                {
                    continue;
                }

                if (isPlaying)
                {
                    buffer = System.Text.Encoding.ASCII.GetBytes(string.Format("{0};{1}", Convert.ToInt32(MessageTypes.ListRequestClient), nickname));
                    stream.Write(buffer, 0, buffer.Length);
                    isPlaying = false;
                }

                try
                {
                    buffer = new byte[MainActivity.MAX_LENGTH];
                    stream.Read(buffer, 0, buffer.Length);
                    string[] data = MessageParser.Split(buffer);
                    if (data.Length == 1)
                    {
                        Sockets.client.Close();
                        RunOnUiThread(delegate {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false); // This blocks the 'BACK' button
                            ad.SetMessage("Nie mo¿na po³¹czyæ siê z serwerem. SprawdŸ po³¹czenie z internetem.");
                            ad.SetButton("OK", delegate
                            {
                                Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                            });
                            ad.Show();
                        });
                    }
                    switch (MessageParser.ToMessageType(data[0]))
                    {
                    case MessageTypes.SendPlayers:
                        ParsePlayerList(data[1]);
                        lv.Post(delegate { lv.Adapter = new PlayerListAdapter(this, this.data); });
                        break;

                    case MessageTypes.InviteClient:
                        if (data[1] == nickname)
                        {
                            break;
                        }
                        RunOnUiThread(delegate
                        {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false);     // This blocks the 'BACK' button
                            ad.SetMessage(string.Format("Masz zaproszenie do gry od {0}.", data[1]));
                            ad.SetButton("Odrzuæ", delegate
                            {
                                buffer = System.Text.Encoding.ASCII.GetBytes(string.Format("{0};{1}", Convert.ToInt32(MessageTypes.Decline), data[1]));
                                stream.Write(buffer, 0, buffer.Length);
                                czyOtwartyAlert = false;
                            });
                            ad.SetButton2("Akceptuj", delegate
                            {
                                buffer = System.Text.Encoding.ASCII.GetBytes(string.Format("{0};{1}", Convert.ToInt32(MessageTypes.Accept), data[1]));
                                stream.Write(buffer, 0, buffer.Length);
                                czyOtwartyAlert = false;
                            });
                            ad.Show();
                        });
                        czyOtwartyAlert = true;
                        while (czyOtwartyAlert)
                        {
                            continue;
                        }
                        Thread.Sleep(100);
                        break;

                    case MessageTypes.StartClient:
                        RunOnUiThread(delegate
                        {
                            Intent intent = new Intent(this, typeof(GameActivity));
                            intent.PutExtra("Nickname", nickname);
                            intent.PutExtra("Data", data[1]);
                            StartActivity(intent);
                        });
                        thLock    = true;
                        isPlaying = true;
                        break;

                    case MessageTypes.PlayerIsBusy:
                        RunOnUiThread(delegate {
                            ad = new AlertDialog.Builder(this).Create();
                            ad.SetCancelable(false);                                     // This blocks the 'BACK' button
                            ad.SetMessage(string.Format("Gracz {0} jest zajêty.", data[1]));
                            ad.SetButton("Zamknij", delegate {});
                            ad.Show();
                        });
                        break;
                    }
                }
                catch (System.Threading.ThreadAbortException e)
                {
                    return;
                }
                catch (Exception e)
                {
                    Sockets.client.Close();
                    RunOnUiThread(delegate {
                        ad = new AlertDialog.Builder(this).Create();
                        ad.SetCancelable(false); // This blocks the 'BACK' button
                        ad.SetMessage("Nie mo¿na po³¹czyæ siê z serwerem. SprawdŸ po³¹czenie z internetem.");
                        ad.SetButton("OK", delegate
                        {
                            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                        });
                        ad.Show();
                    });
                }
            }
        }