private static void CombineAnimatedTiles(AnimatedTilesBank basic, List <string> additions, RandoSettings settings) { var counts = new Dictionary <string, int>(); foreach (var key in basic.AnimationsByName.Keys) { counts[key] = 1; } var r = new Random((int)settings.IntSeed); foreach (var path in additions) { XmlElement animatedData = Calc.LoadContentXML(path)["Data"]; foreach (XmlElement el in animatedData) { if (el == null) { continue; } var name = el.Attr("name"); bool insert; if (counts.TryGetValue(name, out int count)) { count++; counts[name] = count; insert = r.Next(count) == 0; } else { counts[name] = 1; insert = true; } if (insert) { int idx = -1; if (basic.AnimationsByName.ContainsKey(name)) { idx = basic.Animations.IndexOf(basic.AnimationsByName[name]); basic.AnimationsByName.Remove(name); } basic.Add( name, el.AttrFloat("delay", 0f), el.AttrVector2("posX", "posY", Vector2.Zero), el.AttrVector2("origX", "origY", Vector2.Zero), GFX.Game.GetAtlasSubtextures(el.Attr("path")) ); if (idx != -1) { basic.Animations[idx] = basic.AnimationsByName[name]; basic.Animations.RemoveAt(basic.Animations.Count - 1); } } } } }
public AnimatedTiles(int columns, int rows, AnimatedTilesBank bank) { this.tiles = new VirtualMap <List <AnimatedTiles.Tile> >(columns, rows, (List <AnimatedTiles.Tile>)null); this.Bank = bank; }