186 lines
5.8 KiB
C#
186 lines
5.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Syroot.NintenTools.Bfres;
|
|
|
|
namespace LayoutBXLYT
|
|
{
|
|
public partial class UserDataEditor : UserControl
|
|
{
|
|
public UserDataEditor()
|
|
{
|
|
InitializeComponent();
|
|
|
|
listViewCustom1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
|
|
}
|
|
|
|
BasePane activePane;
|
|
UserData ActiveUserData;
|
|
UserDataEntry SelectedEntry;
|
|
|
|
public void Reset()
|
|
{
|
|
ActiveUserData = new UserData();
|
|
SelectedEntry = null;
|
|
listViewCustom1.Items.Clear();
|
|
}
|
|
|
|
public void LoadUserData(BasePane pane, UserData UserData)
|
|
{
|
|
activePane = pane;
|
|
if (UserData != null)
|
|
{
|
|
listViewCustom1.Items.Clear();
|
|
|
|
ActiveUserData = UserData;
|
|
foreach (var item in ActiveUserData.Entries)
|
|
LoadUserData(item);
|
|
}
|
|
}
|
|
|
|
private void LoadUserData(UserDataEntry item)
|
|
{
|
|
ListViewItem listItem = new ListViewItem();
|
|
listItem.Text = item.Name;
|
|
listItem.SubItems.Add(item.Type.ToString());
|
|
|
|
string value = "";
|
|
|
|
switch (item.Type)
|
|
{
|
|
case UserDataType.String:
|
|
if (item.GetString() != null)
|
|
{
|
|
value += $" {item.GetString()}";
|
|
}
|
|
break;
|
|
case UserDataType.Float:
|
|
if (item.GetFloats() != null)
|
|
{
|
|
foreach (var val in item.GetFloats())
|
|
value += $" {val}";
|
|
}
|
|
break;
|
|
case UserDataType.Int:
|
|
if (item.GetInts() != null)
|
|
{
|
|
foreach (var val in item.GetInts())
|
|
value += $" {val}";
|
|
}
|
|
break;
|
|
}
|
|
listItem.SubItems.Add(value);
|
|
|
|
listViewCustom1.Items.Add(listItem);
|
|
}
|
|
|
|
private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (listViewCustom1.SelectedItems.Count > 0)
|
|
{
|
|
btnScrolDown.Enabled = true;
|
|
btnScrollUp.Enabled = true;
|
|
btnEdit.Enabled = true;
|
|
btnRemove.Enabled = true;
|
|
|
|
SelectedEntry = ActiveUserData.Entries[listViewCustom1.SelectedIndices[0]];
|
|
}
|
|
else
|
|
{
|
|
SelectedEntry = null;
|
|
btnScrolDown.Enabled = false;
|
|
btnScrollUp.Enabled = false;
|
|
btnEdit.Enabled = false;
|
|
btnRemove.Enabled = false;
|
|
}
|
|
}
|
|
|
|
private void btnEdit_Click(object sender, EventArgs e)
|
|
{
|
|
EditData();
|
|
}
|
|
|
|
private void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
if (activePane == null) return;
|
|
|
|
UserDataEntry userDataNew = new UserDataEntry();
|
|
userDataNew.SetValue(new int[0]);
|
|
SelectedEntry = userDataNew;
|
|
bool IsEdited = EditData();
|
|
if (IsEdited)
|
|
{
|
|
ActiveUserData.Entries.Add(userDataNew);
|
|
LoadUserData(userDataNew);
|
|
}
|
|
}
|
|
private bool EditData()
|
|
|
|
{
|
|
if (SelectedEntry != null)
|
|
{
|
|
UserDataParser parser = new UserDataParser();
|
|
parser.UserDataName = SelectedEntry.Name;
|
|
parser.Type = SelectedEntry.Type;
|
|
|
|
switch (SelectedEntry.Type)
|
|
{
|
|
case UserDataType.String:
|
|
if (SelectedEntry.GetString() != null)
|
|
parser.LoadValues(SelectedEntry.GetString());
|
|
break;
|
|
case UserDataType.Float:
|
|
if (SelectedEntry.GetString() != null)
|
|
parser.LoadValues(SelectedEntry.GetFloats());
|
|
break;
|
|
case UserDataType.Int:
|
|
if (SelectedEntry.GetInts() != null)
|
|
parser.LoadValues(SelectedEntry.GetInts());
|
|
break;
|
|
}
|
|
if (parser.ShowDialog() == DialogResult.OK)
|
|
{
|
|
SelectedEntry.Name = parser.UserDataName;
|
|
|
|
if (parser.Type == UserDataType.Float)
|
|
SelectedEntry.SetValue(parser.GetFloats());
|
|
if (parser.Type == UserDataType.Int)
|
|
SelectedEntry.SetValue(parser.GetInts());
|
|
if (parser.Type == UserDataType.String)
|
|
SelectedEntry.SetValue(parser.GetStringASCII());
|
|
|
|
if (ActiveUserData == null)
|
|
ActiveUserData = activePane.CreateUserData();
|
|
|
|
LoadUserData(activePane, ActiveUserData);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void btnRemove_Click(object sender, EventArgs e)
|
|
{
|
|
if (listViewCustom1.SelectedIndices.Count > 0)
|
|
{
|
|
int index = listViewCustom1.SelectedIndices[0];
|
|
listViewCustom1.Items.RemoveAt(index);
|
|
|
|
if (ActiveUserData != null)
|
|
ActiveUserData.Entries.RemoveAt(index);
|
|
}
|
|
}
|
|
|
|
private void listViewCustom1_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
EditData();
|
|
}
|
|
}
|
|
}
|