Inheritance: MappingBaseDTO
Exemple #1
0
        public PortalDTO Insert(PortalDTO portal)
        {
            using (var context = DataAccessHelper.CreateContext())
            {

                    Portal entity = Mapper.Map<Portal>(portal);
                    context.portal.Add(entity);
                    context.SaveChanges();
                    return Mapper.Map<PortalDTO>(entity);
            }
        }
 /// <summary>
 /// $PortalTo Command
 /// </summary>
 /// <param name="portalToPacket"></param>
 public void CreatePortal(PortalToPacket portalToPacket)
 {
     Logger.Debug("PortalTo Command", Session.SessionId);
     if (portalToPacket != null)
     {
         if (ServerManager.GetMap(portalToPacket.DestinationMapId) == null || !Session.HasCurrentMap)
         {
             return;
         }
         short mapId = Session.Character.MapId;
         short mapX = Session.Character.MapX;
         short mapY = Session.Character.MapY;
         PortalDTO portal = new PortalDTO()
         {
             SourceMapId = mapId,
             SourceX = mapX,
             SourceY = mapY,
             DestinationMapId = portalToPacket.DestinationMapId,
             DestinationX = portalToPacket.DestinationX,
             DestinationY = portalToPacket.DestinationY,
             Type = portalToPacket.PortalType == null ? (short)-1 : (short)portalToPacket.PortalType
         };
         Session.CurrentMap.Portals.Add(portal);
         Session.CurrentMap?.Broadcast(Session.Character.GenerateGp(portal));
     }
     else
     {
         Session.SendPacket(Session.Character.GenerateSay("$PortalTo MAPID DESTX DESTY PORTALTYPE", 10));
         Session.SendPacket(Session.Character.GenerateSay("$PortalTo MAPID DESTX DESTY", 10));
     }
 }
Exemple #3
0
        public void ImportPortals()
        {
            string filePacket = $"{_folder}\\packet.txt";
            StreamReader Packet = new StreamReader(filePacket, Encoding.GetEncoding(1252));
            string line;
            int i = 0;
            List<PortalDTO> ListPacket = new List<PortalDTO>();
            short map = 0;
            short lastMap = 0;
            while ((line = Packet.ReadLine()) != null)
            {

                string[] linesave = line.Split(' ');
                if (linesave.Count() > 5 && linesave[0] == "at")
                {
                    lastMap = map;
                    map = short.Parse(linesave[2]);

                }
                if (linesave.Count() > 4 && linesave[0] == "gp")
                {
                    short SourceX = short.Parse(linesave[1]);
                    short Type = short.Parse(linesave[4]);
                    short SourceY = short.Parse(linesave[2]);
                    short DestinationMapId = short.Parse(linesave[3]);
                    short DestinationX = -1;
                    short DestinationY = -1;

                    ListPacket.Add(new PortalDTO
                    {
                        SourceMapId = map,
                        SourceX = SourceX,
                        SourceY = SourceY,
                        DestinationMapId = DestinationMapId,
                        Type = Type,
                        DestinationX = DestinationX,
                        DestinationY = DestinationY,
                        IsDisabled = 0,
                    });
                }
            }

            foreach (PortalDTO portal in ListPacket)
            {
                if (portal.DestinationX == -1 || portal.DestinationY == -1)
                    foreach (PortalDTO p in ListPacket.Where(s => s.SourceMapId == portal.DestinationMapId && s.DestinationMapId == portal.SourceMapId))
                    {
                        if (ListPacket.FirstOrDefault(s => s.SourceMapId == portal.DestinationMapId && s.DestinationMapId == portal.SourceMapId && s.DestinationX == -1 && s.DestinationY == -1)!=null)
                        {
                            ListPacket.FirstOrDefault(s => s.SourceMapId == portal.DestinationMapId && s.DestinationMapId == portal.SourceMapId && s.DestinationX == -1).DestinationX = portal.SourceX;
                            ListPacket.FirstOrDefault(s => s.SourceMapId == portal.DestinationMapId && s.DestinationMapId == portal.SourceMapId && s.DestinationY == -1).DestinationY = portal.SourceY;
                        }
                        if ( ListPacket.FirstOrDefault(s => portal.SourceMapId == s.DestinationMapId && portal.DestinationMapId == s.SourceMapId && portal.DestinationX == -1 && portal.DestinationY == -1) !=null)
                        {
                            portal.DestinationX = ListPacket.FirstOrDefault(s => portal.SourceMapId == s.DestinationMapId && portal.DestinationMapId == s.SourceMapId && portal.DestinationX == -1).SourceX;
                            portal.DestinationY = ListPacket.FirstOrDefault(s => portal.SourceMapId == s.DestinationMapId && portal.DestinationMapId == s.SourceMapId && portal.DestinationY == -1).SourceY;
                        }
                    }

                PortalDTO por = new PortalDTO
                {
                    SourceMapId = portal.SourceMapId,
                    SourceX = portal.SourceX,
                    SourceY = portal.SourceY,
                    DestinationMapId = portal.DestinationMapId,
                    Type = portal.Type,
                    DestinationX = portal.DestinationX,
                    DestinationY = portal.DestinationY,
                    IsDisabled = 0,
                };
                if (DAOFactory.MapDAO.LoadById(portal.SourceMapId) != null && DAOFactory.MapDAO.LoadById(portal.DestinationMapId) != null)
                    if (por.DestinationY != -1 && por.DestinationX != -1)
                        if (DAOFactory.PortalDAO.LoadFromMap(portal.SourceMapId).Where(s => s.DestinationMapId.Equals(portal.DestinationMapId)).Count() == 0)
                        {
                            DAOFactory.PortalDAO.Insert(por);
                            i++;
                        }
            }
            Logger.Log.Info(String.Format(Language.Instance.GetMessageFromKey("PORTALS_PARSED"), i));
        }
Exemple #4
0
 public string GenerateGp(PortalDTO portal)
 {
     List<PortalDTO> portalList = ServerManager.GetMap(MapId).Portals;
     return $"gp {portal.SourceX} {portal.SourceY} {portal.DestinationMapId} {portal.Type} {portalList.Count} {(portalList.Contains(portal) ? (portal.IsDisabled ? 1 : 0) : 1)}";
 }
Exemple #5
0
        public void ImportPortals()
        {
            List<PortalDTO> listPortals1 = new List<PortalDTO>();
            List<PortalDTO> listPortals2 = new List<PortalDTO>();
            short map = 0;

            foreach (string[] currentPacket in _packetList.Where(o => o[0].Equals("at") || o[0].Equals("gp")))
            {
                if (currentPacket.Length > 5 && currentPacket[0] == "at")
                {
                    map = short.Parse(currentPacket[2]);
                    continue;
                }
                if (currentPacket.Length > 4 && currentPacket[0] == "gp")
                {
                    PortalDTO portal = new PortalDTO
                    {
                        SourceMapId = map,
                        SourceX = short.Parse(currentPacket[1]),
                        SourceY = short.Parse(currentPacket[2]),
                        DestinationMapId = short.Parse(currentPacket[3]),
                        Type = sbyte.Parse(currentPacket[4]),
                        DestinationX = -1,
                        DestinationY = -1,
                        IsDisabled = false
                    };

                    if (listPortals1.Any(s => s.SourceMapId == map && s.SourceX == portal.SourceX && s.SourceY == portal.SourceY && s.DestinationMapId == portal.DestinationMapId) || _maps.All(s => s.MapId != portal.SourceMapId) || _maps.All(s => s.MapId != portal.DestinationMapId))
                    {
                        // Portal already in list
                        continue;
                    }

                    listPortals1.Add(portal);
                }
            }

            listPortals1 = listPortals1.OrderBy(s => s.SourceMapId).ThenBy(s => s.DestinationMapId).ThenBy(s => s.SourceY).ThenBy(s => s.SourceX).ToList();
            foreach (PortalDTO portal in listPortals1)
            {
                PortalDTO p = listPortals1.Except(listPortals2).FirstOrDefault(s => s.SourceMapId == portal.DestinationMapId && s.DestinationMapId == portal.SourceMapId);
                if (p == null)
                {
                    continue;
                }

                portal.DestinationX = p.SourceX;
                portal.DestinationY = p.SourceY;
                p.DestinationY = portal.SourceY;
                p.DestinationX = portal.SourceX;
                listPortals2.Add(p);
                listPortals2.Add(portal);
            }

            // foreach portal in the new list of Portals where none (=> !Any()) are found in the existing
            int portalCounter = listPortals2.Count(portal => !DAOFactory.PortalDAO.LoadByMap(portal.SourceMapId).Any(
                s => s.DestinationMapId == portal.DestinationMapId && s.SourceX == portal.SourceX && s.SourceY == portal.SourceY));

            // so this dude doesnt exist yet in DAOFactory -> insert it
            DAOFactory.PortalDAO.Insert(listPortals2.Where(portal => !DAOFactory.PortalDAO.LoadByMap(portal.SourceMapId).Any(
                s => s.DestinationMapId == portal.DestinationMapId && s.SourceX == portal.SourceX && s.SourceY == portal.SourceY)).ToList());

            Logger.Log.Info(String.Format(Language.Instance.GetMessageFromKey("PORTALS_PARSED"), portalCounter));
        }