CodeWalker/Project/Panels/EditAudioFilePanel.cs
2018-12-27 21:37:44 +11:00

104 lines
2.9 KiB
C#

using CodeWalker.GameFiles;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CodeWalker.Project.Panels
{
public partial class EditAudioFilePanel : ProjectPanel
{
public ProjectForm ProjectForm;
public RelFile CurrentFile { get; set; }
private bool populatingui = false;
public EditAudioFilePanel(ProjectForm owner)
{
ProjectForm = owner;
InitializeComponent();
}
public void SetFile(RelFile file)
{
CurrentFile = file;
Tag = file;
UpdateFormTitle();
UpdateUI();
}
private void UpdateFormTitle()
{
Text = CurrentFile?.Name ?? "";
}
private void UpdateUI()
{
if (CurrentFile == null)
{
populatingui = true;
FileTypeComboBox.Text = string.Empty;
UnkVersionUpDown.Value = 0;
FileLocationTextBox.Text = string.Empty;
ProjectPathTextBox.Text = string.Empty;
populatingui = false;
}
else
{
populatingui = true;
FileTypeComboBox.Text = CurrentFile.RelType.ToString();
UnkVersionUpDown.Value = CurrentFile.DataUnkVal;
var project = ProjectForm?.CurrentProjectFile;
FileLocationTextBox.Text = CurrentFile.RpfFileEntry?.Path ?? CurrentFile.FilePath;
ProjectPathTextBox.Text = (project != null) ? project.GetRelativePath(CurrentFile.FilePath) : CurrentFile.FilePath;
populatingui = false;
}
}
private void ProjectItemChanged()
{
if (CurrentFile != null)
{
ProjectForm.SetAudioFileHasChanged(true);
}
}
private void FileTypeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (CurrentFile == null) return;
var type = RelDatFileType.Dat151;
if (Enum.TryParse(FileTypeComboBox.Text, out type))
{
if (CurrentFile.RelType != type)
{
CurrentFile.RelType = type;
ProjectItemChanged();
}
}
}
private void UnkVersionUpDown_ValueChanged(object sender, EventArgs e)
{
if (populatingui) return;
if (CurrentFile == null) return;
byte unk = (byte)UnkVersionUpDown.Value;
if (CurrentFile.DataUnkVal != unk)
{
CurrentFile.DataUnkVal = unk;
ProjectItemChanged();
}
}
}
}