public void Statuses_Changed() { Dictionary <int, MapStatus> statuses = new Dictionary <int, MapStatus>(); List <MapStatus> states = Statuses.GetList <List <MapStatus> >(); for (int ii = 0; ii < states.Count; ii++) { statuses[states[ii].ID] = states[ii]; } ZoneManager.Instance.CurrentMap.Status = statuses; }
//TODO: move these events into ListEditor; they were generic enough to warrant copy+pasting public void Statuses_EditItem(int index, object element, CollectionBoxViewModel.EditElementOp op) { string elementName = "Statuses[" + index + "]"; DataEditForm frmData = new DataEditForm(); frmData.Title = DataEditor.GetWindowTitle(ZoneManager.Instance.CurrentMap.AssetName, elementName, element, typeof(MapStatus), new object[0]); DataEditor.LoadClassControls(frmData.ControlPanel, ZoneManager.Instance.CurrentMap.AssetName, elementName, typeof(MapStatus), new object[0], element, true); DevForm form = (DevForm)DiagManager.Instance.DevEditor; frmData.SelectedOKEvent += async() => { element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, typeof(MapStatus), new object[0], true); bool itemExists = false; List <MapStatus> states = (List <MapStatus>)Statuses.GetList(typeof(List <MapStatus>)); for (int ii = 0; ii < states.Count; ii++) { if (ii != index) { if (states[ii].ID == ((MapStatus)element).ID) { itemExists = true; } } } if (itemExists) { await MessageBox.Show(form.MapEditForm, "Cannot add duplicate IDs.", "Entry already exists.", MessageBox.MessageBoxButtons.Ok); } else { op(index, element); frmData.Close(); } }; frmData.SelectedCancelEvent += () => { frmData.Close(); }; form.MapEditForm.RegisterChild(frmData); frmData.Show(); }