示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            });
        }
示例#5
0
    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));
        }
    }