Exemplo n.º 1
0
 public static void GestioneGameMessages(string msg, int PlayerID, int mod) // simile a gestione attacco
 {
     state = 0;                                                             // riposrto lo stato generale a 0
     if (mod == 7)
     {
         foreach (KeyValuePair <int, Client> keyValue in ClientManager.client)
         {
             DataSender.SendNomi(PlayerID);
             foreach (KeyValuePair <int, Client> chiave in ClientManager.client)
             {
                 foreach (KeyValuePair <int, string> nome in playerList_Name)
                 {
                     DataSender.SendData(PlayerID, nome.Value);
                 }
                 DataSender.SendData(PlayerID, "Fine Nomi");
                 foreach (KeyValuePair <int, string> nome in playerList_Color)
                 {
                     DataSender.SendData(PlayerID, nome.Value);
                 }
             }
             DataSender.SendEnd(PlayerID);
         }
     }
     else
     {
         foreach (KeyValuePair <int, Client> keyValue in ClientManager.client)
         {
             if (keyValue.Key != PlayerID)
             {
                 DataSender.SendPosizionamento(keyValue.Key, msg, mod);
             }
         }
     }
 }
Exemplo n.º 2
0
        public static void CreateNewConnection(TcpClient tempclient)
        {
            Client newclient = new Client();

            newclient.socket       = tempclient;
            newclient.COnnectionID = ((IPEndPoint)tempclient.Client.RemoteEndPoint).Port;
            newclient.Start();
            client.Add(newclient.COnnectionID, newclient); // connessione al server

            DataSender.SendWelcomeMessage(newclient.COnnectionID);
        }
Exemplo n.º 3
0
 public static void StartGame()
 {
     SetGame(1);
     foreach (KeyValuePair <int, string> keyValue in playerList_Color)
     {
         int    c = keyValue.Key;
         string s = keyValue.Value;
         if (s == "rosso")
         {
             DataSender.SendTurn(keyValue.Key); // mando al player la notifica che sia il suo turno
             Console.WriteLine("turno del player " + keyValue.Key);
         }
     }
     turno = 1;
 }
Exemplo n.º 4
0
        public static void HandleHelloServer(int connectionID, byte[] data)
        {
            ByteBuffer buffer = new ByteBuffer();

            buffer.writeBytes(data);
            int    packetID = buffer.ReadInteger();
            string msg      = buffer.ReadString();

            buffer.Dispose();

            if (GameManager.GetState() == 0)
            {
                switch (msg)
                {
                case "ora sono connesso al server": // invio ai player la notifica del nuovo entrato
                {                                   // sincronizzo il numero di player attivi
                    Console.WriteLine(msg + " " + connectionID);
                    GameManager.SetState(1);
                    if (ClientManager.client.Count > 1)
                    {
                        foreach (KeyValuePair <int, Client> keyValue in ClientManager.client)
                        {
                            int c = keyValue.Key;
                            if (c != connectionID)
                            {
                                DataSender.SendNewPlayer(keyValue.Key);
                                Console.WriteLine("+1 per chi è gia connesso");
                            }
                        }
                    }
                    Console.WriteLine("chiedo il nome");
                    DataSender.SendAskName(connectionID);
                    //     DataSender.SendWaitingMessage(connectionID);
                    break;
                }

                case "addio":      // elimino il player e notifico tutti
                {
                    Console.WriteLine("addio " + connectionID);
                    ClientManager.DeleteRecord(connectionID);
                    GameManager.DeleteRecord(connectionID);

                    // se accade in game setto il player a inattivo
                    foreach (KeyValuePair <int, Client> keyValue in ClientManager.client)
                    {
                        DataSender.SendPlayerQuit(keyValue.Key);
                    }
                    break;
                }

                case "quanti player sono connessi ?":
                {
                    Console.WriteLine(msg + " " + connectionID);
                    DataSender.SendNumPlayer(connectionID);
                    break;
                }

                case "start game":     // mando un broadcast ai player
                {
                    Console.WriteLine(msg);
                    GameManager.SetState(2);         // mi preparo a ricevere il numero dell amappa

                    break;
                }

                case "Passo":                // si passsa il turno
                {
                    GameManager.SetState(8); // stato di passo = statop next phase
                    Console.WriteLine("attacco");
                    break;
                }

                case "Attacco":
                {
                    GameManager.SetState(3);         // stato di attacco
                    Console.WriteLine("attacco");
                    break;
                }

                case "Spostamento":
                {
                    GameManager.SetState(4);         // stato spostamento
                    Console.WriteLine("spostamento");
                    break;
                }

                case "Posizionamento":
                {
                    GameManager.SetState(5);         // stato spostamento
                    Console.WriteLine("Posizionamento");
                    break;
                }

                case "Combo Carte":
                {
                    GameManager.SetState(6);         // stato spostamento
                    Console.WriteLine("Combo carte");
                    break;
                }

                case "Dichiaro Attacco":
                {
                    GameManager.SetState(7);         // stato spostamento
                    Console.WriteLine("Dichiaro attacco");
                    break;
                }

                case "Next Phase":
                {
                    GameManager.SetState(8);         // stato spostamento
                    Console.WriteLine("Next Phase");
                    break;
                }

                case "Nomi Player":
                {
                    Console.WriteLine("Next Phase");
                    GameManager.GestioneGameMessages("", connectionID, 7);         //
                    break;
                }
                }
            }
            else if (GameManager.GetState() == 1) // per salvare il nome del player
            {
                GameManager.SetState(0);
                Console.WriteLine("salvataggio player");
                GameManager.AddPlayer(connectionID, msg);
                Console.WriteLine("player " + connectionID + " " + msg + "saved!");
                DataSender.SendOk(connectionID);
            }
            else if (GameManager.GetState() == 2) // per inviare il nome della mappa da giocare
            {
                GameManager.SetState(0);
                foreach (KeyValuePair <int, Client> keyValue in ClientManager.client)
                {
                    Console.WriteLine("starting map ..." + msg);
                    DataSender.SendStartGame(keyValue.Key, msg);
                }
            }
            else if (GameManager.GetState() == 3) // mod attacco
            {
                GameManager.GestioneGameMessages(msg, connectionID, 4);
            }
            else if (GameManager.GetState() == 4) // mod spostamento
            {
                GameManager.GestioneGameMessages(msg, connectionID, 3);
            }
            else if (GameManager.GetState() == 5) // mod posizionamento
            {
                GameManager.GestioneGameMessages(msg, connectionID, 1);
            }
            else if (GameManager.GetState() == 6)                       // mod combo carte
            {
                GameManager.GestioneGameMessages(msg, connectionID, 2); // ri utilizzo lo stesso codice
            }
            else if (GameManager.GetState() == 7)                       // attacco dichiarato
            {
                GameManager.GestioneGameMessages(msg, connectionID, 5); // ri utilizzo lo stesso codice
            }
            else if (GameManager.GetState() == 8)                       // next phase
            {
                GameManager.GestioneGameMessages(msg, connectionID, 6); // ri utilizzo lo stesso codice
            }
        }
Exemplo n.º 5
0
        public static void PassaTurno()
        {
            turno++;
            string s       = "";
            int    control = turno % Nplayer; //

            switch (control)
            {
            case 0:
            {
                turno++;
                s = "nero";
                break;
            }

            case 1:
            {
                if (Nplayer > 2)
                {
                    turno++;
                    s = "blu";
                }
                else
                {
                    turno++;
                    s = "rosso";
                }
                break;
            }

            case 2:
            {
                if (Nplayer > 3)
                {
                    turno++;
                    s = "viola";
                }
                else
                {
                    turno++;
                    s = "rosso";
                }
                break;
            }

            case 3:
            {
                if (Nplayer > 4)
                {
                    turno++;
                    s = "verde";
                }
                else
                {
                    turno++;
                    s = "rosso";
                }
                break;
            }

            case 4:
            {
                if (Nplayer > 5)
                {
                    turno++;
                    s = "giallo";
                }
                else
                {
                    turno++;
                    s = "rosso";
                }
                break;
            }

            case 5:
            {
                turno++;
                s = "rosso";
                break;
            }
            }
            foreach (KeyValuePair <int, string> keyValue in playerList_Color)
            {
                int    c = keyValue.Key;
                string v = keyValue.Value;
                if (s == v)
                {
                    DataSender.SendTurn(keyValue.Key); // mando al player la notifica che sia il suo turno
                    Console.WriteLine("turno del player " + keyValue.Key);
                }
            }
        }