static void Main(string[] args) { if (args.Length < 1) { System.Console.WriteLine("Must provide a file name as an argument."); System.Console.ReadLine(); return; } System.Console.WriteLine("Parsing file '{0}'.", args[0]); var parser = new FileParser(); var sources = parser.Parse(args[0]); sources.UseAttributesWithValues = false; System.Console.WriteLine("Done parsing. Parsed {0} data sources.", sources.Count); var attributeValues = new AttributeValues(); attributeValues.FindValues(sources); System.Console.WriteLine("Done finding attribute values."); System.Console.WriteLine(); int itemId; if (args.Length < 2) { var rand = new Random(); int index = rand.Next(attributeValues.ValuesMap[LootGainLib.Attribute.Loot].Keys.Count); itemId = (int)attributeValues.ValuesMap[LootGainLib.Attribute.Loot].Keys.ToList()[index]; } else { itemId = int.Parse(args[1]); } PrintSingleItem(itemId, sources, attributeValues); System.Console.WriteLine(); System.Console.WriteLine(); string sourceName; if (args.Length < 3) { var rand = new Random(); int index = rand.Next(attributeValues.ValuesMap[LootGainLib.Attribute.SourceName].Keys.Count); sourceName = (string)attributeValues.ValuesMap[LootGainLib.Attribute.SourceName].Keys.ToList()[index]; } else { sourceName = args[2]; } PrintSingleSource(sourceName, sources); System.Console.ReadLine(); }
static void PrintSingleSource(string sourceName, DataSourcesCollection sources) { var singleSourceSources = from s in sources where s.SourceName == sourceName select s; var localSources = new DataSourcesCollection(singleSourceSources); var attributeValues = new AttributeValues(); attributeValues.FindValues(localSources); var allLoot = attributeValues.ValuesMap[LootGainLib.Attribute.Loot].Keys.ToList(); System.Console.WriteLine("Loot for source '{0}' ({1} loot item(s); looted {2} time(s)).", sourceName, allLoot.Count, localSources.Count); foreach (int itemId in allLoot) { PrintSingleItem(itemId, localSources, attributeValues); System.Console.WriteLine(); } }