Example #1
0
        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());
        }
Example #2
0
        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());
        }