Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 private static Ability GetAbilityByName(Character5e character, string abulity)
 {
     return(character.Abilities.FirstOrDefault(x => x.Name == abulity));
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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
            //};
        }