Ejemplo n.º 1
0
        static void ExtractGameTablesFiles()
        {
            Console.WriteLine("Extracting game tables...\n");

            string path = $"{BaseDirectory}/gt";

            CreateDirectory(path);

            uint count = 0;

            foreach (var fileName in FileList.GameTables)
            {
                var dbcFile = CascHandler.OpenFile(fileName);
                if (dbcFile == null)
                {
                    Console.WriteLine($"Unable to open file {fileName} in the archive\n");
                    continue;
                }

                string file = $"{path}/{fileName.Replace("GameTables\\", "")}";
                if (!File.Exists(file))
                {
                    FileWriter.WriteFile(dbcFile, file);
                    ++count;
                }
            }

            Console.WriteLine($"Extracted {count} files\n\n");
        }
Ejemplo n.º 2
0
        static void ExtractDbcFiles()
        {
            string path = $"{BaseDirectory}/dbc";

            CreateDirectory(path);

            Console.WriteLine("Extracting db2 files...");
            uint count = 0;

            for (Locale locale = 0; locale < Locale.Total; ++locale)
            {
                if (locale == Locale.None)
                {
                    continue;
                }

                if (!Convert.ToBoolean(installedLocalesMask & SharedConst.WowLocaleToCascLocaleFlags[(int)locale]))
                {
                    continue;
                }

                string currentPath = $"{path}/{locale}";
                CreateDirectory(currentPath);

                CascHandler.Root.SetFlags(SharedConst.WowLocaleToCascLocaleFlags[(int)locale]);
                foreach (var(fileDataId, fileName) in FileList.DBFilesClientList)
                {
                    var dbcStream = CascHandler.OpenFile(fileDataId);
                    if (dbcStream == null)
                    {
                        Console.WriteLine($"Unable to open file {fileName} in the archive for locale {locale}");
                        continue;
                    }

                    // Unused DB2 file, 0 records
                    var reader = new BinaryReader(dbcStream);
                    reader.ReadUInt32();
                    var recordCount = reader.ReadUInt32();
                    if (recordCount == 0)
                    {
                        continue;
                    }

                    reader.BaseStream.Position = 0;
                    dbcStream.Position         = 0;

                    FileWriter.WriteFile(dbcStream, currentPath + $"/{ fileName.Replace(@"\\", "").Replace(@"DBFilesClient\", "")}");
                    count++;
                }
            }

            Console.WriteLine($"Extracted {count} db2 files.");

            CascHandler.Root.SetFlags(firstInstalledLocale);
        }
Ejemplo n.º 3
0
        static void ExtractDbcFiles()
        {
            string path = $"{BaseDirectory}/dbc";

            CreateDirectory(path);

            Console.WriteLine("Extracting db2 files...");
            uint count = 0;

            for (Locale locale = 0; locale < Locale.Total; ++locale)
            {
                if (locale == Locale.None)
                {
                    continue;
                }

                if (!Convert.ToBoolean(installedLocalesMask & SharedConst.WowLocaleToCascLocaleFlags[(int)locale]))
                {
                    continue;
                }

                string currentPath = $"{path}/{locale}";
                CreateDirectory(currentPath);

                CascHandler.Root.SetFlags(SharedConst.WowLocaleToCascLocaleFlags[(int)locale], ContentFlags.None);
                foreach (var fileName in FileList.DBFilesClientList)
                {
                    var dbcStream = CascHandler.OpenFile(fileName);
                    if (dbcStream == null)
                    {
                        Console.WriteLine($"Unable to open file {fileName} in the archive for locale {locale}\n");
                        continue;
                    }

                    FileWriter.WriteFile(dbcStream, currentPath + $"/{ fileName.Replace(@"\\", "").Replace(@"DBFilesClient\", "")}");
                    count++;
                }
            }

            Console.WriteLine($"Extracted {count} db2 files.");

            CascHandler.Root.SetFlags(firstInstalledLocale, ContentFlags.None);
        }
Ejemplo n.º 4
0
        static void ExtractCameraFiles()
        {
            Dictionary <uint, CinematicCameraRecord> storage = DBReader.Read <CinematicCameraRecord>("DBFilesClient\\CinematicCamera.db2");

            if (storage == null)
            {
                Console.WriteLine("Invalid CinematicCamera.db2 file format. Camera extract aborted.\n");
                return;
            }

            Console.WriteLine($"Extracting ({storage.Values.Count} CinematicCameras!)\n");

            string path = $"{BaseDirectory}/cameras";

            CreateDirectory(path);

            // extract M2s
            uint count = 0;

            foreach (var cameraRecord in storage.Values)
            {
                var cameraStream = CascHandler.OpenFile((int)cameraRecord.ModelFileDataID);
                if (cameraStream != null)
                {
                    string file = path + $"/FILE{cameraRecord.ModelFileDataID:X8}.xxx";
                    if (!File.Exists(file))
                    {
                        FileWriter.WriteFile(cameraStream, file);
                        ++count;
                    }
                }
                else
                {
                    Console.WriteLine($"Unable to open file {$"File{cameraRecord.ModelFileDataID:X8}.xxx"} in the archive: \n");
                }
            }

            Console.WriteLine($"Extracted {count} Camera files.");
        }
Ejemplo n.º 5
0
    /// <summary>
    ///  Run this code at launch
    /// </summary>
    void Start()
    {
        cascHandler = CASC.GetComponent <CascHandler>();
        uiManager.Initialize();

        UserPreferences.Load();

        Settings.ApplicationPath = Application.streamingAssetsPath;
        Settings.Load();

        SettingsInit();
        ADT.Initialize(CASC.GetComponent <CascHandler>().cascHandler);

        if (Settings.GetSection("misc").GetString("wowsource") == null ||
            Settings.GetSection("misc").GetString("wowsource") == "")
        {
        }
        else
        {
            CASCConfig config = null;
            if (Settings.GetSection("misc").GetString("wowsource") == "game")
            {
                config = CASCConfig.LoadLocalStorageConfig(Settings.GetSection("path").GetString("selectedpath"), Settings.GetSection("misc").GetString("localproduct"));
            }
            else if (Settings.GetSection("misc").GetString("wowsource") == "online")
            {
                config = CASCConfig.LoadOnlineStorageConfig(Settings.GetSection("misc").GetString("onlineproduct"), "us", true);
            }

            //CASC.GetComponent<CascHandler>().InitCasc(config, firstInstalledLocale);

            new Thread(() => {
                cascHandler.InitCasc(config, firstInstalledLocale);
            }).Start();
        }
    }
Ejemplo n.º 6
0
    public void Initialize()
    {
        Casc = CASC.GetComponent <CascHandler>();
        // Update Toggles //
        if (Settings.GetSection("misc").GetString("wowsource") == "game")
        {
            ToggleGame.isOn = true;
        }
        else if (Settings.GetSection("misc").GetString("wowsource") == "online")
        {
            ToggleOnline.isOn = true;
        }
        else
        {
            ToggleGame.isOn = true;
        }

        WoWPath.onValueChanged.AddListener(delegate { ValueChangeCheck(); });

        // Update WoW Path //
        if (Settings.GetSection("path").GetString("selectedpath") != null)
        {
            WoWPath.text = Settings.GetSection("path").GetString("selectedpath");
        }

        string onlineProduct = Settings.GetSection("misc").GetString("onlineproduct");
        string localProduct  = Settings.GetSection("misc").GetString("localproduct");

        // Update Online Product //
        if (onlineProduct != null || onlineProduct != "" || onlineProduct != string.Empty)
        {
            switch (onlineProduct)
            {
            case "wowt":
                DropdownOnline.value = 0;
                break;

            case "wow":
                DropdownOnline.value = 1;
                break;

            case "wow_classic_beta":
                DropdownOnline.value = 2;
                break;

            case "wow_classic":
                DropdownOnline.value = 3;
                break;

            case "wow_beta":
                DropdownOnline.value = 4;
                break;

            default:
                DropdownOnline.value = 5;
                break;
            }
        }

        // Update Game Product //
        if (localProduct != null || localProduct != "" || localProduct != string.Empty)
        {
            switch (localProduct)
            {
            case "wowt":
                DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wowt")); });
                break;

            case "wow":
                DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow")); });
                break;

            case "wow_classic_beta":
                DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_classic_beta")); });
                break;

            case "wow_classic":
                DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_classic")); });
                break;

            case "wow_beta":
                DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_beta")); });
                break;

            default:
                DropdownProduct.value = 0;
                break;
            }
        }
    }