private void btnAddLegendary_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(txtLName.Text)) { MessageBox.Show("The legendary needs a name."); } else { Legendary exists = legendaryList.FirstOrDefault(x => x.name == txtLName.Text); if (exists == null) { Legendary legendary = new Legendary(); legendary.name = txtLName.Text; legendary.text = txtLText.Text; legendaryList.Add(legendary); lstLegendary.Items.Add(legendary.name); txtLName.Text = ""; txtLText.Text = ""; } else { MessageBox.Show("A legendary action with that name already exists."); } } }
private void lstLegendary_DoubleClick(object sender, EventArgs e) { DialogResult dialogResult = MessageBox.Show("Remove legendary action: " + lstLegendary.SelectedItem.ToString() + " ?", "Are you sure?", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { try { Legendary legendary = legendaryList.First(x => x.name == lstLegendary.SelectedItem.ToString()); legendaryList.Remove(legendary); lstLegendary.Items.Remove(lstLegendary.SelectedItem); } catch { } } }
public static List <Monster> GetMonsterManual(string url) { var xml = ""; using (var client = new WebClient()) { client.Encoding = Encoding.UTF8; xml = client.DownloadString(url); } var document = new XmlDocument(); document.LoadXml(xml); var monsterList = new List <Monster>(); foreach (XmlNode monster in document.DocumentElement.SelectNodes("monster")) { { var name = "N/A"; var size = "N/A"; var type = "N/A"; var alignment = "N/A"; var AC = "N/A"; var HP = "N/A"; var speed = "N/A"; var STR = "N/A"; var DEX = "N/A"; var CON = "N/A"; var INT = "N/A"; var WIS = "N/A"; var CHA = "N/A"; var skill = "N/A"; var passive = "N/A"; var languages = "N/A"; var CR = "N/A"; var immune = "N/A"; var senses = "N/A"; var save = "N/A"; var resist = "N/A"; var vulnerable = "N/A"; var conditionImmune = "N/A"; var description = "N/A"; var spells = "N/A"; var slots = "N/A"; var initiative = "N/A"; List <Trait> traitList = new List <Trait>(); List <Action> actionList = new List <Action>(); List <Legendary> legendaryList = new List <Legendary>(); List <Reaction> reactionList = new List <Reaction>(); try { name = monster.SelectSingleNode("name").InnerText; } catch { } try { size = monster.SelectSingleNode("size").InnerText; } catch { } try { type = monster.SelectSingleNode("type").InnerText; } catch { } try { alignment = monster.SelectSingleNode("alignment").InnerText; } catch { } try { AC = monster.SelectSingleNode("ac").InnerText; } catch { } try { HP = monster.SelectSingleNode("hp").InnerText; } catch { } try { speed = monster.SelectSingleNode("speed").InnerText; } catch { } try { STR = monster.SelectSingleNode("str").InnerText; } catch { } try { DEX = monster.SelectSingleNode("dex").InnerText; } catch { } try { CON = monster.SelectSingleNode("con").InnerText; } catch { } try { INT = monster.SelectSingleNode("int").InnerText; } catch { } try { WIS = monster.SelectSingleNode("wis").InnerText; } catch { } try { CHA = monster.SelectSingleNode("cha").InnerText; } catch { } try { skill = monster.SelectSingleNode("skill").InnerText; } catch { } try { passive = monster.SelectSingleNode("passive").InnerText; } catch { } try { languages = monster.SelectSingleNode("languages").InnerText; } catch { } try { CR = monster.SelectSingleNode("cr").InnerText; } catch { } try { immune = monster.SelectSingleNode("immune").InnerText; } catch { } try { senses = monster.SelectSingleNode("senses").InnerText; } catch { } try { save = monster.SelectSingleNode("save").InnerText; } catch { } try { resist = monster.SelectSingleNode("resist").InnerText; } catch { } try { vulnerable = monster.SelectSingleNode("vulnerable").InnerText; } catch { } try { conditionImmune = monster.SelectSingleNode("conditionImmune").InnerText; } catch { } try { description = monster.SelectSingleNode("description").InnerText; } catch { } try { spells = monster.SelectSingleNode("spells").InnerText; } catch { } try { slots = monster.SelectSingleNode("slots").InnerText; } catch { } try { foreach (XmlNode trait in monster.SelectNodes("trait")) { Trait newTrait = new Trait(); newTrait.name = trait.SelectSingleNode("name").InnerText; List <string> textList = new List <string>(); foreach (XmlNode text in trait.SelectNodes("text")) { textList.Add(text.InnerText); } newTrait.textList = textList; traitList.Add(newTrait); } } catch { } try { foreach (XmlNode action in monster.SelectNodes("action")) { Action newAction = new Action(); newAction.name = action.SelectSingleNode("name").InnerText; newAction.text = action.SelectSingleNode("text").InnerText; actionList.Add(newAction); } } catch { } try { foreach (XmlNode legendary in monster.SelectNodes("legendary")) { Legendary newLegendary = new Legendary(); newLegendary.name = legendary.SelectSingleNode("name").InnerText; newLegendary.text = legendary.SelectSingleNode("text").InnerText; legendaryList.Add(newLegendary); } } catch { } try { foreach (XmlNode reaction in monster.SelectNodes("reaction")) { Reaction newReaction = new Reaction(); newReaction.name = reaction.SelectSingleNode("name").InnerText; newReaction.text = reaction.SelectSingleNode("text").InnerText; reactionList.Add(newReaction); } } catch { } switch (int.Parse(DEX)) { case 1: initiative = "-5"; break; case 2: initiative = "-4"; break; case 3: initiative = "-4"; break; case 4: initiative = "-3"; break; case 5: initiative = "-3"; break; case 6: initiative = "-2"; break; case 7: initiative = "-2"; break; case 8: initiative = "-1"; break; case 9: initiative = "-1"; break; case 10: initiative = "0"; break; case 11: initiative = "0"; break; case 12: initiative = "1"; break; case 13: initiative = "1"; break; case 14: initiative = "2"; break; case 15: initiative = "2"; break; case 16: initiative = "3"; break; case 17: initiative = "3"; break; case 18: initiative = "4"; break; case 19: initiative = "4"; break; case 20: initiative = "5"; break; case 21: initiative = "5"; break; case 22: initiative = "6"; break; case 23: initiative = "6"; break; case 24: initiative = "7"; break; case 25: initiative = "7"; break; case 26: initiative = "8"; break; case 27: initiative = "8"; break; case 28: initiative = "9"; break; case 29: initiative = "9"; break; case 30: initiative = "10"; break; default: MessageBox.Show("Dexterity anomaly found on " + name + ". Setting initiative to 0."); initiative = "0"; break; } monsterList.Add(new Monster { name = name, size = size, type = type, alignment = alignment, AC = AC, HP = HP, speed = speed, STR = STR, DEX = DEX, CON = CON, INT = INT, WIS = WIS, CHA = CHA, skill = skill, passive = passive, languages = languages, CR = CR, immune = immune, senses = senses, save = save, resist = resist, vulnerable = vulnerable, conditionImmune = conditionImmune, legendaryList = legendaryList, reactionList = reactionList, traitList = traitList, actionList = actionList, description = description, spells = spells, slots = slots, initiative = initiative }); } } return(monsterList); }