private static List <Node> GetAdjacentWalkableNodes(Node fromNode, int width, int height, Node[,] nodes, SalaInstance Sala) { List <Node> walkableNodes = new List <Node>(); IEnumerable <Point> nextLocations = GetAdjacentLocations(fromNode.Location); foreach (var location in nextLocations) { int x = location.X; int y = location.Y; if (x < 0 || x >= width || y < 0 || y >= height) { continue; } Node node = nodes[x, y]; if (!Sala.Caminable(new Posicion(node.Location.X, node.Location.Y))) { continue; } if (node.State == NodeState.Closed) { continue; } if (node.State == NodeState.Open) { float traversalCost = Node.GetTraversalCost(node.Location, node.ParentNode.Location); float gTemp = fromNode.G + traversalCost; if (gTemp < node.G) { node.ParentNode = fromNode; walkableNodes.Add(node); } } else { node.ParentNode = fromNode; node.State = NodeState.Open; walkableNodes.Add(node); } } return(walkableNodes); }
void IniciarCocos() { Iniciado = true; int TotalRondas = 7; List <Point> Puntos = new List <Point>(); while (TotalRondas > 0) { Puntos.Clear(); for (int i = 1; i <= TotalRondas; i++) { Point PosGeneratedByMap = sala.GetRandomPlace(); while (Puntos.Contains(PosGeneratedByMap) || !sala.Caminable(new Posicion(PosGeneratedByMap.X, PosGeneratedByMap.Y))) { PosGeneratedByMap = sala.GetRandomPlace(); } Puntos.Add(PosGeneratedByMap); } TotalRondas--; Thread.Sleep(new TimeSpan(0, 0, 5)); foreach (Point PointToShow in Puntos) { ServerMessage server_1 = new ServerMessage(); server_1.AddHead(124); server_1.AddHead(120); server_1.AppendParameter(PointToShow.X); server_1.AppendParameter(PointToShow.Y); server_1.AppendParameter(1); sala.SendData(server_1); } Thread.Sleep(new TimeSpan(0, 0, 5)); foreach (Point PointToHidden in Puntos) { ServerMessage server_2 = new ServerMessage(); server_2.AddHead(124); server_2.AddHead(121); server_2.AppendParameter(PointToHidden.X); server_2.AppendParameter(PointToHidden.Y); server_2.AppendParameter(1); sala.SendData(server_2); } ServerMessage server_3 = new ServerMessage(); server_3.AddHead(160); server_3.AddHead(125); server_3.AppendParameter(30); sala.SendData(server_3); sala.PathFinder = true; Thread.Sleep(new TimeSpan(0, 0, 30)); sala.PathFinder = false; List <SessionInstance> ParaDescalificar = new List <SessionInstance>(); foreach (SessionInstance Session in Participantes.Values) { if (!Puntos.Contains(new Point(Session.User.Posicion.x, Session.User.Posicion.y))) { ParaDescalificar.Add(Session); } } foreach (SessionInstance Session in ParaDescalificar) { Descalificar(Session); LanzarCoco(Session); UserManager.Sumar_Cocos(Session.User, 1); RankingsManager.agregar_user_ranking(Session.User.id, 2, 2, 1); //using (mysql client = new mysql()) //{ // string Nombre = Session.User.nombre; // if (Nombre == "") { Session.User.nombre = Session.User.nombre_halloween; } // DataRow comprobar_usuario = client.ExecuteQueryRow("SELECT * FROM coco_semanal WHERE usuario = '" + Nombre + "'"); // if (comprobar_usuario != null) // { // int goldens = (int)comprobar_usuario["goldens"]; // int actualizar_goldens = goldens + 1; // client.ExecuteNonQuery("UPDATE coco_semanal SET goldens = '" + actualizar_goldens + "' WHERE usuario = '" + Nombre + "'"); // } // else // { // client.SetParameter("usuario", Nombre); // client.SetParameter("goldens", 1); // client.ExecuteNonQuery("INSERT INTO coco_semanal (`usuario`, `goldens`) VALUES (@usuario, @goldens)"); // } //} } Thread.Sleep(new TimeSpan(0, 0, 10)); if (Participantes.Count == 0 || Participantes.Count == 1) { break; } } if (Participantes.Count == 0) { ServerMessage server_4 = new ServerMessage(); server_4.AddHead(160); server_4.AddHead(124); server_4.AppendParameter("Ups!, al parecer no hay ganadores en esta ronda..."); sala.SendData(server_4); } else { SessionInstance SessionWin = null; foreach (SessionInstance Session in Participantes.Values) { SessionWin = Session; } if (SessionWin != null) { Participantes.Remove(SessionWin.User.id); switch (sala.Escenario.id) { case 8: ServerMessage server_5 = new ServerMessage(); server_5.AddHead(160); server_5.AddHead(129); server_5.AppendParameter(1); server_5.AppendParameter(SessionWin.User.id); server_5.AppendParameter(SessionWin.User.nombre); server_5.AppendParameter("Ha ganado: " + Recompensa_Golden + " créditos! y Suma " + 3 + " puntos y está más cerca de conseguir un nuevo coco!"); sala.SendData(server_5); RankingsManager.agregar_user_ranking(SessionWin.User.id, 2, 2, 3); UserManager.Creditos(SessionWin.User, true, true, Recompensa_Golden); UserManager.Sumar_Cocos(SessionWin.User, 3); SessionWin.User.torneos_coco++; if (SessionWin.User.torneos_coco == 300) { using (mysql client = new mysql()) { client.SetParameter("usuario_id", SessionWin.User.id); client.SetParameter("objeto_id", 3069); client.ExecuteNonQuery("INSERT INTO objetos_comprados (`usuario_id`, `objeto_id`) VALUES (@usuario_id, @objeto_id)"); } } UserManager.ActualizarEstadisticas(SessionWin.User); break; case 9: ServerMessage server_6 = new ServerMessage(); server_6.AddHead(160); server_6.AddHead(129); server_6.AppendParameter(1); server_6.AppendParameter(SessionWin.User.id); server_6.AppendParameter(SessionWin.User.nombre); server_6.AppendParameter("Ha ganado: " + Recompensa_Silver + " monedas de plata! y Suma " + 1 + " puntos y está más cerca de conseguir un nuevo coco!"); sala.SendData(server_6); UserManager.Creditos(SessionWin.User, false, true, Recompensa_Silver); UserManager.Sumar_Cocos(SessionWin.User, 1); break; } SessionWin.User.Jugando = false; } } FinalizarCocos(); }