public Map() { if(File.Exists("mapfile.nbt")) { NbtFile saveFile = new NbtFile("mapfile.nbt"); NbtCompound root = saveFile.RootTag; if(root.Get<NbtString>("fileType").StringValue.Equals("map")) { NbtList aList = root.Get<NbtList>("areas"); foreach(NbtCompound alpha in aList) { areas.Add(new Area(alpha)); } } foreach(Area alpha in areas) { if(alpha.Name.Equals("safehouse", StringComparison.OrdinalIgnoreCase)) { currArea = alpha; break; } } foreach(Area alpha in portalsToProcess.Keys) { List<Portal> newPortals = new List<Portal>(); foreach(NbtCompound beta in portalsToProcess[alpha]) { foreach(Area charlie in areas) { if(charlie.Name == beta.Get<NbtString>("linkTo").StringValue) { newPortals.Add(new Portal(new Microsoft.Xna.Framework.Rectangle(beta.Get<NbtByte>("x").IntValue * 32 + 4, beta.Get<NbtByte>("y").IntValue * 32 + 8, 25, 24), charlie, beta.Get<NbtByte>("linkX").IntValue * 32, beta.Get<NbtByte>("linkY").IntValue * 32)); } } } alpha.AddPortals(newPortals); } portalsToProcess.Clear(); } }
public Portal(Rectangle loc, Area to, int xlink, int ylink) : base(loc) { linkTo = to; linkX = xlink; linkY = ylink; }
public void SwitchArea(Area to) { currArea = to; }