public ICharacter GetCharacterByKey(Guid key) { Character5e character = null; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@Key", key) }; using (CustomDataAdapter adapter = new CustomDataAdapter("GetCharacter5eByKey", CommandType.StoredProcedure, parameters)) { DataTable table = new DataTable(); adapter.Fill(table); if (table.Rows.Count > 0) { character = CreateCharacterObject(table.Rows[0]); } } return(character); }
private static Ability GetAbilityByName(Character5e character, string abulity) { return(character.Abilities.FirstOrDefault(x => x.Name == abulity)); }
private static ICharacter LoadCharacter(XElement charElement) { // Not overly elegant, but will do for minimal code changes _charElement = charElement ?? throw new Exception("characterElement is null"); ICharacter character = new Character5e(); GetProperties(character); var abilityList = XPathElementList("abilities"); GetAbilites(abilityList, character); var skillList = XPathElementList("skilllist"); GetSkills(skillList, character); var classList = XPathElementList("classes"); GetCharClasses(classList, character); var weaponList = XPathElementList("weaponlist"); GetWeapons(weaponList, character); var proficiencyList = XPathElementList("proficiencylist"); GetProf(proficiencyList, character); var languageList = XPathElementList("languagelist"); GetLanguage(languageList, character); var traitList = XPathElementList("traitlist"); PopulateGenericList(traitList, character.Traits); var featList = XPathElementList("featlist"); PopulateGenericList(featList, character.Feats); var featuresList = XPathElementList("featurelist"); PopulateGenericList(featuresList, character.Features); var inventoryList = XPathElementList("inventorylist"); if (inventoryList != null) { foreach (var item in inventoryList) { character.Inventory.Add(new GenericItem() { Name = item.Element("name").Value, Text = item.Element("count").Value }); } } var powerGroupList = XPathElementList("powergroup"); if (powerGroupList != null) { foreach (var powerGroup in powerGroupList) { character.PowerGroup.Add(new PowerGroup() { Name = powerGroup.Element("name")?.Value, Stat = powerGroup.Element("stat")?.Value, }); } var powerList = XPathElementList("powers"); foreach (var power in powerList) { var powerGroup = character.PowerGroup.FirstOrDefault(x => string.Equals(x.Name, power.Element("group").Value, StringComparison.OrdinalIgnoreCase)); powerGroup.Powers.Add(new Power() { Name = power.Element("name").Value, Level = int.Parse((power.Element("level").Value)), Prepaired = Helper.StringIntToBool(((power.Element("prepared").Value))), Group = power.Element("group").Value, }); } } var powerSlotsList = XPathElementList("powermeta"); foreach (var slotElement in powerSlotsList) { character.PowerSlots.Add(new GenericItem() { Name = slotElement.Name.ToString(), Text = slotElement.Elements("max").First().Value }); } return(character); }
private static ICharacter LoadCharacter(XElement charElement) { // Not overly elegant, but will do for minimal code changes _charElement = charElement ?? throw new Exception("characterElement is null"); ICharacter character = new Character5e(); GetProperties(character); var abilityList = XPathElementList("abilities"); GetAbilites(abilityList, character); var skillList = XPathElementList("skilllist"); GetSkills(skillList, character); var classList = XPathElementList("classes"); GetCharClasses(classList, character); GetHitDice(classList, character); var coinList = XPathElementList("coins"); GetCoins(coinList, character); var weaponList = XPathElementList("weaponlist"); GetWeapons(weaponList, character); var proficiencyList = XPathElementList("proficiencylist"); GetProf(proficiencyList, character); var languageList = XPathElementList("languagelist"); GetLanguage(languageList, character); var traitList = XPathElementList("traitlist"); PopulateGenericList(traitList, character.Traits); var featList = XPathElementList("featlist"); PopulateGenericList(featList, character.Feats); var featuresList = XPathElementList("featurelist"); PopulateGenericList(featuresList, character.Features); var inventoryList = XPathElementList("inventorylist"); if (inventoryList != null) { foreach (var item in inventoryList) { try { character.Inventory.Add(new GenericItem() { Name = item.Element("name").Value, Text = item.Element("count").Value }); } catch (Exception) { Console.WriteLine("Could not parse Inventory Item: {0}", item); } } } var powerGroupList = XPathElementList("powergroup"); if (powerGroupList != null) { foreach (var powerGroup in powerGroupList) { try { character.PowerGroup.Add(new PowerGroup() { Name = powerGroup.Element("name")?.Value, Stat = powerGroup.Element("stat")?.Value, }); } catch (Exception) { Console.WriteLine("Could not parse PowerGroup: {0}", powerGroup); } } var powerList = XPathElementList("powers"); foreach (var power in powerList) { try { getPower(character, power); } catch (Exception) { Console.WriteLine("Could not parse power: {0}", power); } } } var powerSlotsList = XPathElementList("powermeta"); if (powerSlotsList != null) { foreach (var slotElement in powerSlotsList) { try { character.PowerSlots.Add(new GenericItem() { Name = slotElement.Name.ToString(), Text = slotElement.Elements("max").First().Value }); } catch (Exception) { Console.WriteLine("Could not parse PowerMeta: {0}", slotElement); } } } return(character); }
public bool SaveCharacter(ICharacter character) { if (!(character is Character5e)) { return(false); } bool result = false; Character5e character5e = character as Character5e; //using (CustomDataAdapter adapter = new CustomDataAdapter("AddOrUpdateCharacter5e", CommandType.StoredProcedure, parameters)) //{ // result = adapter.ExecuteNonQuery() == 1; //} SqlTransaction transaction = null; try { using (SqlConnection connection = new SqlConnection(_connectionString)) { connection.Open(); transaction = connection.BeginTransaction(); using (SqlCommand command = new SqlCommand("AddOrUpdateCharacter5e", connection, transaction)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.AddRange(character5e.ToSqlParameters().ToArray()); command.Parameters.AddRange(character5e.Skills.ToSqlParameters().ToArray()); command.Parameters.AddRange(character5e.Money.ToSqlParameters().ToArray()); command.Parameters.AddRange(character5e.SpellSlots.ToSqlParameters().ToArray()); command.Parameters.AddRange(new SqlParameter[] { new SqlParameter("@CstStrength", character5e.SavingThrows.Strength), new SqlParameter("@CstDexterity", character5e.SavingThrows.Dexterity), new SqlParameter("@CstConstitution", character5e.SavingThrows.Constitution), new SqlParameter("@CstIntelligence", character5e.SavingThrows.Intelligence), new SqlParameter("@CstWisdom", character5e.SavingThrows.Wisdom), new SqlParameter("@CstCharisma", character5e.SavingThrows.Charisma), }); command.ExecuteNonQuery(); } ExecuteCmdAgainstEntityList(character5e.AttacksAndSpellcasts, "AddOrUpdateCharacterAttacksAndSpellcasts5e", connection, transaction); ExecuteCmdAgainstEntityList(character5e.Items, "AddOrUpdateCharacterItem5e", connection, transaction); ExecuteCmdAgainstEntityList(character5e.FeaturesAndTraits, "AddOrUpdateCharacterFeatureOrTrait5e", connection, transaction); ExecuteCmdAgainstEntityList(character5e.Proficiencies, "AddOrUpdateCharacterProficiency5e", connection, transaction); ExecuteCmdAgainstEntityList(character5e.AlliesAndOrganizations, "AddOrUpdateCharacterAllyOrOrganization5e", connection, transaction); ExecuteCmdAgainstEntityList(character5e.Spells, "AddOrUpdateCharacterCharacterSpell5e", connection, transaction); transaction.Commit(); } } catch (Exception) { if (transaction != null) { transaction.Rollback(); } throw; } finally { if (transaction != null) { transaction.Dispose(); } } return(true); }
private Character5e CreateCharacterObject(DataRow row) { int characterId = Convert.ToInt32(row["Id"]); Character5e character = DataRowHelper.CreateItemFromRow <Character5e>(row); character.Key = (Guid)row["Key"]; character.SavingThrows = CreateSavingThrowsObject(row); character.Skills = DataRowHelper.CreateItemFromRow <CharacterSkills5e>(row); //CreateSkillsObject(row); character.TemporaryHitPoints = row["TemporaryHitPoints"].ToNullableInt(); character.AttacksAndSpellcasts = GetAttacksAndSpellcasts(characterId); character.Items = GetItems(characterId); character.Money = DataRowHelper.CreateItemFromRow <CharacterMoney5e>(row); //CreateMoneyObject(row); character.FeaturesAndTraits = GetFeaturesAndTraits(characterId); character.Proficiencies = GetProficiencies(characterId); character.AlliesAndOrganizations = GetAlliesAndOrganizations(characterId); character.SpellcastingAbility = row["SpellcastingAbility"].ToNullableInt(); character.SpellSaveDC = row["SpellSaveDC"].ToNullableInt(); character.SpellAttackBonus = row["SpellAttackBonus"].ToNullableInt(); character.Spells = GetSpells(characterId); character.SpellSlots = DataRowHelper.CreateItemFromRow <CharacterSpellSlots5e>(row); //CreateSpellSlotsObject(row); character.AppearanceKey = (Guid)row["AppearanceKey"]; return(character); //return new Character5e //{ // Key = (Guid)row["Key"], // Name = row["Name"] as String, // Class = row["Class"] as String, // Level = Convert.ToInt32(row["Name"]), // Background = row["Background"] as String, // PlayerName = row["PlayerName"] as String, // Race = row["Race"] as String, // Alignment = row["Alignment"] as String, // Experience = Convert.ToInt32(row["Experience"]), // Strength = Convert.ToInt32(row["Strength"]), // Dexterity = Convert.ToInt32(row["Dexterity"]), // Constitution = Convert.ToInt32(row["Constitution"]), // Intelligence = Convert.ToInt32(row["Intelligence"]), // Wisdom = Convert.ToInt32(row["Wisdom"]), // Charisma = Convert.ToInt32(row["Charisma"]), // Inspiration = Convert.ToInt32(row["Inspiration"]), // ProficiencyBonus = Convert.ToInt32(row["ProficiencyBonus"]), // SavingThrows = CreateSavingThrowsObject(row), // Skills = CreateSkillsObject(row), // ArmorClass = Convert.ToInt32(row["ArmorClass"]), // Initiative = Convert.ToInt32(row["Initiative"]), // Speed = Convert.ToInt32(row["Speed"]), // HitPointMaximum = Convert.ToInt32(row["HitPointMaximum"]), // CurrentHitPoints = Convert.ToInt32(row["CurrentHitPoints"]), // TemporaryHitPoints = row["TemporaryHitPoints"].ToNullableInt(), // TotalHitDice = row["TotalHitDice"] as String, // HitDice = row["HitDice"] as String, // SuccessDeathSaves = Convert.ToInt32(row["SuccessDeathSaves"]), // FailedDeathSaves = Convert.ToInt32(row["FailedDeathSaves"]), // AttacksAndSpellcasts = GetAttacksAndSpellcasts(characterId), // //Items = row["Items"] as String, // Money = CreateMoneyObject(row), // PersonalityTraits = row["PersonalityTraits"] as String, // Ideals = row["Ideals"] as String, // Bonds = row["Bonds"] as String, // Flaws = row["Flaws"] as String, // //FeaturesAndTraits = row["FeaturesAndTraits"] as String, // PassiveWisdom = Convert.ToInt32(row["PassiveWisdom"]), // //Proficiencies = row["Proficiencies"] as String, // //AlliesAndOrganizations = row["AlliesAndOrganizations"] as String, // Age = Convert.ToInt32(row["Age"]), // Height = row["Height"] as String, // Weight = row["Weight"] as String, // Eyes = row["Eyes"] as String, // Skin = row["Skin"] as String, // Hair = row["Hair"] as String, // SpellcastingClass = row["SpellcastingClass"] as String, // SpellcastingAbility = row["SpellcastingAbility"].ToNullableInt(), // SpellSaveDC = row["SpellSaveDC"].ToNullableInt(), // SpellAttackBonus = row["SpellAttackBonus"].ToNullableInt(), // //Spells = row["Spells"] as String, // SpellSlots = CreateSpellSlotsObject(row), // AppearanceKey = (Guid)row["AppearanceKey"], // Backstory = row["Backstory"] as String //}; }