protected override bool Run(SimDescription me, bool singleSelection) { AcademicDegreeManager manager = me.CareerManager.DegreeManager; if (!ApplyAll) { List <Item> choices = new List <Item>(); foreach (AcademicDegreeStaticData data in AcademicDegreeManager.sDictionary.Values) { int value = 0; if (manager != null) { AcademicDegree degree = manager.GetElement(data.AcademicDegreeName); if (degree != null) { value = degree.NumberOfCreditsTowardDegree; } } choices.Add(new Item(data, value)); } CommonSelection <Item> .Results results = new CommonSelection <Item>(Name, choices).SelectMultiple(); if ((results == null) || (results.Count == 0)) { return(false); } foreach (Item item in results) { string text = StringInputDialog.Show(Name, Common.Localize(GetTitlePrefix() + ":Prompt", me.IsFemale, new object[] { me.FullName, item.Value.DegreeName, item.Value.RequiredNumberOfCredit }), item.Count.ToString()); if (string.IsNullOrEmpty(text)) { continue; } int count; if (!int.TryParse(text, out count)) { Common.Notify(Common.Localize("Numeric:Error")); continue; } mDegrees[item.Value.AcademicDegreeName] = count; } } foreach (KeyValuePair <AcademicDegreeNames, int> pair in mDegrees) { AcademicDegree degree = manager.GetElement(pair.Key); if (degree == null) { if (pair.Value <= 0) { continue; } manager.AddNewDegree(pair.Key, pair.Value); } else { if (pair.Value > 0) { degree.mEarnedNumberOfCreditsTowardDegree = pair.Value; } else { manager.RemoveElement((ulong)pair.Key); } } } return(true); }