示例#1
0
        private void ImportWems(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();

            if (ImportPath != null)
            {
                openFile.InitialDirectory = ImportPath;
            }
            openFile.Multiselect = true;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";
            if (openFile.ShowDialog() == true)
            {
                foreach (string fileName in openFile.FileNames)
                {
                    Wem newWem = HelperFunctions.MakeWems(fileName, HelperFunctions.OpenFile(fileName));
                    //if less wems have been inserted than total wems in the bank
                    if (holder.wemIds.Count > holder.wems.Count + 1)
                    {
                        //create the new wem with the wemID corresponding to its position
                        holder.wems.Add(new ReplacingWem(newWem, holder.wemIds[WemGrab.Items.Count + 1]));
                    }
                    else
                    {
                        //otherwise initialize at 0
                        holder.wems.Add(new ReplacingWem(newWem));
                    }
                    //WemGrab.Items.Add(new ReplacingWem(newWem,wemIds));
                }
            }
        }
示例#2
0
        private void Replace_Wem(object sender, RoutedEventArgs e)
        {
            MenuItem       item     = (MenuItem)sender;
            ContextMenu    cm       = (ContextMenu)item.Parent;
            List <string>  tag      = (List <string>)cm.Tag;
            OpenFileDialog openFile = new OpenFileDialog();

            if (ImportPath != null)
            {
                openFile.InitialDirectory = ImportPath;
            }
            openFile.Multiselect = false;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";
            if (openFile.ShowDialog() == true)
            {
                foreach (string fileName in openFile.FileNames)
                {
                    if (tag[0] == "DIDX")
                    {
                        uint newId  = nbnk.DataIndex.wemList[Convert.ToInt32(tag[1])].id;
                        Wem  newWem = new Wem(fileName, newId.ToString(), new BinaryReader(File.Open(fileName, FileMode.Open)));
                        nbnk.DataIndex.wemList[Convert.ToInt32(tag[1])] = newWem;
                    }
                }
            }
            PopulateTreeView(true);
        }
示例#3
0
        private void MassReplace(object sender, RoutedEventArgs e)
        {
            List <uint> wemIds = new List <uint>();

            for (int i = 0; i < nbnk.DataIndex.wemList.Count; i++)
            {
                wemIds.Add(nbnk.DataIndex.wemList[i].id);
            }
            MassReplace mass = new MassReplace(wemIds, ImportPath);

            if (mass.ShowDialog() == true)
            {
                for (int i = 0; i < mass.holder.wems.Count; i++)
                {
                    int index  = nbnk.DataIndex.wemList.FindIndex(x => x.id == mass.holder.wems[i].replacingId);
                    Wem newWem = mass.holder.wems[i].wem;
                    if (index != -1)
                    {
                        newWem.id                     = nbnk.DataIndex.wemList[index].id;
                        newWem.languageEnum           = nbnk.DataIndex.wemList[index].languageEnum;
                        nbnk.DataIndex.wemList[index] = newWem;
                        PopulateTreeView(true);
                    }
                }
            }
        }
示例#4
0
        public static Wem MakeWems(string name, BinaryReader fs)
        {
            Wem newWem = new Wem(name, "0", fs);

            fs.Close();
            return(newWem);
        }
示例#5
0
 public HIRCEditor(HIRC Input, Wem InputWem)
 {
     InitializeComponent();
     Localise();
     Hirc = Input;
     Wem  = InputWem;
     BuildData();
     Show();
     ToolkitSettings.UpdateRichPresence("Using the Wwise BNK editor.");
 }
示例#6
0
        private void Delete()
        {
            Wem SelWem = (Wem)TreeView_Wems.SelectedNode.Tag;

            bnk.WemList.Remove(SelWem);
            TreeView_Wems.Nodes.Remove(TreeView_Wems.SelectedNode);

            Text          = Language.GetString("$BNK_EDITOR_TITLE") + "*";
            bIsFileEdited = true;
        }
示例#7
0
        private void Button_ReplaceWem_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();

            if (BnkFile.DirectoryName != null)
            {
                openFile.InitialDirectory = BnkFile.DirectoryName;
            }

            openFile.Multiselect = true;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                foreach (string fileName in openFile.FileNames)
                {
                    if (bnk != null)
                    {
                        int itemIndex = bnk.WemList.IndexOf((Wem)WemGrid.SelectedObject);
                        Wem selWem    = bnk.WemList[itemIndex];
                        Wem newWem;

                        using (BinaryReader br = new BinaryReader(File.Open(fileName, FileMode.Open)))
                        {
                            newWem = new Wem(fileName, "", br, selWem.Offset);
                        }

                        if (Checkbox_Trim.Checked)
                        {
                            byte[] tempArray = newWem.File;
                            Array.Resize(ref tempArray, selWem.File.Length);
                            newWem.File = tempArray;
                        }

                        newWem.ID           = selWem.ID;
                        newWem.LanguageEnum = selWem.LanguageEnum;

                        if (!(selWem.Name == ("Imported_Wem_" + itemIndex)))
                        {
                            newWem.Name = selWem.Name;
                        }

                        bnk.WemList[itemIndex]          = newWem;
                        TreeView_Wems.SelectedNode.Name = newWem.ID.ToString();
                        TreeView_Wems.SelectedNode.Tag  = newWem;
                        bnk.Wems.Data = new List <DIDXChunk>();

                        Text          = Language.GetString("$BNK_EDITOR_TITLE") + "*";
                        bIsFileEdited = true;
                    }
                }
            }
        }
示例#8
0
        private void LabelChanged(object sender, RoutedEventArgs e)
        {
            if (LabelsChanged == false)
            {
                LabelsChanged = true;
            }
            TextBox textbox = (TextBox)sender;
            Wem     nWem    = (Wem)textbox.DataContext;

            if (!changedIds.Contains(nWem.id))
            {
                changedIds.Add(nWem.id);
            }
        }
示例#9
0
        private void Button_ImportWem_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();

            if (BnkFile.DirectoryName != null)
            {
                openFile.InitialDirectory = BnkFile.DirectoryName;
            }

            openFile.Multiselect = true;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                foreach (string fileName in openFile.FileNames)
                {
                    bool hasConflict = false;
                    Wem  newWem      = null;

                    using (BinaryReader br = new BinaryReader(File.Open(openFile.FileName, FileMode.Open)))
                    {
                        newWem = new Wem(openFile.FileName, openFile.FileName, br, 0);
                    }

                    foreach (Wem wem in bnk.WemList)
                    {
                        if (wem.ID == newWem.ID) //Check if Wem exists
                        {
                            MessageBox.Show(Language.GetString("$WEM_EXIST_SKIP"), "Toolkit");
                            hasConflict = true;
                            break;
                        }
                    }

                    if (hasConflict)
                    {
                        continue;
                    }

                    TreeNode node = new TreeNode(newWem.Name);
                    node.Name = newWem.ID.ToString();
                    node.Tag  = newWem;
                    TreeView_Wems.Nodes.Add(node);
                    bnk.WemList.Add(newWem);

                    Text          = Language.GetString("$BNK_EDITOR_TITLE") + "*";
                    bIsFileEdited = true;
                }
            }
        }
示例#10
0
        private void Button_ReplaceWem_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog openFile = new OpenFileDialog();

            if (PckFile.DirectoryName != null)
            {
                openFile.InitialDirectory = PckFile.DirectoryName;
            }

            openFile.Multiselect = true;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                foreach (string fileName in openFile.FileNames)
                {
                    if (pck != null)
                    {
                        int itemIndex = pck.WemList.IndexOf((Wem)WemGrid.SelectedObject);
                        Wem selWem    = pck.WemList[itemIndex];
                        Wem newWem;

                        using (BinaryReader br = new BinaryReader(File.Open(fileName, FileMode.Open)))
                        {
                            newWem = new Wem(fileName, "", br, selWem.Offset);
                        }

                        newWem.ID           = selWem.ID;
                        newWem.LanguageEnum = selWem.LanguageEnum;

                        if (!(selWem.Name == ("Imported_Wem_" + itemIndex)))
                        {
                            newWem.Name = selWem.Name;
                        }

                        pck.WemList[itemIndex] = newWem;

                        Text          = Language.GetString("$PCK_EDITOR_TITLE") + "*";
                        bIsFileEdited = true;
                    }
                }
            }
        }
示例#11
0
        private void Export(OpenFileDialog exportFile, DialogResult exportIds, Wem wem)
        {
            string fullPath = exportFile.FileName;
            string savePath = Path.GetDirectoryName(fullPath);
            string name;

            if (exportIds == DialogResult.Yes)
            {
                name = savePath + "\\" + wem.Name + ".wem";
            }
            else
            {
                name = savePath + "\\" + wem.ID + ".wem";
            }

            using (BinaryWriter bw = new BinaryWriter(new FileStream(name, FileMode.OpenOrCreate)))
            {
                bw.Write(wem.File);
            }
        }
示例#12
0
        private void Button_ExportWem_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog exportFile = new OpenFileDialog();

            exportFile.InitialDirectory = BnkFile.DirectoryName;
            exportFile.CheckFileExists  = false;
            exportFile.FileName         = "Save Here";

            if (exportFile.ShowDialog() == DialogResult.OK)
            {
                DialogResult exportIds = MessageBox.Show(Language.GetString("$EXPORT_WEM_WITH_NAME"), "Toolkit", MessageBoxButtons.YesNo);
                int          itemIndex = bnk.WemList.IndexOf((Wem)WemGrid.SelectedObject);

                if (itemIndex != -1)
                {
                    Wem wem = bnk.WemList[itemIndex];
                    Export(exportFile, exportIds, wem);
                }
            }
        }
示例#13
0
        private void Replace_Wem(object sender, RoutedEventArgs e)
        {
            if (viewModel.npck == null)
            {
                MessageBox.Show("NPCK not loaded.");
                return;
            }
            OpenFileDialog openFile = new OpenFileDialog();

            if (ImportPath != null)
            {
                openFile.InitialDirectory = ImportPath;
            }
            openFile.Multiselect = false;
            openFile.Filter      = "WWise Wem files (*.wem)|*.wem";
            if (openFile.ShowDialog() == true)
            {
                Wem newWem = HelperFunctions.MakeWems(openFile.FileName, HelperFunctions.OpenFile(openFile.FileName));
                viewModel.ReplaceWem(newWem, WemView.SelectedIndex);
            }
        }
示例#14
0
        //imported constructor
        public NPCKHeader(BinaryReader br, SupportedGames Mode, string fileName)
        {
            mode = Mode;
            string labelPath = Directory.GetCurrentDirectory() + "/" + mode.ToString() + "/PCK/" + fileName + ".lbl";

            if (File.Exists(labelPath))
            {
                MessageBoxResult labelRead = MessageBox.Show("Label file found. Read labels?", "Labels", MessageBoxButton.YesNo);
                if (labelRead == MessageBoxResult.Yes)
                {
                    labels = new Labels(XmlReader.Create(labelPath));
                }
            }
            char[] magicBytes = br.ReadChars(4);
            uint   headerLen  = br.ReadUInt32();

            unkn2            = br.ReadUInt32();
            languageLength   = br.ReadUInt32();
            bnkTableLength   = br.ReadUInt32();
            wemTableLength   = br.ReadUInt32();
            unknStructLength = br.ReadUInt32();
            long stringHeaderStart = br.BaseStream.Position;
            uint stringCount       = br.ReadUInt32();

            for (int i = 0; i < stringCount; i++)
            {
                PCKString stringData = new PCKString(br, Mode, stringHeaderStart);
                pckStrings.Add(stringData);
            }
            br.BaseStream.Seek(stringHeaderStart + languageLength, SeekOrigin.Begin);
            for (int i = 0; i < bnkTableLength / 4; i++)
            {
                br.ReadUInt32();
            }
            //this is 4-aligned at least in RE Engine games
            uint wemACount = br.ReadUInt32();

            for (int i = 0; i < wemACount; i++)
            {
                uint id            = br.ReadUInt32();
                uint one           = br.ReadUInt32();
                uint length        = br.ReadUInt32();
                uint offset        = br.ReadUInt32();
                uint languageEnum  = br.ReadUInt32();
                int  workingOffset = (int)br.BaseStream.Position;
                br.BaseStream.Seek(offset, SeekOrigin.Begin);
                byte[] file = br.ReadBytes((int)length);
                br.BaseStream.Seek(workingOffset, SeekOrigin.Begin);
                string name;
                if (labels.wemLabels.ContainsKey(id))
                {
                    name = labels.wemLabels[id];
                }
                else
                {
                    name = "Imported Wem " + i;
                }
                Wem newWem = new Wem(name, id, file, languageEnum);
                WemList.Add(newWem);
            }
            //the unknStruct uint is right here, but we've already read what we need
        }
示例#15
0
 public ReplacingWem(Wem newWem, uint iD)
 {
     wem         = newWem;
     replacingId = iD;
 }
示例#16
0
 public ReplacingWem(Wem newWem)
 {
     wem         = newWem;
     replacingId = 0;
 }