private static ScenarioFile[] Block(ScenarioFile[] ScenarioStrings) { List <ScenarioFile> ScenarioBlocks = new List <ScenarioFile>(); for (int i = 0; i < ScenarioStrings.Length; i++) { try { if (ScenarioStrings[i].Pointer + 4 == ScenarioStrings[i + 1].Pointer) { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 8; s.Name = ScenarioStrings[i].Text; s.Text = ScenarioStrings[i + 1].Text; ScenarioBlocks.Add(s); i++; } else { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 12; s.Name = ""; s.Text = ScenarioStrings[i].Text; ScenarioBlocks.Add(s); } } catch (IndexOutOfRangeException) { ScenarioFile s = new ScenarioFile(); s.Pointer = ScenarioStrings[i].Pointer - 12; s.Name = ""; s.Text = ScenarioStrings[i].Text; ScenarioBlocks.Add(s); } } return(ScenarioBlocks.ToArray()); }
public static ScenarioFile[] GetSQL(String ConnectionString, int FileNumber, String GracesJapaneseConnectionString, bool DumpIdentifyerStrings, bool ForceJapaneseDump, bool DumpDebug, bool SortByPointerRef) { List <ScenarioFile> ScenarioFiles = new List <ScenarioFile>(); SQLiteConnection Connection = new SQLiteConnection(ConnectionString); Connection.Open(); using (SQLiteTransaction Transaction = Connection.BeginTransaction()) using (SQLiteCommand Command = new SQLiteCommand(Connection)) { if (FileNumber == -1) { Command.CommandText = "SELECT english, PointerRef, StringID"; if (DumpIdentifyerStrings) { Command.CommandText += ", IdentifyString"; } Command.CommandText += " FROM Text" + (DumpDebug ? "" : " WHERE status != -1") + " ORDER BY " + (SortByPointerRef ? "PointerRef" : "ID"); } else { // for VScenarioMissing Command.CommandText = "SELECT english, PointerRef, StringID FROM Text WHERE" + (DumpDebug ? "" : " status != -1 AND") + " OriginalFile = " + FileNumber.ToString() + " ORDER BY " + (SortByPointerRef ? "PointerRef" : "ID"); } SQLiteDataReader r = Command.ExecuteReader(); while (r.Read()) { String SQLText; try { SQLText = r.GetString(0).Replace("''", "'"); } catch (System.InvalidCastException) { SQLText = null; } int PointerRef = r.GetInt32(1); int StringID = r.GetInt32(2); String IdentifyString = null; if (DumpIdentifyerStrings) { try { IdentifyString = r.GetString(3); } catch (System.InvalidCastException) { IdentifyString = null; } } ScenarioFile sc = new ScenarioFile(); if (ForceJapaneseDump || String.IsNullOrEmpty(SQLText)) { sc.Text = GetJapanese(GracesJapaneseConnectionString, StringID); } else { sc.Text = SQLText; } sc.Pointer = PointerRef; sc.IdentifyerString = IdentifyString; ScenarioFiles.Add(sc); } Transaction.Rollback(); } return(ScenarioFiles.ToArray()); }