void EventHandler() { if (Input.GetButton("Fire1")) { if (previewedObject != null) { if (previewedObject.CanInstantiate()) { generatedTrap.Add(previewedObject); previewedObject.instantiateTrap(); previewedObject = null; } } } if (Input.GetKeyDown(KeyCode.P)) { EnableTrap(generatedTrap); } else if (Input.GetKeyDown(KeyCode.B)) { ResetPreview(); indexCurrentSelection += 1; currentPlugIndex = 0; indexCurrentSelection = indexCurrentSelection % availablePrefabs.Length; currentSelection = availablePrefabs[indexCurrentSelection]; } else if (Input.GetKeyDown(KeyCode.R)) { ResetPreview(); currentPlugIndex += 1; currentPlugIndex = currentPlugIndex % GetNbPlugs(currentSelection); } }
void ResetPreview() { if (previewedObject != null) { Object.Destroy(previewedObject.gameObject); previewedObject = null; } }
void SetObjectKinematic(TrapElement obj, bool isKinematic) { foreach (Rigidbody r in obj.GetComponentsInChildren <Rigidbody>()) { r.isKinematic = isKinematic; } BoxCollider box = obj.gameObject.AddComponent <BoxCollider>(); box.isTrigger = isKinematic; }
private void ChooseBtn_Click(object sender, EventArgs e) { TrapSelectForm trapSelectForm = new TrapSelectForm(); if (trapSelectForm.ShowDialog() == DialogResult.OK) { this.fTrapElement.Trap = trapSelectForm.Trap.Copy(); this.update_view(); } }
private void EditBtn_Click(object sender, EventArgs e) { TrapBuilderForm trapBuilderForm = new TrapBuilderForm(this.fTrapElement.Trap); if (trapBuilderForm.ShowDialog() == DialogResult.OK) { this.fTrapElement.Trap = trapBuilderForm.Trap; this.update_view(); } }
// Start is called before the first frame update void Start() { if (availablePrefabs.Length <= 0) { Debug.Log("Error: no prefabs available"); return; } currentSelection = availablePrefabs[indexCurrentSelection]; previewedObject = null; TrapElement firstElement = Instantiate(currentSelection, new Vector3(0, 0, 0), Quaternion.identity); SetObjectKinematic(firstElement, true); generatedTrap.Add(firstElement); }
int GetNbPlugs(TrapElement trap) { int res = 0; for (int i = 0; i < trap.transform.childCount; i++) { Transform child = trap.transform.GetChild(i); if (child.tag == "Plug") { res += 1; } } return(res); }
private static TrapElement get_trap(Map map, MapArea ma, AutoBuildData data) { Trap trap = DelveBuilder.select_trap(data); if (trap == null) { return(null); } TrapElement trapElement = new TrapElement() { Trap = trap, MapID = map.ID, MapAreaID = ma.ID }; return(trapElement); }
static TrapElement get_trap(Map map, MapArea ma, AutoBuildData data) { Trap t = select_trap(data); if (t != null) { TrapElement te = new TrapElement(); te.Trap = t; te.MapID = map.ID; te.MapAreaID = ma.ID; return(te); } return(null); }
void update_list() { ItemList.Items.Clear(); switch (fType) { case OverviewType.Encounters: { foreach (PlotPoint pp in fPoints) { if (pp.Element == null) { continue; } if (pp.Element is Encounter) { Encounter enc = pp.Element as Encounter; string creatures = ""; foreach (EncounterSlot slot in enc.AllSlots) { if (creatures != "") { creatures += ", "; } creatures += slot.Card.Title; if (slot.CombatData.Count != 1) { creatures += " (x" + slot.CombatData.Count + ")"; } } foreach (Trap trap in enc.Traps) { if (creatures != "") { creatures += ", "; } creatures += trap.Name; } ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(enc.GetXP() + " XP; " + creatures); lvi.Tag = new Pair <PlotPoint, Encounter>(pp, enc); } } } break; case OverviewType.Traps: { foreach (PlotPoint pp in fPoints) { if (pp.Element == null) { continue; } if (pp.Element is TrapElement) { TrapElement te = pp.Element as TrapElement; ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(Experience.GetCreatureXP(te.Trap.Level) + " XP; " + te.Trap.Name); lvi.Tag = new Pair <PlotPoint, Trap>(pp, te.Trap); } if (pp.Element is Encounter) { Encounter enc = pp.Element as Encounter; foreach (Trap trap in enc.Traps) { ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(Experience.GetCreatureXP(trap.Level) + " XP; " + trap.Name); lvi.Tag = new Pair <PlotPoint, Trap>(pp, trap); } } } } break; case OverviewType.SkillChallenges: { foreach (PlotPoint pp in fPoints) { if (pp.Element == null) { continue; } if (pp.Element is SkillChallenge) { SkillChallenge sc = pp.Element as SkillChallenge; ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(sc.GetXP() + " XP"); lvi.Tag = new Pair <PlotPoint, SkillChallenge>(pp, sc); } if (pp.Element is Encounter) { Encounter enc = pp.Element as Encounter; foreach (SkillChallenge sc in enc.SkillChallenges) { ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(sc.GetXP() + " XP"); lvi.Tag = new Pair <PlotPoint, SkillChallenge>(pp, sc); } } } } break; case OverviewType.Treasure: { foreach (PlotPoint pp in fPoints) { foreach (Parcel parcel in pp.Parcels) { string name = (parcel.Name != "") ? parcel.Name : "(undefined parcel)"; ListViewItem lvi = ItemList.Items.Add(pp.Name); lvi.SubItems.Add(name + ": " + parcel.Details); lvi.Tag = new Pair <PlotPoint, Parcel>(pp, parcel); } } } break; } if (ItemList.Items.Count == 0) { ListViewItem lvi = ItemList.Items.Add("(no items)"); lvi.ForeColor = SystemColors.GrayText; } ItemList.Sort(); }
private void ItemList_DoubleClick(object sender, EventArgs e) { switch (fType) { case OverviewType.Encounters: { if (SelectedEncounter != null) { int level = Workspace.GetPartyLevel(SelectedEncounter.First); EncounterBuilderForm dlg = new EncounterBuilderForm(SelectedEncounter.Second, level, false); if (dlg.ShowDialog() == DialogResult.OK) { SelectedEncounter.First.Element = dlg.Encounter; Session.Modified = true; update_list(); } return; } } break; case OverviewType.Traps: { if (SelectedTrap != null) { if (SelectedTrap.First.Element is TrapElement) { TrapElement te = SelectedTrap.First.Element as TrapElement; TrapBuilderForm dlg = new TrapBuilderForm(SelectedTrap.Second); if (dlg.ShowDialog() == DialogResult.OK) { te.Trap = dlg.Trap; Session.Modified = true; update_list(); } return; } if (SelectedTrap.First.Element is Encounter) { Encounter enc = SelectedTrap.First.Element as Encounter; int index = enc.Traps.IndexOf(SelectedTrap.Second); TrapBuilderForm dlg = new TrapBuilderForm(SelectedTrap.Second); if (dlg.ShowDialog() == DialogResult.OK) { enc.Traps[index] = dlg.Trap; Session.Modified = true; update_list(); } return; } } } break; case OverviewType.SkillChallenges: { if (SelectedChallenge != null) { if (SelectedChallenge.First.Element is SkillChallenge) { SkillChallenge sc = SelectedChallenge.First.Element as SkillChallenge; SkillChallengeBuilderForm dlg = new SkillChallengeBuilderForm(SelectedChallenge.Second); if (dlg.ShowDialog() == DialogResult.OK) { sc.Name = dlg.SkillChallenge.Name; sc.Level = dlg.SkillChallenge.Level; sc.Complexity = dlg.SkillChallenge.Complexity; sc.Success = dlg.SkillChallenge.Success; sc.Failure = dlg.SkillChallenge.Failure; sc.Skills.Clear(); foreach (SkillChallengeData scd in dlg.SkillChallenge.Skills) { sc.Skills.Add(scd.Copy()); } Session.Modified = true; update_list(); } return; } if (SelectedChallenge.First.Element is Encounter) { Encounter enc = SelectedChallenge.First.Element as Encounter; int index = enc.SkillChallenges.IndexOf(SelectedChallenge.Second); SkillChallengeBuilderForm dlg = new SkillChallengeBuilderForm(SelectedChallenge.Second); if (dlg.ShowDialog() == DialogResult.OK) { enc.SkillChallenges[index] = dlg.SkillChallenge; Session.Modified = true; update_list(); } return; } } } break; case OverviewType.Treasure: { if (SelectedParcel != null) { int index = SelectedParcel.First.Parcels.IndexOf(SelectedParcel.Second); ParcelForm dlg = new ParcelForm(SelectedParcel.Second); if (dlg.ShowDialog() == DialogResult.OK) { SelectedParcel.First.Parcels[index] = dlg.Parcel; Session.Modified = true; update_list(); } return; } } break; } }
public bool LoadBin(byte[] binContent) { m_mapElements.Clear(); m_vecAllElements.Clear(); int nCol, nRow; int readPos = 0; readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nCol); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out nRow); List <string> vecLine = new List <string>(nCol); List <int> vecHeadType = new List <int>(nCol); string tmpStr; int tmpInt; for (int i = 0; i < nCol; i++) { readPos += GameAssist.ReadString(binContent, readPos, out tmpStr); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out tmpInt); vecLine.Add(tmpStr); vecHeadType.Add(tmpInt); } if (vecLine.Count != 7) { Ex.Logger.Log("Trap.csv中列数量与生成的代码不匹配!"); return(false); } if (vecLine[0] != "TrapID") { Ex.Logger.Log("Trap.csv中字段[TrapID]位置不对应"); return(false); } if (vecLine[1] != "AblityID") { Ex.Logger.Log("Trap.csv中字段[AblityID]位置不对应"); return(false); } if (vecLine[2] != "TriggerType") { Ex.Logger.Log("Trap.csv中字段[TriggerType]位置不对应"); return(false); } if (vecLine[3] != "TriggerParameter1") { Ex.Logger.Log("Trap.csv中字段[TriggerParameter1]位置不对应"); return(false); } if (vecLine[4] != "TriggerParameter2") { Ex.Logger.Log("Trap.csv中字段[TriggerParameter2]位置不对应"); return(false); } if (vecLine[5] != "Times") { Ex.Logger.Log("Trap.csv中字段[Times]位置不对应"); return(false); } if (vecLine[6] != "BuffID") { Ex.Logger.Log("Trap.csv中字段[BuffID]位置不对应"); return(false); } for (int i = 0; i < nRow; i++) { TrapElement member = new TrapElement(); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.TrapID); readPos += GameAssist.ReadString(binContent, readPos, out member.AblityID); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.TriggerType); readPos += GameAssist.ReadString(binContent, readPos, out member.TriggerParameter1); readPos += GameAssist.ReadString(binContent, readPos, out member.TriggerParameter2); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.Times); readPos += GameAssist.ReadInt32Variant(binContent, readPos, out member.BuffID); member.IsValidate = true; m_vecAllElements.Add(member); m_mapElements[member.TrapID] = member; } return(true); }
private TrapTable() { m_mapElements = new Dictionary <int, TrapElement>(); m_emptyItem = new TrapElement(); m_vecAllElements = new List <TrapElement>(); }
public bool LoadCsv(string strContent) { if (strContent.Length == 0) { return(false); } m_mapElements.Clear(); m_vecAllElements.Clear(); int contentOffset = 0; List <string> vecLine; vecLine = GameAssist.readCsvLine(strContent, ref contentOffset); if (vecLine.Count != 7) { Ex.Logger.Log("Trap.csv中列数量与生成的代码不匹配!"); return(false); } if (vecLine[0] != "TrapID") { Ex.Logger.Log("Trap.csv中字段[TrapID]位置不对应"); return(false); } if (vecLine[1] != "AblityID") { Ex.Logger.Log("Trap.csv中字段[AblityID]位置不对应"); return(false); } if (vecLine[2] != "TriggerType") { Ex.Logger.Log("Trap.csv中字段[TriggerType]位置不对应"); return(false); } if (vecLine[3] != "TriggerParameter1") { Ex.Logger.Log("Trap.csv中字段[TriggerParameter1]位置不对应"); return(false); } if (vecLine[4] != "TriggerParameter2") { Ex.Logger.Log("Trap.csv中字段[TriggerParameter2]位置不对应"); return(false); } if (vecLine[5] != "Times") { Ex.Logger.Log("Trap.csv中字段[Times]位置不对应"); return(false); } if (vecLine[6] != "BuffID") { Ex.Logger.Log("Trap.csv中字段[BuffID]位置不对应"); return(false); } while (true) { vecLine = GameAssist.readCsvLine(strContent, ref contentOffset); if ((int)vecLine.Count == 0) { break; } if ((int)vecLine.Count != (int)7) { return(false); } TrapElement member = new TrapElement(); member.TrapID = Convert.ToInt32(vecLine[0]); member.AblityID = vecLine[1]; member.TriggerType = Convert.ToInt32(vecLine[2]); member.TriggerParameter1 = vecLine[3]; member.TriggerParameter2 = vecLine[4]; member.Times = Convert.ToInt32(vecLine[5]); member.BuffID = Convert.ToInt32(vecLine[6]); member.IsValidate = true; m_vecAllElements.Add(member); m_mapElements[member.TrapID] = member; } return(true); }
void element_select(object sender, WebBrowserNavigatingEventArgs e) { int level = get_party_level(); if (e.Url.LocalPath == "encounter") { // Add an encounter Encounter enc = new Encounter(); enc.SetStandardEncounterNotes(); fPoint.Element = enc; update_element(); } if (e.Url.LocalPath == "pasteencounter") { // Add an encounter Encounter enc = Clipboard.GetData(typeof(Encounter).ToString()) as Encounter; fPoint.Element = enc; update_element(); } if (e.Url.LocalPath == "challenge") { // Add a skill challenge SkillChallenge sc = new SkillChallenge(); sc.Name = "Unnamed Skill Challenge"; sc.Level = level; fPoint.Element = sc; update_element(); } if (e.Url.LocalPath == "pastechallenge") { // Add a skill challenge SkillChallenge sc = Clipboard.GetData(typeof(SkillChallenge).ToString()) as SkillChallenge; sc.Level = level; fPoint.Element = sc; update_element(); } if (e.Url.LocalPath == "trap") { // Add a trap TrapElement te = new TrapElement(); te.Trap.Name = "Unnamed Trap"; te.Trap.Level = level; fPoint.Element = te; update_element(); } if (e.Url.LocalPath == "pastetrap") { // Add a trap TrapElement te = Clipboard.GetData(typeof(TrapElement).ToString()) as TrapElement; te.Trap.Level = level; fPoint.Element = te; update_element(); } if (e.Url.LocalPath == "quest") { // Add a quest Quest q = new Quest(); q.Level = level; fPoint.Element = q; update_element(); } if (e.Url.LocalPath == "pastequest") { // Add a quest Quest q = Clipboard.GetData(typeof(Quest).ToString()) as Quest; q.Level = level; fPoint.Element = q; update_element(); } if (e.Url.LocalPath == "map") { // Add a map MapElement me = new MapElement(); fPoint.Element = me; update_element(); } if (e.Url.LocalPath == "pastemap") { // Add a map MapElement me = Clipboard.GetData(typeof(MapElement).ToString()) as MapElement; fPoint.Element = me; update_element(); } }
private void update_list() { this.ItemList.Items.Clear(); switch (this.fType) { case OverviewType.Encounters: { List <PlotPoint> .Enumerator enumerator = this.fPoints.GetEnumerator(); try { while (enumerator.MoveNext()) { PlotPoint current = enumerator.Current; if (current.Element == null || !(current.Element is Encounter)) { continue; } Encounter element = current.Element as Encounter; string str = ""; List <EncounterSlot> .Enumerator enumerator1 = element.AllSlots.GetEnumerator(); try { while (enumerator1.MoveNext()) { EncounterSlot encounterSlot = enumerator1.Current; if (str != "") { str = string.Concat(str, ", "); } str = string.Concat(str, encounterSlot.Card.Title); if (encounterSlot.CombatData.Count == 1) { continue; } object obj = str; object[] count = new object[] { obj, " (x", encounterSlot.CombatData.Count, ")" }; str = string.Concat(count); } } finally { ((IDisposable)enumerator1).Dispose(); } List <Trap> .Enumerator enumerator2 = element.Traps.GetEnumerator(); try { while (enumerator2.MoveNext()) { Trap trap = enumerator2.Current; if (str != "") { str = string.Concat(str, ", "); } str = string.Concat(str, trap.Name); } } finally { ((IDisposable)enumerator2).Dispose(); } ListViewItem pair = this.ItemList.Items.Add(current.Name); pair.SubItems.Add(string.Concat(element.GetXP(), " XP; ", str)); pair.Tag = new Pair <PlotPoint, Encounter>(current, element); } break; } finally { ((IDisposable)enumerator).Dispose(); } } case OverviewType.Traps: { List <PlotPoint> .Enumerator enumerator3 = this.fPoints.GetEnumerator(); try { while (enumerator3.MoveNext()) { PlotPoint plotPoint = enumerator3.Current; if (plotPoint.Element == null) { continue; } if (plotPoint.Element is TrapElement) { TrapElement trapElement = plotPoint.Element as TrapElement; ListViewItem listViewItem = this.ItemList.Items.Add(plotPoint.Name); listViewItem.SubItems.Add(string.Concat(Experience.GetCreatureXP(trapElement.Trap.Level), " XP; ", trapElement.Trap.Name)); listViewItem.Tag = new Pair <PlotPoint, Trap>(plotPoint, trapElement.Trap); } if (!(plotPoint.Element is Encounter)) { continue; } List <Trap> .Enumerator enumerator4 = (plotPoint.Element as Encounter).Traps.GetEnumerator(); try { while (enumerator4.MoveNext()) { Trap current1 = enumerator4.Current; ListViewItem pair1 = this.ItemList.Items.Add(plotPoint.Name); pair1.SubItems.Add(string.Concat(Experience.GetCreatureXP(current1.Level), " XP; ", current1.Name)); pair1.Tag = new Pair <PlotPoint, Trap>(plotPoint, current1); } } finally { ((IDisposable)enumerator4).Dispose(); } } break; } finally { ((IDisposable)enumerator3).Dispose(); } } case OverviewType.SkillChallenges: { List <PlotPoint> .Enumerator enumerator5 = this.fPoints.GetEnumerator(); try { while (enumerator5.MoveNext()) { PlotPoint plotPoint1 = enumerator5.Current; if (plotPoint1.Element == null) { continue; } if (plotPoint1.Element is SkillChallenge) { SkillChallenge skillChallenge = plotPoint1.Element as SkillChallenge; ListViewItem listViewItem1 = this.ItemList.Items.Add(plotPoint1.Name); listViewItem1.SubItems.Add(string.Concat(skillChallenge.GetXP(), " XP")); listViewItem1.Tag = new Pair <PlotPoint, SkillChallenge>(plotPoint1, skillChallenge); } if (!(plotPoint1.Element is Encounter)) { continue; } List <SkillChallenge> .Enumerator enumerator6 = (plotPoint1.Element as Encounter).SkillChallenges.GetEnumerator(); try { while (enumerator6.MoveNext()) { SkillChallenge skillChallenge1 = enumerator6.Current; ListViewItem pair2 = this.ItemList.Items.Add(plotPoint1.Name); pair2.SubItems.Add(string.Concat(skillChallenge1.GetXP(), " XP")); pair2.Tag = new Pair <PlotPoint, SkillChallenge>(plotPoint1, skillChallenge1); } } finally { ((IDisposable)enumerator6).Dispose(); } } break; } finally { ((IDisposable)enumerator5).Dispose(); } } case OverviewType.Treasure: { List <PlotPoint> .Enumerator enumerator7 = this.fPoints.GetEnumerator(); try { while (enumerator7.MoveNext()) { PlotPoint current2 = enumerator7.Current; List <Parcel> .Enumerator enumerator8 = current2.Parcels.GetEnumerator(); try { while (enumerator8.MoveNext()) { Parcel parcel = enumerator8.Current; string str1 = (parcel.Name != "" ? parcel.Name : "(undefined parcel)"); ListViewItem listViewItem2 = this.ItemList.Items.Add(current2.Name); listViewItem2.SubItems.Add(string.Concat(str1, ": ", parcel.Details)); listViewItem2.Tag = new Pair <PlotPoint, Parcel>(current2, parcel); } } finally { ((IDisposable)enumerator8).Dispose(); } } break; } finally { ((IDisposable)enumerator7).Dispose(); } } } if (this.ItemList.Items.Count == 0) { ListViewItem grayText = this.ItemList.Items.Add("(no items)"); grayText.ForeColor = SystemColors.GrayText; } this.ItemList.Sort(); }
bool PreviewEdition() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { int layerPlug = LayerMask.NameToLayer("Plug"); if (hit.collider.gameObject.layer == layerPlug) { if (previewedObject != null) { return(true); } Transform attachedElement = hit.collider.gameObject.transform.parent; Transform plugPrefab = currentSelection.transform.GetChild(currentPlugIndex); Transform plugged = hit.collider.transform; Vector3 newElementPosition = plugged.position - plugPrefab.position; Vector3 normalPlug = plugPrefab.forward; Vector3 normalPlugged = plugged.forward; Vector3 axisRotation = Vector3.Cross(normalPlug, normalPlugged); if (Vector3.Cross(normalPlug, normalPlugged) == Vector3.zero)//if the forward vectors are in the same direction, any orthogonal axis is valid { /*if(normalPlug != Vector3.up && normalPlug != -Vector3.up) * axisRotation = -Vector3.up; * else * axisRotation = -Vector3.left;*/ if (normalPlug.x != 0) { axisRotation = new Vector3(normalPlug.z / normalPlug.x, 0, 1); } else if (normalPlug.y != 0) { axisRotation = new Vector3(0, normalPlug.z / normalPlug.y, 1); } else//normalPlug.z has to be != 0 { axisRotation = new Vector3(0, 1, normalPlug.y / normalPlug.z); } } previewedObject = Instantiate(currentSelection, newElementPosition, Quaternion.identity); SetObjectKinematic(previewedObject, true); previewedObject.transform.RotateAround(plugged.position, axisRotation, -Vector3.Angle(-normalPlugged, normalPlug)); Transform plug = previewedObject.transform.GetChild(currentPlugIndex); FixedJoint newJoint = plug.gameObject.AddComponent <FixedJoint>(); newJoint.connectedBody = hit.collider.attachedRigidbody; return(true); } else { if (previewedObject != null) { if (!previewedObject.CanInstantiate()) { return(false); } } if (hit.collider.gameObject.name == "Terrain") { return(false); } return(true); } } return(false); }
private void ItemList_DoubleClick(object sender, EventArgs e) { switch (this.fType) { case OverviewType.Encounters: { if (this.SelectedEncounter == null) { break; } int partyLevel = Workspace.GetPartyLevel(this.SelectedEncounter.First); EncounterBuilderForm encounterBuilderForm = new EncounterBuilderForm(this.SelectedEncounter.Second, partyLevel, false); if (encounterBuilderForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.SelectedEncounter.First.Element = encounterBuilderForm.Encounter; Session.Modified = true; this.update_list(); } return; } case OverviewType.Traps: { if (this.SelectedTrap == null) { break; } if (this.SelectedTrap.First.Element is TrapElement) { TrapElement element = this.SelectedTrap.First.Element as TrapElement; TrapBuilderForm trapBuilderForm = new TrapBuilderForm(this.SelectedTrap.Second); if (trapBuilderForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { element.Trap = trapBuilderForm.Trap; Session.Modified = true; this.update_list(); } return; } if (!(this.SelectedTrap.First.Element is Encounter)) { break; } Encounter trap = this.SelectedTrap.First.Element as Encounter; int num = trap.Traps.IndexOf(this.SelectedTrap.Second); TrapBuilderForm trapBuilderForm1 = new TrapBuilderForm(this.SelectedTrap.Second); if (trapBuilderForm1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { trap.Traps[num] = trapBuilderForm1.Trap; Session.Modified = true; this.update_list(); } return; } case OverviewType.SkillChallenges: { if (this.SelectedChallenge == null) { break; } if (this.SelectedChallenge.First.Element is SkillChallenge) { SkillChallenge name = this.SelectedChallenge.First.Element as SkillChallenge; SkillChallengeBuilderForm skillChallengeBuilderForm = new SkillChallengeBuilderForm(this.SelectedChallenge.Second); if (skillChallengeBuilderForm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { name.Name = skillChallengeBuilderForm.SkillChallenge.Name; name.Level = skillChallengeBuilderForm.SkillChallenge.Level; name.Complexity = skillChallengeBuilderForm.SkillChallenge.Complexity; name.Success = skillChallengeBuilderForm.SkillChallenge.Success; name.Failure = skillChallengeBuilderForm.SkillChallenge.Failure; name.Skills.Clear(); foreach (SkillChallengeData skill in skillChallengeBuilderForm.SkillChallenge.Skills) { name.Skills.Add(skill.Copy()); } Session.Modified = true; this.update_list(); } return; } if (!(this.SelectedChallenge.First.Element is Encounter)) { break; } Encounter skillChallenge = this.SelectedChallenge.First.Element as Encounter; int num1 = skillChallenge.SkillChallenges.IndexOf(this.SelectedChallenge.Second); SkillChallengeBuilderForm skillChallengeBuilderForm1 = new SkillChallengeBuilderForm(this.SelectedChallenge.Second); if (skillChallengeBuilderForm1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { skillChallenge.SkillChallenges[num1] = skillChallengeBuilderForm1.SkillChallenge; Session.Modified = true; this.update_list(); } return; } case OverviewType.Treasure: { if (this.SelectedParcel == null) { break; } int parcel = this.SelectedParcel.First.Parcels.IndexOf(this.SelectedParcel.Second); ParcelForm parcelForm = new ParcelForm(this.SelectedParcel.Second); if (parcelForm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { break; } this.SelectedParcel.First.Parcels[parcel] = parcelForm.Parcel; Session.Modified = true; this.update_list(); break; } default: { return; } } }