static private void RegisterProceduralGenerator(TargettingType type, IProceduralTargettingGenerator generator) { Assert.IsFalse(proceduralTargettingGenerators.ContainsKey(type)); Assert.AreEqual(type, generator.GetTargettingType()); proceduralTargettingGenerators[type] = generator; double minCost = generator.GetMinCost(); int i; for (i = 0; i < targettingMinCosts.Count; i++) { if (minCost <= targettingMinCosts[i].Item1) { break; } } targettingMinCosts.Insert(i, new Tuple <double, TargettingType>(minCost, type)); targettingByAlignment[generator.GetDescriptionType().GetAlignment()].Add(type); }