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; } }
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!"); }
public Sala BuscarSalaByIdSala(IdSalas idSala) { Sala sala = (from item in repositorio.salas where item.idSala == idSala select item).FirstOrDefault(); return(sala); }
public void AdicionaTextoByIdSala(IdSalas idSala, string texto) { foreach (ChatEntries ce in chatEntries) { if (ce.idSala == idSala) { ce.chat.Add(texto); break; } } }
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); } } } } }
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."); } }