Пример #1
0
        private static ScenarioString[] FindAllStrings(int[] PointerList, byte[] Scenario, int TextStart)
        {
            List <ScenarioString> list = new List <ScenarioString>();

            for (int i = 0; i < PointerList.Length; i++)
            {
                int num  = PointerList[i];
                int num2 = BitConverter.ToInt32(new byte[]
                {
                    Scenario[num + 3],
                    Scenario[num + 2],
                    Scenario[num + 1],
                    Scenario[num]
                }, 0);
                int num3 = num2 + TextStart + 8;
                int num4 = num3;
                int num5 = BitConverter.ToInt32(new byte[]
                {
                    Scenario[num4 + 3],
                    Scenario[num4 + 2],
                    Scenario[num4 + 1],
                    Scenario[num4]
                }, 0);
                num4 += 4;
                int num6 = BitConverter.ToInt32(new byte[]
                {
                    Scenario[num4 + 3],
                    Scenario[num4 + 2],
                    Scenario[num4 + 1],
                    Scenario[num4]
                }, 0);
                num4 += 4;
                int num7 = BitConverter.ToInt32(new byte[]
                {
                    Scenario[num4 + 3],
                    Scenario[num4 + 2],
                    Scenario[num4 + 1],
                    Scenario[num4]
                }, 0);
                num4 += 4;
                int num8 = BitConverter.ToInt32(new byte[]
                {
                    Scenario[num4 + 3],
                    Scenario[num4 + 2],
                    Scenario[num4 + 1],
                    Scenario[num4]
                }, 0);
                ScenarioString item  = new ScenarioString(num3 - TextStart, Util.GetTextUTF8(Scenario, num5 + TextStart), Util.GetTextUTF8(Scenario, num7 + TextStart));
                ScenarioString item2 = new ScenarioString(num3 - TextStart + 4, Util.GetTextUTF8(Scenario, num6 + TextStart), Util.GetTextUTF8(Scenario, num8 + TextStart));
                list.Add(item);
                list.Add(item2);
            }
            return(list.ToArray());
        }
Пример #2
0
        private static ScenarioString[] FindAllStrings(byte[] File, int StartLocation, int PointerDifference)
        {
            List <ScenarioString> AllStrings = new List <ScenarioString>();

            int Pointer = StartLocation;

            while (true)
            {
                try
                {
                    int Pointer1 = BitConverter.ToInt32(new byte[] {
                        File[Pointer + 3], File[Pointer + 2], File[Pointer + 1], File[Pointer]
                    }, 0);
                    int Pointer2 = BitConverter.ToInt32(new byte[] {
                        File[Pointer + 7], File[Pointer + 6], File[Pointer + 5], File[Pointer + 4]
                    }, 0);
                    int Pointer3 = BitConverter.ToInt32(new byte[] {
                        File[Pointer + 11], File[Pointer + 10], File[Pointer + 9], File[Pointer + 8]
                    }, 0);
                    int Pointer4 = BitConverter.ToInt32(new byte[] {
                        File[Pointer + 15], File[Pointer + 14], File[Pointer + 13], File[Pointer + 12]
                    }, 0);

                    if (Pointer1 == 0 || Pointer2 == 0 || Pointer3 == 0 || Pointer4 == 0 ||
                        (Pointer1 + PointerDifference) > File.Length ||
                        (Pointer2 + PointerDifference) > File.Length ||
                        (Pointer3 + PointerDifference) > File.Length ||
                        (Pointer4 + PointerDifference) > File.Length
                        )
                    {
                        break;
                    }

                    ScenarioString Name = new ScenarioString(Pointer, GetText(File, Pointer1 + PointerDifference), GetText(File, Pointer3 + PointerDifference));
                    ScenarioString Text = new ScenarioString(Pointer + 4, GetText(File, Pointer2 + PointerDifference), GetText(File, Pointer4 + PointerDifference));

                    AllStrings.Add(Name);
                    AllStrings.Add(Text);

                    Pointer += 0x18;
                }
                catch (Exception)
                {
                    break;
                }
            }


            return(AllStrings.ToArray());
        }
Пример #3
0
        private static ScenarioString[] RemoveDupesAndEmpty(ScenarioString[] AllStrings)
        {
            List <int>            list  = new List <int>(AllStrings.Length);
            List <ScenarioString> list2 = new List <ScenarioString>(AllStrings.Length);

            for (int i = 0; i < AllStrings.Length; i++)
            {
                ScenarioString scenarioString = AllStrings[i];
                if (!string.IsNullOrEmpty(scenarioString.Jpn) || !string.IsNullOrEmpty(scenarioString.Eng))
                {
                    if (!list.Contains(scenarioString.Pointer))
                    {
                        list.Add(scenarioString.Pointer);
                        list2.Add(scenarioString);
                    }
                }
            }
            return(list2.ToArray());
        }
Пример #4
0
        private static ScenarioString[] FindAllStrings(int[] PointerList, byte[] Scenario, int TextStart)
        {
            List <ScenarioString> AllStrings = new List <ScenarioString>();

            foreach (int InternalPointer in PointerList)
            {
                int BytePointer = BitConverter.ToInt32(new byte[] {
                    Scenario[InternalPointer + 3], Scenario[InternalPointer + 2], Scenario[InternalPointer + 1], Scenario[InternalPointer]
                }, 0);
                int RealPointer = BytePointer + TextStart + 8;
                int Pointer     = RealPointer;

                int Pointer1 = BitConverter.ToInt32(new byte[] {
                    Scenario[Pointer + 3], Scenario[Pointer + 2], Scenario[Pointer + 1], Scenario[Pointer]
                }, 0);
                Pointer += 4;
                int Pointer2 = BitConverter.ToInt32(new byte[] {
                    Scenario[Pointer + 3], Scenario[Pointer + 2], Scenario[Pointer + 1], Scenario[Pointer]
                }, 0);
                Pointer += 4;
                int Pointer3 = BitConverter.ToInt32(new byte[] {
                    Scenario[Pointer + 3], Scenario[Pointer + 2], Scenario[Pointer + 1], Scenario[Pointer]
                }, 0);
                Pointer += 4;
                int Pointer4 = BitConverter.ToInt32(new byte[] {
                    Scenario[Pointer + 3], Scenario[Pointer + 2], Scenario[Pointer + 1], Scenario[Pointer]
                }, 0);

                ScenarioString Name = new ScenarioString
                                          (RealPointer - TextStart, Util.GetText(Pointer1 + TextStart, Scenario), Util.GetText(Pointer3 + TextStart, Scenario));
                ScenarioString Text = new ScenarioString
                                          ((RealPointer - TextStart) + 4, Util.GetText(Pointer2 + TextStart, Scenario), Util.GetText(Pointer4 + TextStart, Scenario));

                AllStrings.Add(Name);
                AllStrings.Add(Text);
            }

            return(AllStrings.ToArray());
        }
Пример #5
0
        private static ScenarioString[] FindNewStrings(ScenarioString[] AllStrings, string ConnectionString)
        {
            List <ScenarioString> list             = new List <ScenarioString>();
            SQLiteConnection      sQLiteConnection = new SQLiteConnection(ConnectionString);

            sQLiteConnection.Open();
            SQLiteTransaction sQLiteTransaction = sQLiteConnection.BeginTransaction();

            for (int i = 0; i < AllStrings.Length; i++)
            {
                ScenarioString scenarioString = AllStrings[i];
                SQLiteCommand  sQLiteCommand  = new SQLiteCommand(sQLiteConnection);
                sQLiteCommand.CommandText = "SELECT english, PointerRef FROM Text WHERE status != -1 AND PointerRef = ?";
                SQLiteParameter sQLiteParameter = new SQLiteParameter();
                sQLiteCommand.Parameters.Add(sQLiteParameter);
                sQLiteParameter.Value = scenarioString.Pointer;
                SQLiteDataReader sQLiteDataReader = sQLiteCommand.ExecuteReader();
                if (!sQLiteDataReader.Read())
                {
                    list.Add(scenarioString);
                }
            }
            return(list.ToArray());
        }
Пример #6
0
        public static bool InsertSQL(ScenarioString[] NewStrings, string ConnectionString, string ConnectionStringGracesJapanese)
        {
            SQLiteConnection sQLiteConnection  = new SQLiteConnection(ConnectionString);
            SQLiteConnection sQLiteConnection2 = new SQLiteConnection(ConnectionStringGracesJapanese);

            sQLiteConnection.Open();
            sQLiteConnection2.Open();
            using (SQLiteTransaction sQLiteTransaction = sQLiteConnection.BeginTransaction())
            {
                using (SQLiteTransaction sQLiteTransaction2 = sQLiteConnection2.BeginTransaction())
                {
                    using (SQLiteCommand sQLiteCommand = new SQLiteCommand(sQLiteConnection))
                    {
                        using (SQLiteCommand sQLiteCommand2 = new SQLiteCommand(sQLiteConnection2))
                        {
                            using (SQLiteCommand sQLiteCommand3 = new SQLiteCommand(sQLiteConnection2))
                            {
                                using (SQLiteCommand sQLiteCommand4 = new SQLiteCommand(sQLiteConnection2))
                                {
                                    SQLiteParameter sQLiteParameter  = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter2 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter3 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter4 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter5 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter6 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter7 = new SQLiteParameter();
                                    SQLiteParameter sQLiteParameter8 = new SQLiteParameter();
                                    sQLiteCommand2.CommandText = "INSERT INTO Japanese (ID, string, debug) VALUES (?, ?, 0)";
                                    sQLiteCommand2.Parameters.Add(sQLiteParameter);
                                    sQLiteCommand2.Parameters.Add(sQLiteParameter2);
                                    sQLiteCommand.CommandText = "INSERT INTO Text (ID, StringID, english, comment, updated, status, PointerRef) VALUES (?, ?, ?, null, 0, ?, ?)";
                                    sQLiteCommand.Parameters.Add(sQLiteParameter3);
                                    sQLiteCommand.Parameters.Add(sQLiteParameter4);
                                    sQLiteCommand.Parameters.Add(sQLiteParameter5);
                                    sQLiteCommand.Parameters.Add(sQLiteParameter8);
                                    sQLiteCommand.Parameters.Add(sQLiteParameter6);
                                    sQLiteCommand3.CommandText = "SELECT MAX(ID)+1 FROM Japanese";
                                    sQLiteCommand4.CommandText = "SELECT ID FROM Japanese WHERE string = ?";
                                    sQLiteCommand4.Parameters.Add(sQLiteParameter7);
                                    object obj  = sQLiteCommand3.ExecuteScalar();
                                    int    num  = int.Parse(obj.ToString());
                                    int    num2 = 1;
                                    for (int i = 0; i < NewStrings.Length; i++)
                                    {
                                        ScenarioString scenarioString = NewStrings[i];
                                        sQLiteParameter7.Value = scenarioString.Jpn;
                                        object obj2 = sQLiteCommand4.ExecuteScalar();
                                        int    num3;
                                        if (obj2 != null)
                                        {
                                            num3 = (int)obj2;
                                        }
                                        else
                                        {
                                            num3 = num++;
                                            sQLiteParameter.Value  = num3;
                                            sQLiteParameter2.Value = scenarioString.Jpn;
                                            sQLiteCommand2.ExecuteNonQuery();
                                        }
                                        sQLiteParameter3.Value = num2;
                                        sQLiteParameter4.Value = num3;
                                        sQLiteParameter5.Value = scenarioString.Eng;
                                        if (scenarioString.Eng == scenarioString.Jpn)
                                        {
                                            sQLiteParameter8.Value = 1;
                                        }
                                        else
                                        {
                                            sQLiteParameter8.Value = 0;
                                        }
                                        sQLiteParameter6.Value = scenarioString.Pointer;
                                        sQLiteCommand.ExecuteNonQuery();
                                        num2++;
                                    }
                                    sQLiteTransaction.Commit();
                                    sQLiteTransaction2.Commit();
                                }
                            }
                        }
                    }
                }
            }
            sQLiteConnection2.Close();
            sQLiteConnection.Close();
            return(true);
        }