Beispiel #1
0
        async Task <string> LoadObjectNameByIdentifierAsync(string table, string nameTable, string idColumn, string identifier, int language, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT t.id, tn.name
                    FROM {0} t
                    LEFT JOIN (SELECT e.{2} AS id, COALESCE(o.name, e.name) AS name
                        FROM {1} e
                        LEFT OUTER JOIN {1} o ON e.{2} = o.{2} AND o.local_language_id = {3}
                        WHERE e.local_language_id = 9
                        GROUP BY e.{2})
                    AS tn ON t.id = tn.id
                    WHERE t.identifier = '{4}'
                ", table, nameTable, idColumn, language, identifier);
                IEnumerable <DbMove> objects = await _connection.QueryAsync <DbMove>(token, query, new object[0]).ConfigureAwait(false);

                DbMove result = objects.Single();
                return(result.Name);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Beispiel #2
0
        async Task <string> LoadMoveNameByIdentifierAsync(string identifier, int language, CancellationToken token)
        {
            try
            {
                string query = String.Format(@"
                    SELECT mo.id, mon.name
                    FROM moves mo
                    LEFT JOIN (SELECT e.move_id AS id, COALESCE(o.name, e.name) AS name
                        FROM move_names e
                        LEFT OUTER JOIN move_names o ON e.move_id = o.move_id AND o.local_language_id = {1}
                        WHERE e.local_language_id = 9
                        GROUP BY e.move_id)
                    AS mon ON mo.id = mon.id
                    WHERE mo.identifier = '{0}'
                ", identifier, language);
                IEnumerable <DbMove> moves = await _connection.QueryAsync <DbMove>(token, query, new object[0]).ConfigureAwait(false);

                DbMove move = moves.Single();
                return(move.Name);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Beispiel #3
0
        public async Task <Move> LoadMoveAsync(int id, GameVersion version, int displayLanguage, CancellationToken token)
        {
            try
            {
                string query = "SELECT m.id, mn.name, IFNULL(mc.power, m.power) as power, IFNULL(mc.pp, m.pp) AS pp, IFNULL(mc.accuracy, m.accuracy) as accuracy,\n" +
                               " m.priority, m.move_damage_class_id, IFNULL(mc.type_id, m.type_id) AS type_id FROM pokemon_v2_move m\n" +
                               "LEFT JOIN\n(SELECT e.move_id AS id, COALESCE(o.name, e.name) AS name FROM pokemon_v2_movename e\n" +
                               "LEFT OUTER JOIN pokemon_v2_movename o ON e.move_id = o.move_id and o.language_id = ?\n" +
                               "WHERE e.language_id = 9\nGROUP BY e.move_id)\nAS mn ON m.id = mn.id\n" +
                               "LEFT JOIN pokemon_v2_movechange mc ON m.id = mc.move_id AND mc.version_group_id > ?\n" +
                               "WHERE m.id = ? AND m.generation_id <= ?";
                IEnumerable <DbMove> moves = await _connection.QueryAsync <DbMove>(token, query, new object[] { displayLanguage, version.VersionGroup, id, version.Generation });

                DbMove move   = moves.First();
                var    result = new Move
                {
                    Accuracy    = move.Accuracy,
                    Id          = move.Id,
                    Name        = move.Name,
                    Power       = move.Power,
                    PowerPoints = move.PowerPoints,
                    Priority    = move.Priority
                };
                result.Type = await GetTypeAsync(move.Type, version);

                if (version.Generation > 3 || move.MoveDamageClass == 1)
                {
                    result.DamageClass = await GetDamageClassAsync(move.MoveDamageClass);
                }
                else
                {
                    result.DamageClass = await GetDamageClassAsync(result.Type.DamageClassId);
                }

                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Beispiel #4
0
        public async Task <Move> LoadMoveByIdAsync(int id, GameVersion version, int language, CancellationToken token)
        {
            try
            {
                string query = Queries.MoveQuery(id, version.VersionGroup, language);
                IEnumerable <DbMove> moves = await _connection.QueryAsync <DbMove>(token, query, new object[0]).ConfigureAwait(false);

                DbMove move   = moves.Single();
                var    result = new Move
                {
                    Accuracy    = move.Accuracy,
                    Id          = move.Id,
                    IngameText  = move.FlavorText,
                    Name        = move.Name,
                    Power       = move.Power,
                    PowerPoints = move.PowerPoints,
                    Priority    = move.Priority
                };
                result.Description = await ProzessPlaceholderText(move.Effect, language, token);

                result.ShortDescription = await ProzessPlaceholderText(move.ShortEffect, language, token);

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

                result.Type = await GetTypeById(move.TypeId);

                int damageClassId = move.DamageClassId;
                if (version.Generation <= 3)
                {
                    damageClassId = result.Type.DamageClassId;
                }
                result.DamageCategory = await GetDamageClassById(damageClassId);

                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            tableName += "" + dimension;

            string currentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
            currentDir = currentDir.Replace("file:\\", "");

            string connString = "Data Source=" + currentDir + "/key_vault.license;Pooling=True";//;Password=mootoo-meepo-wergweguowh2rg134243terbdssdff";
            SQLiteConnection conn = new SQLiteConnection(connString);
            conn.Open();

            int[] p = new int[dimension * dimension];
            for (int i = 0; i < p.Length; i++) p[i] = i;


            DbMove perfect = new DbMove(p, "XXX", 0, dimension, dimension);

            string createTableSql = "CREATE TABLE IF NOT EXISTS \"" + tableName + "\" (\"pos\" char(100) PRIMARY KEY,\"move\" char(3) NOT NULL, \"num_steps\" INTEGER NOT NULL, \"checked\" INTEGER NOT NULL);";

            ExecuteDbCommand(createTableSql, conn);


            try
            {
                ExecuteDbCommand("INSERT INTO " + tableName + " (pos,move,num_steps,checked) VALUES ('" + perfect.signature + "','" + perfect.move + "','" + perfect.level + "','0');", conn);
                //q.Enqueue(perfect);
            }
            catch (SQLiteException e)
            {

            }

            isRunning = true;
            OutputClass o = new OutputClass();
            new Thread(new ThreadStart(o.output)).Start();


            int clickD = dimension - 1;
            int clickD2 = clickD * clickD;

            count = GetNum(conn);
            while (true)
            {
                DbMove m = GetNext(conn);

                if (m == null) break;

                DbMove[] newMoves = new DbMove[clickD2 * 2];

                for (int k = 0; k < newMoves.Length; k++)
                {
                    if ((k % 2) == 0)
                        newMoves[k] = m.GenMove(k / 2, DbMove.Direction.CLOCKWISE);
                    else
                        newMoves[k] = m.GenMove(k / 2, DbMove.Direction.COUNTER_CLOCKWISE);
                }

                for (int i = 0; i < newMoves.Length; i++)
                {
                    if (newMoves[i] == null) continue;
                    try
                    {
                        ExecuteDbCommand("INSERT INTO " + tableName + " (pos,move,num_steps,checked) VALUES ('" + newMoves[i].signature + "','" + newMoves[i].move + "','" + newMoves[i].level + "','0');", conn);

                        count++;
                        lastLevel = newMoves[i].level;

                        //if (newMoves[i].level < 25) q.Enqueue(newMoves[i]);
                    }
                    catch (SQLiteException e)
                    {

                    }
                }

                ExecuteDbCommand("UPDATE " + tableName + " SET checked='1' WHERE pos='" + m.signature + "'", conn);

            }

            isRunning = false;

            Console.WriteLine("DONE");
            Console.ReadLine();
        }
Beispiel #6
0
        private static DbMove GetNext(SQLiteConnection conn)
        {
            DbCommand cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT * FROM " + tableName + " WHERE checked='0' ORDER BY num_steps ASC LIMIT 1";

            DbDataReader reader = cmd.ExecuteReader();

            DbMove m = null;
            if (reader.Read())
            {
                string pos = (string)reader["pos"];

                string[] tokens = pos.Split(',');

                int[] p = new int[dimension*dimension];
                int emptyPosition = -1;
                for (int i = 0; i < p.Length; i++)
                {
                    p[i] = int.Parse(tokens[i]);

                    if (p[i] == (p.Length - 1)) emptyPosition = i;
                }

                m = new DbMove(p, (string)(reader["move"]), (int)((long)(reader["num_steps"])), dimension, dimension);
            }

            reader.Dispose();
            cmd.Dispose();

            return m;
        }