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)); } }
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)); }
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)}"; }
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)); }