Пример #1
0
        public async Task <Ability> LoadAbilityByIdAsync(int id, int versionGroup, int language, CancellationToken token)
        {
            try
            {
                string query = Queries.AbilityQuery(id, versionGroup, language);
                IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false);

                DbAbility ability = abilities.Single();

                var result = new Ability
                {
                    Id         = ability.Id,
                    IngameText = ability.FlavorText,
                    Name       = ability.Name
                };
                result.ShortDescription = await ProzessPlaceholderText(ability.ShortEffect, language, token);

                result.Description = await ProzessPlaceholderText(ability.Effect, language, token);

                result.VersionChangelog = await ProzessPlaceholderText(ability.EffectChange, language, token);

                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #2
0
        async Task <string> LoadTypeNameByIdentifierAsync(string identifier, int language, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT ty.id, tyn.name
                    FROM types ty
                    LEFT JOIN (SELECT e.type_id AS id, COALESCE(o.name, e.name) AS name
                        FROM type_names e
                        LEFT OUTER JOIN type_names o ON e.type_id = o.type_id AND o.local_language_id = {1}
                        WHERE e.local_language_id = 9
                        GROUP BY e.type_id)
                    AS tyn ON ty.id = tyn.id
                    WHERE ty.identifier = '{0}'
                ", identifier, language);
                IEnumerable <DbAbility> types = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false);

                DbAbility type = types.Single();
                return(type.Name);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #3
0
        async Task <string> LoadAbilityNameByIdentifierAsync(string identifier, int language, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT ab.id, abn.name
                    FROM abilities ab
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name
                        FROM ability_names e
                        LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id AND o.local_language_id = {1}
                        WHERE e.local_language_id = 9
                        GROUP BY e.ability_id)
                    AS abn ON ab.id = abn.id
                    WHERE ab.identifier = '{0}'
                ", identifier, language);
                IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false);

                DbAbility ability = abilities.Single();
                return(ability.Name);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #4
0
        public async Task <Ability> LoadAbilityByIdAsync(int id, GameVersion version, int language, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT a.id, an.name, aft.flavor_text, ap.short_effect, IFNULL(acp.effect, ap.effect) AS effect
                    FROM abilities AS a
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name FROM ability_names e
                               LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id and o.local_language_id = {0}
                               WHERE e.local_language_id = 9
                               GROUP BY e.ability_id)
                    AS an ON a.id = an.id
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text
                               FROM ability_flavor_text e
                               LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id and o.language_id = {0}
                               WHERE e.language_id = 9
                               GROUP BY e.ability_id)
                    AS aft ON a.id = aft.id
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.short_effect, e.short_effect) AS short_effect, COALESCE(o.effect, e.effect) AS effect
                               FROM ability_prose e
                               LEFT OUTER JOIN  ability_prose o ON e.ability_id = o.ability_id and o.local_language_id = {0}
                               WHERE e.local_language_id = 9
                               GROUP BY e.ability_id)
                    AS ap ON a.id = ap.id
                    LEFT JOIN ability_changelog ac ON a.id = ac.ability_id AND ac.changed_in_version_group_id <= {1}
                    LEFT JOIN (SELECT e.ability_changelog_id AS id, COALESCE(o.effect, e.effect) AS effect
                               FROM ability_changelog_prose e
                               LEFT OUTER JOIN ability_changelog_prose o ON e.ability_changelog_id = o.ability_changelog_id and o.local_language_id = {0}
                               WHERE e.local_language_id = 9
                               GROUP BY e.ability_changelog_id)
                    AS acp ON ac.id = acp.id
                    WHERE a.id = {2} AND a.is_main_series = 1 AND a.generation_id <= {3}
                ", language, version.VersionGroup, id, version.Generation);
                IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false);

                DbAbility ability = abilities.FirstOrDefault();
                if (ability == null)
                {
                    return(null);
                }
                return(new Ability
                {
                    Description = ability.ShortEffect,
                    Effect = ability.Effect,
                    FlavorText = ability.FlavorText,
                    Id = ability.Id,
                    Name = ability.Name
                });
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #5
0
        public async Task <Ability> LoadAbilityAsync(int id, GameVersion version, int displayLanguage, CancellationToken token)
        {
            try
            {
                string query = "SELECT a.id, an.name, ad.short_effect, ad.effect, aft.flavor_text FROM abilities AS a\n" +
                               "LEFT JOIN\n(SELECT def.ability_id AS id, IFNULL(curr.name, def.name) AS name FROM ability_names def\n" +
                               "LEFT JOIN ability_names curr ON def.ability_id = curr.ability_id AND def.local_language_id = 9 AND curr.local_language_id = ?\n" +
                               "GROUP BY def.ability_id)\nAS an ON a.id = an.id\n" +
                               "LEFT JOIN\n(SELECT def.ability_id AS id, IFNULL(curr.short_effect, def.short_effect) AS short_effect, IFNULL(curr.effect, def.effect) AS effect FROM ability_prose def\n" +
                               "LEFT JOIN ability_prose curr ON def.ability_id = curr.ability_id AND def.local_language_id = 9 AND curr.local_language_id = ?\n" +
                               "GROUP BY def.ability_id)\nAS ad ON a.id = ad.id\n" +
                               "LEFT JOIN\n(SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text, e.version_group_id FROM ability_flavor_text e\n" +
                               "LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id and o.language_id = ?\n" +
                               "WHERE e.language_id = 9 AND e.version_group_id = ?\n" +
                               "GROUP BY e.ability_id)\nAS aft ON a.id = aft.id\n" +
                               "WHERE aft.version_group_id = ? AND a.id = ?";
                IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[]
                {
                    displayLanguage,
                    displayLanguage,
                    displayLanguage,
                    version.VersionGroup,
                    version.VersionGroup,
                    id
                });

                DbAbility dbAbility = abilities.FirstOrDefault();
                if (dbAbility == null)
                {
                    return(null);
                }
                return(new Ability
                {
                    Description = dbAbility.Effect,
                    Effect = dbAbility.ShortEffect,
                    FlavorText = dbAbility.FlavorText,
                    Id = dbAbility.Id,
                    Name = dbAbility.Name
                });
            }
            catch (Exception)
            {
                return(null);
            }
        }
Пример #6
0
        public async Task <Ability> LoadAbilityAsync(int id, int versionGroup, int displayLanguage, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT ab.id, abn.name, abft.flavor_text, abp.short_effect, abp.effect, acp.effect_change
                    FROM abilities AS ab
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.name, e.name) AS name
                        FROM ability_names e
                        LEFT OUTER JOIN ability_names o ON e.ability_id = o.ability_id AND o.local_language_id = {2}
                        WHERE e.local_language_id = 9
                        GROUP BY e.ability_id)
                    AS abn ON ab.id = abn.id
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.flavor_text, e.flavor_text) AS flavor_text, e.version_group_id
                        FROM ability_flavor_text e
                        LEFT OUTER JOIN ability_flavor_text o ON e.ability_id = o.ability_id AND o.language_id = {2}
                        WHERE e.language_id = 9 AND e.version_group_id = 15
                        GROUP BY e.ability_id)
                    AS abft ON ab.id = abft.id
                    LEFT JOIN (SELECT e.ability_id AS id, COALESCE(o.short_effect, e.short_effect) AS short_effect, COALESCE(o.effect, e.effect) AS effect
                        FROM ability_prose e
                        LEFT OUTER JOIN ability_prose o ON e.ability_id = o.ability_id AND o.local_language_id = {2}
                        WHERE e.local_language_id = 9
                        GROUP BY e.ability_id)
                    AS abp ON ab.id = abp.id
                    LEFT JOIN ability_changelog ac ON ab.id = ac.ability_id AND ac.changed_in_version_group_id <= {1}
                    LEFT JOIN (SELECT e.ability_changelog_id AS id, COALESCE(o.effect, e.effect) AS effect_change
                        FROM ability_changelog_prose e
                        LEFT OUTER JOIN ability_changelog_prose o ON e.ability_changelog_id = o.ability_changelog_id AND o.local_language_id = {2}
                        WHERE e.local_language_id = 9
                        GROUP BY e.ability_changelog_id)
                    AS acp ON ac.id = acp.id
                    WHERE ab.is_main_series AND ab.id = {0}
                    ORDER BY ac.changed_in_version_group_id DESC
                    LIMIT 1
                ", id, versionGroup, displayLanguage);
                IEnumerable <DbAbility> abilities = await _connection.QueryAsync <DbAbility>(token, query, new object[0]).ConfigureAwait(false);

                DbAbility ability = abilities.FirstOrDefault();
                if (ability == null)
                {
                    return(null);
                }

                var ab = new Ability
                {
                    FlavorText = ability.FlavorText,
                    Id         = ability.Id,
                    Name       = ability.Name
                };
                ab.Description = await ProzessAbilityText(ability.ShortEffect, displayLanguage, token);

                ab.Effect = await ProzessAbilityText(ability.Effect, displayLanguage, token);

                ab.EffectChange = await ProzessAbilityText(ability.EffectChange, displayLanguage, token);

                return(ab);
            }
            catch (Exception)
            {
                return(null);
            }
        }