예제 #1
0
        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();
            }
        }
예제 #2
0
 public Portal(Rectangle loc, Area to, int xlink, int ylink)
     : base(loc)
 {
     linkTo = to;
     linkX = xlink;
     linkY = ylink;
 }
예제 #3
0
 public void SwitchArea(Area to)
 {
     currArea = to;
 }