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); } }
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); } }
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); } }
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); } }
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(); }
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; }