예제 #1
0
        public string GenerateHtmlNpc()
        {
            Console.WriteLine( "Generating Website: NPCs" );
            var npcListPS3 = new TOVNPC.TOVNPCL( @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\NPC.DAT.dec.ext\0000.dec" );
            Dictionary<string, TOVNPC.TOVNPCT> npcDefs = new Dictionary<string, TOVNPC.TOVNPCT>();
            foreach ( var f in npcListPS3.NpcFileList ) {
                string filename = @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\" + f.Filename + @".dec.ext\0001.dec";
                if ( File.Exists( filename ) ) {
                    var d = new TOVNPC.TOVNPCT( filename );
                    npcDefs.Add( f.Map, d );
                }
            }

            StringBuilder sb = new StringBuilder();
            AddHeader( sb, "NPC Dialogue" );
            sb.AppendLine( "<body>" );
            //AddMenuBar( sb );
            sb.Append( "<table class=\"npcdiff\">" );
            foreach ( var kvp in npcDefs ) {
                for ( int i = 0; i < kvp.Value.NpcDefList.Count; ++i ) {
                    var d = kvp.Value.NpcDefList[i];
                    sb.Append( "<tr>" );

                    sb.Append( "<td>" );
                    sb.Append( kvp.Key );
                    sb.Append( "<br>" );
                    sb.Append( d.StringDicId );
                    //sb.Append( "<br>" );
                    //sb.Append( d.RefString1 );
                    //sb.Append( "<br>" );
                    //sb.Append( d.RefString2 );
                    sb.Append( "</td>" );

                    sb.Append( "<td>" );
                    sb.Append( InGameIdDict[d.StringDicId].StringJpnHtml( Version ) );
                    sb.Append( "</td>" );

                    sb.Append( "<td>" );
                    sb.Append( InGameIdDict[d.StringDicId].StringEngHtml( Version ) );
                    sb.Append( "</td>" );

                    sb.Append( "</tr>" );

                    sb.Append( "<tr><td colspan=\"3\"><hr></td></tr>" );
                }
            }
            sb.Append( "</table>" );
            sb.Append( "</body></html>" );

            return sb.ToString();
        }
예제 #2
0
        public bool ImportSQL(bool placeEnglishInJpnEntry = true, bool updateDatabaseWithInGameStringId = false, bool generateGracesEnglish = false)
        {
            String[] DBNames =
            {
                "VGeneral",                "VMenu",             "VArtes",          "VSkills",
                "VStrategy",               "VLocation Names",   "VEnemies",
                "VGroups",                 "VItem General",     "VItem Offensive",
                "VItem Defensive",         "VItem Accessories", "VItem Food",
                "VItem Synth Ingredients", "VItem Special",
                "VItem Attachments",       "VDLC",              "VShops",          "VRecipes",
                "VEtc",                    "VLocations",        "VGrade Bonus",    "VGrade Shop",
                "VTitles",                 "VLogs",             "VMini Game Text", "VSkit Titles",
                "VMisc",                   "VMisc2",            "VTutorial",       "VAilments",   "VSigns",
                "VMap Locations",          "VCredits",          "VOther Text",
                "VEvent Jumps",            "VSkit Text"
            };

            char[]            bx06 = { '', '(' };
            String            x06  = new String(bx06);
            SQLiteConnection  connectionGracesEnglish  = null;
            SQLiteTransaction transactionGracesEnglish = null;

            if (generateGracesEnglish)
            {
                connectionGracesEnglish = new SQLiteConnection("Data Source=db/GracesEnglish");
                connectionGracesEnglish.Open();
                transactionGracesEnglish = connectionGracesEnglish.BeginTransaction();
            }

            // stuff to import the NPC text area names into GN
            Dictionary <uint, string> npcInGameIdMapDict = null;

            if (updateDatabaseWithInGameStringId)
            {
                string npcListFilename = @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\NPC.DAT.dec.ext\0000.dec";
                if (System.IO.File.Exists(npcListFilename))
                {
                    var npcListPS3 = new TOVNPC.TOVNPCL(npcListFilename, Util.Endianness.BigEndian, Util.Bitness.B32);
                    Dictionary <string, TOVNPC.TOVNPCT> npcDefs = new Dictionary <string, TOVNPC.TOVNPCT>();
                    foreach (var f in npcListPS3.NpcFileList)
                    {
                        string filename = @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\" + f.Filename + @".dec.ext\0001.dec";
                        if (System.IO.File.Exists(filename))
                        {
                            var d = new TOVNPC.TOVNPCT(filename, Util.Endianness.BigEndian, Util.Bitness.B32);
                            npcDefs.Add(f.Map, d);
                        }
                    }
                    npcInGameIdMapDict = new Dictionary <uint, string>();
                    foreach (var kvp in npcDefs)
                    {
                        foreach (var npcText in kvp.Value.NpcDefList)
                        {
                            npcInGameIdMapDict.Add(npcText.StringDicId, kvp.Key);
                        }
                    }
                }
            }

            foreach (String CurrentDBName in DBNames)
            {
                Console.WriteLine("   Importing " + CurrentDBName + "...");
                SQLiteConnection Connection = new SQLiteConnection("Data Source=db/" + CurrentDBName);
                Connection.Open();
                SQLiteCommand    Command = new SQLiteCommand("SELECT english, PointerRef, StringID FROM Text", Connection);
                SQLiteDataReader Reader  = Command.ExecuteReader();
                while (Reader.Read())
                {
                    String English    = Reader.GetString(0);
                    int    PointerRef = Reader.GetInt32(1);

                    if (updateDatabaseWithInGameStringId)
                    {
                        UpdateDatabaseWithInGameStringId(Connection, PointerRef, Entries[PointerRef + 1].inGameStringId, npcInGameIdMapDict);
                    }
                    if (generateGracesEnglish)
                    {
                        string englishOriginal  = Entries[PointerRef + 1].StringEng;
                        int    gracesJapaneseId = Reader.GetInt32(2);
                        UpdateGracesJapanese(transactionGracesEnglish, gracesJapaneseId, englishOriginal, 0);
                    }

                    if (Entries[PointerRef + 1].StringJpn != null &&
                        !String.IsNullOrEmpty(English)
                        )
                    {
                        English = English.Replace("''", "'");

                        /*
                         * if (English.Contains("<Unk6:"))
                         * {
                         *      English = English.Replace("<Unk6: ", x06);
                         *      English = English.Replace(">", ")");
                         * }
                         */
                        if (placeEnglishInJpnEntry)
                        {
                            Entries[PointerRef + 1].StringJpn = English;
                        }
                        else
                        {
                            Entries[PointerRef + 1].StringEng = English;
                        }
                    }
                }
                Reader.Close();
                Reader.Dispose();
                Connection.Close();
                Connection.Dispose();
            }

            if (generateGracesEnglish)
            {
                transactionGracesEnglish.Commit();
                connectionGracesEnglish.Close();
            }

            return(true);
        }
예제 #3
0
        public bool ImportSQL( bool placeEnglishInJpnEntry = true, bool updateDatabaseWithInGameStringId = false, bool generateGracesEnglish = false )
        {
            String[] DBNames = {
                                   "VGeneral", "VMenu", "VArtes", "VSkills",
                                   "VStrategy", "VLocation Names", "VEnemies",
                                   "VGroups", "VItem General", "VItem Offensive",
                                   "VItem Defensive", "VItem Accessories", "VItem Food",
                                   "VItem Synth Ingredients", "VItem Special",
                                   "VItem Attachments", "VDLC", "VShops", "VRecipes",
                                   "VEtc", "VLocations", "VGrade Bonus", "VGrade Shop",
                                   "VTitles", "VLogs", "VMini Game Text", "VSkit Titles",
                                   "VMisc", "VMisc2", "VTutorial", "VAilments", "VSigns",
                                   "VMap Locations", "VCredits", "VOther Text",
                                   "VEvent Jumps", "VSkit Text"
                               };

            char[] bx06 = { '', '(' };
            String x06 = new String( bx06 );
            SQLiteConnection connectionGracesEnglish = null;
            SQLiteTransaction transactionGracesEnglish = null;
            if ( generateGracesEnglish ) {
                connectionGracesEnglish = new SQLiteConnection( "Data Source=db/GracesEnglish" );
                connectionGracesEnglish.Open();
                transactionGracesEnglish = connectionGracesEnglish.BeginTransaction();
            }

            // stuff to import the NPC text area names into GN
            Dictionary<uint, string> npcInGameIdMapDict = null;
            if ( updateDatabaseWithInGameStringId ) {
                string npcListFilename = @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\NPC.DAT.dec.ext\0000.dec";
                if ( System.IO.File.Exists( npcListFilename ) ) {
                    var npcListPS3 = new TOVNPC.TOVNPCL( npcListFilename );
                    Dictionary<string, TOVNPC.TOVNPCT> npcDefs = new Dictionary<string, TOVNPC.TOVNPCT>();
                    foreach ( var f in npcListPS3.NpcFileList ) {
                        string filename = @"d:\Dropbox\ToV\PS3\orig\npc.svo.ext\" + f.Filename + @".dec.ext\0001.dec";
                        if ( System.IO.File.Exists( filename ) ) {
                            var d = new TOVNPC.TOVNPCT( filename );
                            npcDefs.Add( f.Map, d );
                        }
                    }
                    npcInGameIdMapDict = new Dictionary<uint, string>();
                    foreach ( var kvp in npcDefs ) {
                        foreach ( var npcText in kvp.Value.NpcDefList ) {
                            npcInGameIdMapDict.Add( npcText.StringDicId, kvp.Key );
                        }
                    }
                }
            }

            foreach ( String CurrentDBName in DBNames ) {
                Console.WriteLine( "   Importing " + CurrentDBName + "..." );
                SQLiteConnection Connection = new SQLiteConnection( "Data Source=db/" + CurrentDBName );
                Connection.Open();
                SQLiteCommand Command = new SQLiteCommand( "SELECT english, PointerRef, StringID FROM Text", Connection );
                SQLiteDataReader Reader = Command.ExecuteReader();
                while ( Reader.Read() ) {
                    String English = Reader.GetString( 0 );
                    int PointerRef = Reader.GetInt32( 1 );

                    if ( updateDatabaseWithInGameStringId ) {
                        UpdateDatabaseWithInGameStringId( Connection, PointerRef, Entries[PointerRef + 1].inGameStringId, npcInGameIdMapDict );
                    }
                    if ( generateGracesEnglish ) {
                        string englishOriginal = Entries[PointerRef + 1].StringEng;
                        int gracesJapaneseId = Reader.GetInt32( 2 );
                        UpdateGracesJapanese( transactionGracesEnglish, gracesJapaneseId, englishOriginal, 0 );
                    }

                    if ( Entries[PointerRef + 1].StringJpn != null
                         && !String.IsNullOrEmpty( English )
                       ) {
                        English = English.Replace( "''", "'" );
                        /*
                        if (English.Contains("<Unk6:"))
                        {
                            English = English.Replace("<Unk6: ", x06);
                            English = English.Replace(">", ")");
                        }
                        */
                        if ( placeEnglishInJpnEntry ) {
                            Entries[PointerRef + 1].StringJpn = English;
                        } else {
                            Entries[PointerRef + 1].StringEng = English;
                        }
                    }
                }
                Reader.Close();
                Reader.Dispose();
                Connection.Close();
                Connection.Dispose();
            }

            if ( generateGracesEnglish ) {
                transactionGracesEnglish.Commit();
                connectionGracesEnglish.Close();
            }

            return true;
        }