public Map(byte[] content) { using (MemoryStream stream = new MemoryStream(content)) { using (BinaryReader reader = new BinaryReader(stream)) { Colliders = ReadTiles(reader); DimensionX = Colliders.GetUpperBound(0) + 1; DimensionY = Colliders.GetUpperBound(1) + 1; Width = DimensionX - 1; Height = DimensionY - 1; Tiles1 = ReadTiles(reader); Tiles2 = ReadTiles(reader); Tiles3 = ReadTiles(reader); Tiles4 = ReadTiles(reader); MapWeather = ReadString(reader); reader.ReadInt16(); reader.ReadInt16(); IsOutside = reader.ReadByte() != 0; reader.ReadByte(); Region = ReadString(reader); Links = new bool[DimensionX, DimensionY]; int linkCount = reader.ReadInt16(); for (int i = 0; i < linkCount; ++i) { int x = reader.ReadInt16(); int y = reader.ReadInt16(); Links[x, y] = true; } int npcCount = reader.ReadInt16(); Npcs = new List <Npc>(); OriginalNpcs = new List <Npc>(); for (int i = 0; i < npcCount; ++i) { string npcName = ReadString(reader); int x = reader.ReadInt16(); int y = reader.ReadInt16(); int direction = reader.ReadByte(); int losLength = reader.ReadByte(); int type = reader.ReadInt16(); string path = ReadString(reader); bool isBattler = reader.ReadInt16() != 0; int npcId = reader.ReadInt16(); reader.ReadInt16(); OriginalNpcs.Add(new Npc(npcId, npcName, isBattler, type, x, y, DirectionExtensions.FromNumber(direction), losLength, path)); } } } }
public Map(byte[] content) { using (MemoryStream stream = new MemoryStream(content)) { using (BinaryReader reader = new BinaryReader(stream)) { Colliders = ReadTiles(reader); DimensionX = Colliders.GetUpperBound(0) + 1; DimensionY = Colliders.GetUpperBound(1) + 1; Width = DimensionX - 1; Height = DimensionY - 1; Tiles1 = ReadTiles(reader); Tiles2 = ReadTiles(reader); Tiles3 = ReadTiles(reader); Tiles4 = ReadTiles(reader); MapWeather = ReadString(reader); reader.ReadInt16(); reader.ReadInt16(); IsOutside = reader.ReadByte() != 0; Region = ReadString(reader); reader.ReadInt16(); int count = reader.ReadInt16() - 1; reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); Links = new MapLink[DimensionX, DimensionY]; LinkDestinations = new Dictionary <string, List <Tuple <int, int> > >(); for (int i = 0; i < count; ++i) { string destination = ReadString(reader); int x = reader.ReadInt16(); int y = reader.ReadInt16(); int toX = reader.ReadInt16(); int toY = reader.ReadInt16(); Links[x, y] = new MapLink(destination, toX, toY); destination = destination.ToUpperInvariant(); if (!LinkDestinations.ContainsKey(destination)) { LinkDestinations.Add(destination, new List <Tuple <int, int> >()); } LinkDestinations[destination].Add(new Tuple <int, int>(x, y)); } int k = reader.ReadInt16(); int npcCount = reader.ReadInt16() - 1; for (int i = 0; i < 45; ++i) { int b = reader.ReadInt16(); } Npcs = new List <Npc>(); OriginalNpcs = new List <Npc>(); for (int i = 0; i < npcCount; ++i) { string npcName = ReadString(reader); int x = reader.ReadInt16(); int y = reader.ReadInt16(); int direction = reader.ReadByte(); int losLength = reader.ReadByte(); int type = reader.ReadInt16(); ReadString(reader); string path = ReadString(reader); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); bool isBattler = reader.ReadInt16() != 0; reader.ReadInt16(); reader.ReadSingle(); reader.ReadSingle(); int npcId = reader.ReadInt16(); OriginalNpcs.Add(new Npc(npcId, npcName, isBattler, type, x, y, DirectionExtensions.FromNumber(direction), losLength, path)); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); reader.ReadInt16(); } } } }