예제 #1
0
    public void TrocarSala()
    {
        switch ((IdSalas)servidorUI.ChangeRoom + 1)
        {
        case IdSalas.Sala1:
            idSalaAtual            = IdSalas.Sala1;
            servidorUI.MessageArea = "";
            break;

        case IdSalas.Sala2:
            idSalaAtual            = IdSalas.Sala2;
            servidorUI.MessageArea = "";
            break;

        case IdSalas.Sala3:
            idSalaAtual            = IdSalas.Sala3;
            servidorUI.MessageArea = "";
            break;

        case IdSalas.Sala4:
            idSalaAtual            = IdSalas.Sala4;
            servidorUI.MessageArea = "";
            break;

        case IdSalas.Sala5:
            idSalaAtual            = IdSalas.Sala5;
            servidorUI.MessageArea = "";
            break;

        default:
            idSalaAtual = IdSalas.Sala1;
            break;
        }
    }
예제 #2
0
    public void AdicionaObjetoSala(string cdSala, string texto)
    {
        IdSalas idSala = BuscarIdSalas(cdSala);

        if (idSala == IdSalas.Default)
        {
            servidor.AdicionaTextoByIdSala(idSala, "Sala não encontrado!");
            return;
        }

        Objeto objeto = (from item in repositorio.salas
                         where item.idSala == idSala
                         select(from tipo in item.objetos
                                select(from obj in repositorio.objetos
                                       where obj.tipo == tipo && obj.nome == texto
                                       select obj).FirstOrDefault()).FirstOrDefault()).FirstOrDefault();

        if (objeto != null)
        {
            foreach (Sala sala in repositorio.salas)
            {
                if (sala.idSala == idSala)
                {
                    sala.objetos.Add(objeto.tipo);
                }
            }

            servidor.AdicionaTextoByIdSala(idSala, "Objeto " + objeto.tipo + " adicionado!");
            return;
        }
        servidor.AdicionaTextoByIdSala(idSala, "Objeto não encontrado!");
    }
예제 #3
0
    public Sala BuscarSalaByIdSala(IdSalas idSala)
    {
        Sala sala = (from item in repositorio.salas
                     where item.idSala == idSala
                     select item).FirstOrDefault();

        return(sala);
    }
예제 #4
0
 public void AdicionaTextoByIdSala(IdSalas idSala, string texto)
 {
     foreach (ChatEntries ce in chatEntries)
     {
         if (ce.idSala == idSala)
         {
             ce.chat.Add(texto);
             break;
         }
     }
 }
예제 #5
0
    public void OnGUI()
    {
        if (Network.peerType == NetworkPeerType.Disconnected)
        {
            GUILayout.Label("Servidor Desativado.");

            connectToIP = GUILayout.TextField(connectToIP, GUILayout.MinWidth(100));
            connectPort = int.Parse(GUILayout.TextField(connectPort.ToString()));

            GUILayout.BeginVertical();

            if (GUILayout.Button("Inicializar Servidor"))
            {
                Network.InitializeServer(32, connectPort, false);
            }
            GUILayout.EndVertical();
        }
        else
        {
            if (Network.peerType == NetworkPeerType.Connecting)
            {
                GUILayout.Label("Conectando...");
            }
            else if (Network.peerType == NetworkPeerType.Server)
            {
                GUILayout.Label("Servidor inicializado com sucesso!");
                GUILayout.Label("Conexões: " + Network.connections.Length);
            }

            if (GUILayout.Button("Desconectar"))
            {
                Network.Disconnect(200);
            }

            objetoTextChat = GUILayout.TextField(objetoTextChat, GUILayout.MinWidth(100));
            idSalaTextChat = GUILayout.TextField(idSalaTextChat, GUILayout.MinWidth(100));
            if (GUI.Button(new Rect(200, 50, 120, 50), "Adicionar Item"))
            {
                comandos.AdicionaObjetoSala(idSalaTextChat, objetoTextChat);
                objetoTextChat = "";
                idSalaTextChat = "";
            }

            if (GUILayout.Button("Sala1"))
            {
                idSalaAtual = IdSalas.Sala1;
            }

            if (GUILayout.Button("Sala2"))
            {
                idSalaAtual = IdSalas.Sala2;
            }

            if (GUILayout.Button("Sala3"))
            {
                idSalaAtual = IdSalas.Sala3;
            }

            if (GUILayout.Button("Sala4"))
            {
                idSalaAtual = IdSalas.Sala4;
            }

            if (GUILayout.Button("Sala5"))
            {
                idSalaAtual = IdSalas.Sala5;
            }

            foreach (ChatEntries chat in chatEntries)
            {
                if (chat.idSala == idSalaAtual)
                {
                    GUILayout.Label(chat.idSala.ToString());
                    foreach (string txt in chat.chat)
                    {
                        GUILayout.Label(txt);
                    }
                }
            }
        }
    }
예제 #6
0
    public void falarChat(Player player, string texto)
    {
        Debug.Log("falarChat: " + texto);

        if (texto.Contains("Examinar"))
        { // Examinar [sala/objeto]
            string splitTexto = texto.Split(null)[1];

            Sala sala = (from item in repositorio.salas
                         where item.idSala == player.idSala && item.nome == splitTexto
                         select item).FirstOrDefault();

            if (sala != null)
            {
                servidor.notificaPlayer(player.idPlayer, GerarDescricaoSala(sala.descricao, player));
                return;
            }

            //Busca no inventario
            Objeto objeto = (from item in repositorio.inventarios
                             where item.idPlayer == player.idPlayer
                             select(from obj in item.objetos
                                    where obj.nome == splitTexto
                                    select obj).FirstOrDefault()).FirstOrDefault();

            if (objeto != null)
            {
                servidor.notificaPlayer(player.idPlayer, objeto.descricao);
                return;
            }
            else
            {
                //Busca na sala
                Objeto objTexto = buscarObjeto(splitTexto);

                if (objTexto != null)
                {
                    TipoObjeto tipoObjeto = (from item in repositorio.salas
                                             where item.idSala == player.idSala
                                             select(from obj in item.objetos
                                                    where obj == objTexto.tipo
                                                    select obj).FirstOrDefault()).FirstOrDefault();

                    if (tipoObjeto != TipoObjeto.Default)
                    {
                        Objeto obj = (from item in repositorio.objetos
                                      where item.tipo == tipoObjeto
                                      select item).First();

                        if (obj.tipo == TipoObjeto.Porta)
                        {
                            string descrUsou = obj.usou ? obj.descricaoUsarS : obj.descricaoUsarN;
                            servidor.notificaPlayer(player.idPlayer, obj.descricao + " " + descrUsou);
                            return;
                        }
                        servidor.notificaPlayer(player.idPlayer, obj.descricao);
                        return;
                    }
                }
            }
            servidor.notificaPlayer(player.idPlayer, "Sala ou Objeto não encontrado.");
        }
        else
        if (texto.Contains("Mover"))
        { // Mover [N/S/L/O]
            string splitTexto = texto.Split(null)[1];

            Sala salaAtual = (from item in repositorio.salas
                              where item.idSala == player.idSala
                              select item).FirstOrDefault();

            Coordenadas coordenada = BuscarCoordenada(splitTexto);

            IdSalas idSala = (from item in salaAtual.salasLigadas
                              where item.coordenada == coordenada
                              select item.sala).FirstOrDefault();

            if (idSala != IdSalas.Default)
            {
                if (salaAtual.objetos.Contains(TipoObjeto.Porta))
                {
                    Objeto objeto = (from item in repositorio.objetos
                                     where item.tipo == TipoObjeto.Porta
                                     select item).FirstOrDefault();

                    if (!objeto.usou)
                    {
                        servidor.notificaPlayer(player.idPlayer, objeto.descricaoUsarN);
                        return;
                    }
                }

                Sala salaMover = (from item in repositorio.salas
                                  where item.idSala == idSala
                                  select item).FirstOrDefault();
                foreach (Player pl in repositorio.players)
                {
                    if (pl.idPlayer == player.idPlayer)
                    {
                        pl.idSala = salaMover.idSala;
                    }
                }

                servidor.NotificaOutrosPlayersBySala(player.idPlayer, salaAtual.nome, "Jogador " + player.nome + " moveu-se para a sala " + salaMover.nome);
                servidor.SetPref(player);
                servidor.notificaPlayer(player.idPlayer, "Você se moveu para a sala " + salaMover.nome);
                servidor.NotificaOutrosPlayersBySala(player.idPlayer, salaMover.nome, "Jogador " + player.nome + " moveu-se para a sala " + salaMover.nome);

                falarChat(player, "Examinar " + salaMover.nome);
                return;
            }
            servidor.notificaPlayer(player.idPlayer, "Não foi possivel mover para a sala descrita.");
        }
        else
        if (texto.Contains("Pegar"))
        { // Pegar [objeto]
            string splitTexto = texto.Split(null)[1];

            List <TipoObjeto> objetos = (from item in repositorio.salas
                                         where item.idSala == player.idSala
                                         select item.objetos).FirstOrDefault();

            Objeto objeto = (from obj in repositorio.objetos
                             where objetos.Contains(obj.tipo) && obj.nome == splitTexto
                             select obj).FirstOrDefault();

            Debug.Log("objeto: " + objeto);

            if (objeto != null)
            {
                if (!objeto.pegar)
                {
                    servidor.notificaPlayer(player.idPlayer, "Esse objeto não é permitido coletar.");
                    return;
                }

                foreach (Inventario inventario in repositorio.inventarios)
                {
                    if (inventario.idPlayer == player.idPlayer)
                    {
                        inventario.objetos.Add(objeto);
                    }
                }

                foreach (Sala sala in repositorio.salas)
                {
                    if (sala.idSala == player.idSala)
                    {
                        sala.objetos.Remove(objeto.tipo);
                        break;
                    }
                }

                servidor.notificaPlayer(player.idPlayer, "Objeto adicionado no seu inventario.");
                servidor.NotificaOutrosPlayersBySala(player.idPlayer, BuscarSalaByIdSala(player.idSala).nome, "Jogador " + player.nome + " pegou o objeto " + objeto.nome);
                return;
            }
            servidor.notificaPlayer(player.idPlayer, "Objeto não encontrado na sala.");
        }
        else
        if (texto.Contains("Largar"))
        { // Largar [objeto]
            string splitTexto = texto.Split(null)[1];

            Objeto objeto = (from obj in repositorio.objetos
                             where obj.nome == splitTexto
                             select obj).FirstOrDefault();

            Inventario inv = (from item in repositorio.inventarios
                              where item.idPlayer == player.idPlayer && item.objetos.Contains(objeto)
                              select item).FirstOrDefault();

            if (objeto != null && inv != null)
            {
                foreach (Objeto obj in inv.objetos)
                {
                    if (obj.nome == splitTexto)
                    {
                        inv.objetos.Remove(obj);
                        break;
                    }
                }

                Debug.Log("Removeu do inventario!!!");

                foreach (Sala sala in repositorio.salas)
                {
                    if (sala.idSala == player.idSala)
                    {
                        sala.objetos.Add(objeto.tipo);
                    }
                }

                servidor.notificaPlayer(player.idPlayer, "Objeto removido do inventario.");
                servidor.NotificaOutrosPlayersBySala(player.idPlayer, BuscarSalaByIdSala(player.idSala).nome, "Jogador " + player.nome + " largou o objeto " + objeto.nome);
                return;
            }
            servidor.notificaPlayer(player.idPlayer, "Objeto não foi encontrado no inventario.");
        }
        else
        if (texto.Contains("Inventario"))
        { // Inventário
            Inventario inventario = (from item in repositorio.inventarios
                                     where item.idPlayer == player.idPlayer
                                     select item).FirstOrDefault();
            string objetos = "Você possui os seguintes objetos: ";

            if (inventario != null && inventario.objetos.Count > 0)
            {
                foreach (Objeto obj in inventario.objetos)
                {
                    objetos += obj.nome + " - ";
                }
                servidor.notificaPlayer(player.idPlayer, objetos);
                return;
            }
            servidor.notificaPlayer(player.idPlayer, "Você não possui nenhum item no inventário.");
        }
        else
        if (texto.Contains("Usar"))
        { // Usar [objeto] {alvo}
            string[] splitTexto = texto.Replace("Usar ", "").Split(null);

            Objeto objeto = buscarObjeto(splitTexto[0]);
            Objeto alvo   = null;

            if (splitTexto.Length > 1)
            {
                alvo = buscarObjeto(splitTexto[1]);
            }

            if (objeto != null && alvo != null)
            {
                if (objeto.tipo == TipoObjeto.Chave && alvo.tipo == TipoObjeto.Porta)
                {
                    servidor.notificaPlayer(player.idPlayer, usarObjetoAlvo(player, objeto.tipo, alvo.tipo));
                    return;
                }
                else
                {
                    servidor.notificaPlayer(player.idPlayer, "Você não pode usar esse objeto nesse alvo.");
                    return;
                }
            }
            else if (objeto != null)
            {
                if (!verificaInventario(player, objeto))
                {
                    servidor.notificaPlayer(player.idPlayer, "Você não possui esse objeto.");
                    return;
                }
                servidor.notificaPlayer(player.idPlayer, usarObjeto(player, objeto.tipo));
                return;
            }
            servidor.notificaPlayer(player.idPlayer, "Objeto ou Alvo não encontrado.");
        }
        else
        if (texto.Contains("Falar"))
        { // Falar [texto]
            servidor.NotificaTodosPlayers(player.idPlayer, texto.Replace("Falar ", ""), BuscarSalaByIdSala(player.idSala).nome);
        }
        else
        if (texto.Contains("Cochichar"))
        { // Cochichar [texto] [jogador]
            string[] fala    = texto.Replace("Cochichar ", "").Split(null);
            string   jogador = fala[fala.Length - 1].Replace(" ", "");

            string splitTexto = "";
            foreach (string f in fala)
            {
                splitTexto = splitTexto + f + " ";
            }

            splitTexto = splitTexto.Replace(jogador, "");

            Debug.Log(splitTexto);
            Debug.Log(jogador);

            Player plyer = buscarPlayerByName(jogador);

            if (plyer == null)
            {
                servidor.notificaPlayer(plyer.idPlayer, "Jogador não encontrado.");
                return;
            }

            servidor.notificaPlayer(plyer.idPlayer, "O jogador " + player.nome + " enviou uma mensagem: " + splitTexto);
        }
        else
        if (texto.Contains("Ajuda"))
        { // Ajuda
            string ajuda = "Lista de Comandos: \n"
                           + "Examinar [sala/objeto] \n"
                           + "Mover [N/S/L/O] \n"
                           + "Pegar [objeto] \n"
                           + "Largar [objeto] \n"
                           + "Inventário [sala/objeto] \n"
                           + "Usar [objeto] {alvo} \n"
                           + "Falar [texto] \n"
                           + "Cochichar [texto] [jogador] \n";

            servidor.notificaPlayer(player.idPlayer, ajuda);
        }
        else
        {
            servidor.notificaPlayer(player.idPlayer, "Não Foi Possível Realizar Essa Ação.");
        }
    }