mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2026-05-18 05:57:05 +08:00
Dat151 progress
This commit is contained in:
@@ -0,0 +1,436 @@
|
||||
using CodeWalker.GameFiles;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace CodeWalker.Project.Panels
|
||||
{
|
||||
public partial class EditAudioInteriorRoomPanel : ProjectPanel
|
||||
{
|
||||
public ProjectForm ProjectForm;
|
||||
public Dat151InteriorRoom CurrentRoom { get; set; }
|
||||
|
||||
private bool populatingui = false;
|
||||
|
||||
|
||||
public EditAudioInteriorRoomPanel(ProjectForm owner)
|
||||
{
|
||||
ProjectForm = owner;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetRoom(Dat151InteriorRoom room)
|
||||
{
|
||||
CurrentRoom = room;
|
||||
Tag = room;
|
||||
UpdateFormTitle();
|
||||
UpdateUI();
|
||||
}
|
||||
|
||||
private void UpdateFormTitle()
|
||||
{
|
||||
Text = CurrentRoom?.NameHash.ToString() ?? "";
|
||||
}
|
||||
|
||||
private void UpdateUI()
|
||||
{
|
||||
if (CurrentRoom == null)
|
||||
{
|
||||
//AddToProjectButton.Enabled = false;
|
||||
DeleteButton.Enabled = false;
|
||||
|
||||
populatingui = true;
|
||||
NameTextBox.Text = string.Empty;
|
||||
Unk00TextBox.Text = string.Empty;
|
||||
Hash1TextBox.Text = string.Empty;
|
||||
Unk02TextBox.Text = string.Empty;
|
||||
Unk03TextBox.Text = string.Empty;
|
||||
Unk04TextBox.Text = string.Empty;
|
||||
Unk05TextBox.Text = string.Empty;
|
||||
Unk06TextBox.Text = string.Empty;
|
||||
Unk07TextBox.Text = string.Empty;
|
||||
Unk08TextBox.Text = string.Empty;
|
||||
Unk09TextBox.Text = string.Empty;
|
||||
Unk10TextBox.Text = string.Empty;
|
||||
Unk11TextBox.Text = string.Empty;
|
||||
Unk12TextBox.Text = string.Empty;
|
||||
Unk13TextBox.Text = string.Empty;
|
||||
Unk14TextBox.Text = string.Empty;
|
||||
Flags0TextBox.Text = string.Empty;
|
||||
populatingui = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//AddToProjectButton.Enabled = CurrentZoneList?.Rel != null ? !ProjectForm.AudioFileExistsInProject(CurrentZoneList.Rel) : false;
|
||||
DeleteButton.Enabled = !(CurrentRoom?.Rel != null ? !ProjectForm.AudioFileExistsInProject(CurrentRoom.Rel) : false);// AddToProjectButton.Enabled;
|
||||
|
||||
populatingui = true;
|
||||
var cr = CurrentRoom;
|
||||
|
||||
NameTextBox.Text = cr.NameHash.ToString();
|
||||
Unk00TextBox.Text = cr.Unk00.ToString();
|
||||
Hash1TextBox.Text = cr.Hash1.ToString();
|
||||
Unk02TextBox.Text = cr.Unk02.ToString();
|
||||
Unk03TextBox.Text = FloatUtil.ToString(cr.Unk03);
|
||||
Unk04TextBox.Text = FloatUtil.ToString(cr.Unk04);
|
||||
Unk05TextBox.Text = FloatUtil.ToString(cr.Unk05);
|
||||
Unk06TextBox.Text = cr.Unk06.ToString();
|
||||
Unk07TextBox.Text = FloatUtil.ToString(cr.Unk07);
|
||||
Unk08TextBox.Text = FloatUtil.ToString(cr.Unk08);
|
||||
Unk09TextBox.Text = FloatUtil.ToString(cr.Unk09);
|
||||
Unk10TextBox.Text = FloatUtil.ToString(cr.Unk10);
|
||||
Unk11TextBox.Text = FloatUtil.ToString(cr.Unk11);
|
||||
Unk12TextBox.Text = FloatUtil.ToString(cr.Unk12);
|
||||
Unk13TextBox.Text = cr.Unk13.ToString();
|
||||
Unk14TextBox.Text = cr.Unk14.ToString();
|
||||
Flags0TextBox.Text = cr.Flags0.Hex;
|
||||
populatingui = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ProjectItemChanged()
|
||||
{
|
||||
if (CurrentRoom?.Rel != null)
|
||||
{
|
||||
ProjectForm.SetAudioFileHasChanged(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void NameTextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = NameTextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.NameHash != hash)
|
||||
{
|
||||
CurrentRoom.Name = NameTextBox.Text;
|
||||
CurrentRoom.NameHash = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
UpdateFormTitle();
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk00TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = Unk00TextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.Unk00 != hash)
|
||||
{
|
||||
CurrentRoom.Unk00 = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void Hash1TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = Hash1TextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.Hash1 != hash)
|
||||
{
|
||||
CurrentRoom.Hash1 = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk02TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint val = 0;
|
||||
if (uint.TryParse(Unk02TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk02 != val)
|
||||
{
|
||||
CurrentRoom.Unk02 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk03TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk03TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk03 != val)
|
||||
{
|
||||
CurrentRoom.Unk03 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk04TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk04TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk04 != val)
|
||||
{
|
||||
CurrentRoom.Unk04 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk05TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk05TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk05 != val)
|
||||
{
|
||||
CurrentRoom.Unk05 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk06TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = Unk06TextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.Unk06 != hash)
|
||||
{
|
||||
CurrentRoom.Unk06 = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk07TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk07TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk07 != val)
|
||||
{
|
||||
CurrentRoom.Unk07 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk08TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk08TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk08 != val)
|
||||
{
|
||||
CurrentRoom.Unk08 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk09TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk09TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk09 != val)
|
||||
{
|
||||
CurrentRoom.Unk09 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk10TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk10TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk10 != val)
|
||||
{
|
||||
CurrentRoom.Unk10 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk11TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk11TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk11 != val)
|
||||
{
|
||||
CurrentRoom.Unk11 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk12TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
float val = 0;
|
||||
if (FloatUtil.TryParse(Unk12TextBox.Text, out val))
|
||||
{
|
||||
if (CurrentRoom.Unk12 != val)
|
||||
{
|
||||
CurrentRoom.Unk12 = val;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk13TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = Unk13TextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.Unk13 != hash)
|
||||
{
|
||||
CurrentRoom.Unk13 = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void Unk14TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint hash = 0;
|
||||
string name = Unk14TextBox.Text;
|
||||
if (!uint.TryParse(name, out hash))//don't re-hash hashes
|
||||
{
|
||||
hash = JenkHash.GenHash(name);
|
||||
JenkIndex.Ensure(name);
|
||||
}
|
||||
//NameHashLabel.Text = "Hash: " + hash.ToString();
|
||||
|
||||
if (CurrentRoom.Unk14 != hash)
|
||||
{
|
||||
CurrentRoom.Unk14 = hash;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private void Flags0TextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentRoom == null) return;
|
||||
|
||||
uint flags = 0;
|
||||
if (uint.TryParse(Flags0TextBox.Text, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out flags))
|
||||
{
|
||||
if (CurrentRoom.Flags0.Value != flags)
|
||||
{
|
||||
CurrentRoom.Flags0 = flags;
|
||||
|
||||
ProjectItemChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
ProjectForm.SetProjectItem(CurrentRoom);
|
||||
ProjectForm.DeleteAudioInteriorRoom();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user