private void SurfSetMenu_SelectedIndexChanged(object sender, EventArgs e) { UpdateCurSurfSetFromUI(); currSurfSet = SurfSetMenu.SelectedItem as SurfaceSetRecord; ShowSurfaceSet(currSurfSet); }
// Copy surface set parameters from the UI to the current surface set private void UpdateSurfaceSetFromUI(SurfaceSetRecord surfSet) { // we're not going to do range checking when harvesting edited values // because we did it when we were configuring the editor int numSlots = surfSet.SurfaceNames.Count; if (slot1Pick.Enabled) { surfSet.SurfaceNames[0] = slot1Pick.SelectedItem as string; } if (slot2Pick.Enabled) { surfSet.SurfaceNames[1] = slot2Pick.SelectedItem as string; } if (slot3Pick.Enabled) { surfSet.SurfaceNames[2] = slot3Pick.SelectedItem as string; } if (slot4Pick.Enabled) { surfSet.SurfaceNames[3] = slot4Pick.SelectedItem as string; } if (slot5Pick.Enabled) { surfSet.SurfaceNames[4] = slot5Pick.SelectedItem as string; } if (slot6Pick.Enabled) { surfSet.SurfaceNames[5] = slot6Pick.SelectedItem as string; } if (slot7Pick.Enabled) { surfSet.SurfaceNames[6] = slot7Pick.SelectedItem as string; } if (slot8Pick.Enabled) { surfSet.SurfaceNames[7] = slot8Pick.SelectedItem as string; } surfSet.BumpPath = BumpFld.Text; surfSet.DirtPath = DirtFld.Text; }
public void Initialize(string filePath, SurfaceDict surfaces) { fileName = filePath; surfDict = surfaces; this.Text = System.IO.Path.GetFileNameWithoutExtension(fileName); xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); // note on persistence: the surface sets are in subnodes of the root xml document // each surface set record will hold pointers to these subnodes // when we save, we copy date back to the subnodes and then write the whole doc // back to the file. foreach (XmlNode node in xmlDoc.ChildNodes) { // look for the actor - should be one per file if (node.Name == "XmlGameActor") { foreach (XmlNode actorNode in node.ChildNodes) { // now get the surface sets - could be a couple if (actorNode.Name == "SurfaceSets") { foreach (XmlNode surfSetNode in actorNode.ChildNodes) { if (surfSetNode.Name == "SurfaceSet") { SurfaceSetRecord surfSetRec = new SurfaceSetRecord(surfSetNode); surfaceSets.Add(surfSetRec); SurfSetMenu.Items.Add(surfSetRec); } } } } } } Dirty = false; BuildSurfacePickers(surfaces); SurfSetMenu.SelectedIndex = 0; }
// When we load up a surface set, we want to put the right values // into the slot pickers. // Any slot pickers above the used number will be disabled. private void ShowSurfaceSet(SurfaceSetRecord surfSet) { int numSlots = surfSet.SurfaceNames.Count; if (slot1Pick.Enabled = (numSlots > 0)) { slot1Pick.SelectedItem = surfSet.SurfaceNames[0]; } else { slot1Pick.SelectedItem = null; } if (slot2Pick.Enabled = (numSlots > 1)) { slot2Pick.SelectedItem = surfSet.SurfaceNames[1]; } else { slot2Pick.SelectedItem = null; } if (slot3Pick.Enabled = (numSlots > 2)) { slot3Pick.SelectedItem = surfSet.SurfaceNames[2]; } else { slot3Pick.SelectedItem = null; } if (slot4Pick.Enabled = (numSlots > 3)) { slot4Pick.SelectedItem = surfSet.SurfaceNames[3]; } else { slot4Pick.SelectedItem = null; } if (slot5Pick.Enabled = (numSlots > 4)) { slot5Pick.SelectedItem = surfSet.SurfaceNames[4]; } else { slot5Pick.SelectedItem = null; } if (slot6Pick.Enabled = (numSlots > 5)) { slot6Pick.SelectedItem = surfSet.SurfaceNames[5]; } else { slot6Pick.SelectedItem = null; } if (slot7Pick.Enabled = (numSlots > 6)) { slot7Pick.SelectedItem = surfSet.SurfaceNames[6]; } else { slot7Pick.SelectedItem = null; } if (slot8Pick.Enabled = (numSlots > 7)) { slot8Pick.SelectedItem = surfSet.SurfaceNames[7]; } else { slot8Pick.SelectedItem = null; } BumpFld.Text = surfSet.BumpPath; DirtFld.Text = surfSet.DirtPath; }