public void Should_Stringify_Obj_With_Prefix() { var room = new RoomParameter(); room.Adt = 5; room.Chd = 2; room.ChdAges = new List <short> { 5, 6 }; room.Snr = 1; string query = QS.Stringify(room, "room"); var expected = "room.Snr=1&room.Adt=5&room.Chd=2&room.ChdAges[0]=5&room.ChdAges[1]=6"; query.Should().Be(expected); }
public void Should_Stringify_Array() { var rooms = new List <RoomParameter>(); var room = new RoomParameter(); room.Adt = 5; room.Chd = 2; room.ChdAges = new List <short> { 5, 6 }; room.Snr = 1; rooms.Add(room); rooms.Add(room); string query = QS.Stringify(rooms); var expected = "0[Snr]=1&0[Adt]=5&0[Chd]=2&0[ChdAges][0]=5&0[ChdAges][1]=6&1[Snr]=1&1[Adt]=5&1[Chd]=2&1[ChdAges][0]=5&1[ChdAges][1]=6"; query.Should().Be(expected); }
public void Should_Stringify_Array_With_Prefif() { var rooms = new List <RoomParameter>(); var room = new RoomParameter(); room.Adt = 5; room.Chd = 2; room.ChdAges = new List <short> { 5, 6 }; room.Snr = 1; rooms.Add(room); rooms.Add(room); string query = QS.Stringify(rooms, "rooms"); var expected = "rooms[0][Snr]=1&rooms[0][Adt]=5&rooms[0][Chd]=2&rooms[0][ChdAges][0]=5&rooms[0][ChdAges][1]=6&rooms[1][Snr]=1&rooms[1][Adt]=5&rooms[1][Chd]=2&rooms[1][ChdAges][0]=5&rooms[1][ChdAges][1]=6"; query.Should().Be(expected); }
public Listeners(Socket socket, Client client) { socket.On("message", (Action <object>)((data) => { Console.WriteLine("MESSAGE INCOMING"); Message message = new Message(data.ToString()); System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Add(message); }); Console.WriteLine((string)("+++++++++++ MESSAGE:" + message.Text + " " + message.Type + " +++++++++++")); })); socket.On("roomSwitched", (data) => { RoomParameter roomParameter = new RoomParameter(data.ToString()); Client.RoomId = roomParameter.RoomId; Console.WriteLine("+++++++++++ ROOM SWITCHED:" + roomParameter.RoomName + " +++++++++++"); OnChatroomSwitched(roomParameter.RoomName); }); socket.On("isWaiting", () => { OnIsWaiting(); System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Clear(); MessageList.Add(new Message("Waiting for an Opponent...", MessageDisplayType.MessageInfo)); }); }); socket.On("gameover", () => { Console.WriteLine("GAMEOVER"); System.Windows.Application.Current.Dispatcher.Invoke(delegate { Client.IsOnTurn = false; Client.EmitEndSession(); MessageList.Clear(); OnMatchAbort(); }); }); socket.On("turnBroadcast", (data) => { OnTurnBroadcast(new TurnBroadcast(data.ToString())); }); socket.On("gameBegins", () => { }); socket.On("cSharpSaveReset", () => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { OnMatchStart(true); }); }); socket.On("matchParameter", (data) => { MatchParameter mP = new MatchParameter(data.ToString()); Client.OpponentsName = mP.OpponentsName; Client.OpponentsId = mP.OpponentsId; Client.IsOnTurn = mP.FirstTurn; var delayedTurnEmit = System.Threading.Tasks.Task.Run(() => OnSetOnTurn(mP.FirstTurn)); delayedTurnEmit.Wait(TimeSpan.FromMilliseconds(300)); OnSetOnTurn(mP.FirstTurn); }); socket.On("winnerBroadcast", (data) => { WinnerBroadcast wB = new WinnerBroadcast(data.ToString()); OnMatchResult(wB.animation); System.Windows.Application.Current.Dispatcher.Invoke(delegate { if (wB.isWinner) { MessageList.Add(new Message("You Won!", MessageDisplayType.ResultWin)); } else { MessageList.Add(new Message("You Lost!", MessageDisplayType.ResultLose)); } }); }); socket.On("drawBroadcast", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Add(new Message("You both are too dumb to win", MessageDisplayType.ResultDraw)); }); }); socket.On("scoreBroadcast", (data) => { ScoreBroadcast sb = new ScoreBroadcast(data.ToString()); OnScoreBroadcast("You " + sb.clientScore + " : " + sb.opponentsScore + " " + Client.OpponentsName); }); socket.On("revancheRequest", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { //TODO MessageList.Add(new Message(Client.OpponentsName + " wants a revanche... Take it or leave it.", MessageDisplayType.RevancheInvitation)); }); }); socket.On("playAgainRequest", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { //TODO MessageList.Add(new Message(Client.OpponentsName + " wants to play again...", MessageDisplayType.PlayAgainInvitation)); }); }); socket.On("revancheAccepted", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Clear(); OnMatchStart(true); MessageList.Add(new Message(Client.OpponentsName + " wants to kick your ass again!", MessageDisplayType.MessageInfo)); }); }); socket.On("playAgainAccepted", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Clear(); OnMatchStart(true); MessageList.Add(new Message(Client.OpponentsName + " wants to play again!", MessageDisplayType.MessagePrimary)); }); }); socket.On("firstTurn", () => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { MessageList.Clear(); }); }); socket.On("setOnTurn", (data) => { var delayedTurnEmit = System.Threading.Tasks.Task.Run(() => OnSetOnTurn((bool)data)); delayedTurnEmit.Wait(TimeSpan.FromMilliseconds(400)); OnSetOnTurn((bool)data); Client.IsOnTurn = (bool)data; }); socket.On("opponentFound", (data) => { System.Windows.Application.Current.Dispatcher.Invoke(delegate { OnMatchStart(false); MessageList.Clear(); MessageList.Add(new Message("Opponent found, you're playing against " + data, MessageDisplayType.MessageInfo)); System.Windows.Application.Current.MainWindow.DataContext = new GameViewModel(); }); }); socket.On("idCommit", (data) => { Client.SocketId = data.ToString(); Console.WriteLine("+++++++++++ ID COMMIT:" + data + " +++++++++++"); }); socket.On("updateOnlineUsers", (data) => { OnUpdateOnlineUsers((int)(long)data); }); }
IEnumerator GenerarSalas() { while (salasGeneradas < salasAGenerar) { float x1 = 0, y1 = 0, x2 = 0, y2 = 0; //Tamaños de las salas anterior y siguiente para decidir cual instanciar. RoomParameter prevParameter, nextParameter; //Parametros de las salas anterior y siguiente. RoomParameter.Direcciones direccion, direccionSalaNecesaria; //Valor que decide la dirección de la siguiente sala. bool salaCorrecta; salaCorrecta = false; prevRoom = nextRoom; prevParameter = prevRoom.GetComponent <RoomParameter>(); //TAMAÑO X e Y DE LA SALA ANTERIOR. x1 = prevParameter.width; y1 = prevParameter.lenght; direccion = RoomParameter.Direcciones.usada; direccionSalaNecesaria = RoomParameter.Direcciones.usada; while (direccion == RoomParameter.Direcciones.usada) { direccion = prevParameter.direccionesPuertas[Random.Range(0, prevParameter.direccionesPuertas.Length)]; //Decide que dirección usar para el camino. } if (direccion != RoomParameter.Direcciones.usada) { switch (direccion) { case RoomParameter.Direcciones.Abajo: direccionSalaNecesaria = RoomParameter.Direcciones.Arriba; break; case RoomParameter.Direcciones.Arriba: direccionSalaNecesaria = RoomParameter.Direcciones.Abajo; break; case RoomParameter.Direcciones.Izquierda: direccionSalaNecesaria = RoomParameter.Direcciones.Derecha; break; case RoomParameter.Direcciones.Derecha: direccionSalaNecesaria = RoomParameter.Direcciones.Izquierda; break; default: Debug.Log("Error, la dirección está establecida como 'usada'"); break; } // Este switch marca la puerta necesaria de la siguiente habitación en base a la anterior.ç } while (salaCorrecta != true) { GameObject candidato = rooms[Random.Range(1, rooms.Length)]; RoomParameter parameterCandidato = candidato.GetComponent <RoomParameter>(); for (int i = 0; i < parameterCandidato.direccionesPuertas.Length; i++) { if (parameterCandidato.direccionesPuertas[i] == direccionSalaNecesaria) { salaCorrecta = true; nextRoom = candidato; //parameterCandidato.direccionesPuertas[i] = RoomParameter.Direcciones.usada; } } } //Compara candidato a candidato hasta encontrar una sala compatible. if (nextRoom != null) { nextParameter = nextRoom.GetComponent <RoomParameter>(); x2 = nextParameter.width; y2 = nextParameter.lenght; } else { Debug.Log("No se ha seleccionado la siguiente sala correctamente"); } switch (direccion) //Establece la posición donde se instanciará la nueva sala. { case RoomParameter.Direcciones.Abajo: posNewRoom = new Vector3(posNewRoom.x, posNewRoom.y, posNewRoom.z - (y1 / 2 + y2 / 2)); break; case RoomParameter.Direcciones.Arriba: posNewRoom = new Vector3(posNewRoom.x, posNewRoom.y, posNewRoom.z + (y1 / 2 + y2 / 2)); break; case RoomParameter.Direcciones.Izquierda: posNewRoom = new Vector3(posNewRoom.x - (x1 / 2 + x2 / 2), posNewRoom.y, posNewRoom.z); break; case RoomParameter.Direcciones.Derecha: posNewRoom = new Vector3(posNewRoom.x + (x1 / 2 + x2 / 2), posNewRoom.y, posNewRoom.z); break; default: Debug.Log("Error, la dirección está establecida como 'usada'"); break; } GameObject instanciaRoom = Instantiate(nextRoom, posNewRoom, Quaternion.identity, parent.transform); salasGeneradas++; if (salasGeneradas == salasAGenerar) { instanciaRoom.GetComponent <MeshRenderer>().material = final; } yield return(new WaitForSeconds(tiempoGeneración)); } }