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