public override void Activate() { RoomLayout room = manager.GetActiveRoomLayout(); int tileset = room.Tileset.Index; var reader = new XmlTextReader(Helper.GetResourceStream("LynnaLab.Resources.AutoSmoother.xml")); Smoother smoother = new Smoother(); bool validTileset = false; string name = ""; while (reader.Read()) { string s; switch (reader.NodeType) { case XmlNodeType.Element: name = reader.Name; switch (name) { case "tileset": s = reader.GetAttribute("index"); List <int> ints = GetIntList(s); validTileset = ints.Contains(tileset); break; } break; case XmlNodeType.Text: if (!validTileset) { continue; } s = reader.Value.Trim(); switch (name) { case "base": { IEnumerable <int> values = Regex.Split(s, @"\s+") .Select(a => Convert.ToInt32(a, 16)); int c = 0; foreach (int i in values) { smoother.baseTiles[c / 3, c % 3] = i; c++; } } break; case "horizontal": { IEnumerable <int> values = Regex.Split(s, @"\s+") .Select(a => Convert.ToInt32(a, 16)); int c = 0; foreach (int i in values) { smoother.hTiles[c] = i; c++; } } break; case "vertical": { IEnumerable <int> values = Regex.Split(s, @"\s+") .Select(a => Convert.ToInt32(a, 16)); int c = 0; foreach (int i in values) { smoother.vTiles[c] = i; c++; } } break; case "friendly": { s = Regex.Replace(s, @"\s", ""); List <int> ints = GetIntList(s); foreach (int i in ints) { smoother.ignoreTiles.Add(i); } } break; } break; case XmlNodeType.EndElement: switch (reader.Name) { case "tileset": validTileset = false; break; case "smoother": smoother.Apply(manager); smoother = new Smoother(); break; } name = ""; break; } } }
public override void Clicked() { Room room = manager.GetActiveRoom(); int area = room.Area.Index; var reader = new XmlTextReader("Plugins/AutoSmoother.xml"); Smoother smoother = new Smoother(); bool validArea = false; string name = ""; while (reader.Read()) { string s; switch (reader.NodeType) { case XmlNodeType.Element: name = reader.Name; switch(name) { case "area": s = reader.GetAttribute("index"); List<int> ints = GetIntList(s); validArea = ints.Contains(area); break; } break; case XmlNodeType.Text: if (!validArea) continue; s = reader.Value.Trim(); switch(name) { case "base": { IEnumerable<int> values = Regex.Split(s, @"\s+") .Select(a => Convert.ToInt32(a,16)); int c=0; foreach (int i in values) { smoother.baseTiles[c/3,c%3] = i; c++; } } break; case "horizontal": { IEnumerable<int> values = Regex.Split(s,@"\s+") .Select(a => Convert.ToInt32(a,16)); int c=0; foreach (int i in values) { smoother.hTiles[c] = i; c++; } } break; case "vertical": { IEnumerable<int> values = Regex.Split(s,@"\s+") .Select(a => Convert.ToInt32(a,16)); int c=0; foreach (int i in values) { smoother.vTiles[c] = i; c++; } } break; case "friendly": { s = Regex.Replace(s, @"\s",""); List<int> ints = GetIntList(s); foreach (int i in ints) { smoother.ignoreTiles.Add(i); } } break; } break; case XmlNodeType.EndElement: switch(reader.Name) { case "area": validArea = false; break; case "smoother": smoother.Apply(manager); smoother = new Smoother(); break; } name = ""; break; } } }