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; } }
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(); }); } } }
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(); }); } } }