mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-08-20 08:59:21 +08:00
161 lines
5.5 KiB
C#
161 lines
5.5 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 EditYndPanel : ProjectPanel
|
|
{
|
|
public ProjectForm ProjectForm;
|
|
public YndFile Ynd { get; set; }
|
|
|
|
private bool populatingui = false;
|
|
private bool waschanged = false;
|
|
|
|
public EditYndPanel(ProjectForm projectForm)
|
|
{
|
|
ProjectForm = projectForm;
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void SetYnd(YndFile ynd)
|
|
{
|
|
Ynd = ynd;
|
|
Tag = ynd;
|
|
UpdateFormTitle();
|
|
UpdateYndUI();
|
|
waschanged = ynd?.HasChanged ?? false;
|
|
}
|
|
|
|
public void UpdateFormTitleYndChanged()
|
|
{
|
|
bool changed = Ynd.HasChanged;
|
|
if (!waschanged && changed)
|
|
{
|
|
UpdateFormTitle();
|
|
waschanged = true;
|
|
}
|
|
else if (waschanged && !changed)
|
|
{
|
|
UpdateFormTitle();
|
|
waschanged = false;
|
|
}
|
|
}
|
|
private void UpdateFormTitle()
|
|
{
|
|
string fn = Ynd.RpfFileEntry?.Name ?? Ynd.Name;
|
|
if (string.IsNullOrEmpty(fn)) fn = "untitled.ynd";
|
|
Text = fn + (Ynd.HasChanged ? "*" : "");
|
|
}
|
|
|
|
|
|
public void UpdateYndUI()
|
|
{
|
|
if (Ynd == null)
|
|
{
|
|
//YndPanel.Enabled = false;
|
|
YndRpfPathTextBox.Text = string.Empty;
|
|
YndFilePathTextBox.Text = string.Empty;
|
|
YndProjectPathTextBox.Text = string.Empty;
|
|
YndAreaIDXUpDown.Value = 0;
|
|
YndAreaIDYUpDown.Value = 0;
|
|
YndAreaIDInfoLabel.Text = "ID: 0";
|
|
YndTotalNodesLabel.Text = "Total Nodes: 0";
|
|
YndVehicleNodesUpDown.Value = 0;
|
|
YndVehicleNodesUpDown.Maximum = 0;
|
|
YndPedNodesUpDown.Value = 0;
|
|
YndPedNodesUpDown.Maximum = 0;
|
|
}
|
|
else
|
|
{
|
|
populatingui = true;
|
|
var nd = Ynd.NodeDictionary;
|
|
//YndPanel.Enabled = true;
|
|
YndRpfPathTextBox.Text = Ynd.RpfFileEntry.Path;
|
|
YndFilePathTextBox.Text = Ynd.FilePath;
|
|
YndProjectPathTextBox.Text = (Ynd != null) ? ProjectForm.CurrentProjectFile.GetRelativePath(Ynd.FilePath) : Ynd.FilePath;
|
|
YndAreaIDXUpDown.Value = Ynd.CellX;
|
|
YndAreaIDYUpDown.Value = Ynd.CellY;
|
|
YndAreaIDInfoLabel.Text = "ID: " + Ynd.AreaID.ToString();
|
|
YndTotalNodesLabel.Text = "Total Nodes: " + (nd?.NodesCount.ToString() ?? "0");
|
|
YndVehicleNodesUpDown.Maximum = nd?.NodesCount ?? 0;
|
|
YndVehicleNodesUpDown.Value = Math.Min(nd?.NodesCountVehicle ?? 0, YndVehicleNodesUpDown.Maximum);
|
|
YndPedNodesUpDown.Maximum = nd?.NodesCount ?? 0;
|
|
YndPedNodesUpDown.Value = Math.Min(nd?.NodesCountPed ?? 0, YndPedNodesUpDown.Maximum);
|
|
populatingui = false;
|
|
}
|
|
}
|
|
|
|
private void YndAreaIDUpDownChange()
|
|
{
|
|
if (populatingui) return;
|
|
if (Ynd == null) return;
|
|
int x = (int)YndAreaIDXUpDown.Value;
|
|
int y = (int)YndAreaIDYUpDown.Value;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
var areaid = y * 32 + x;
|
|
if (Ynd.AreaID != areaid)
|
|
{
|
|
Ynd.AreaID = areaid;
|
|
Ynd.Name = "nodes" + areaid.ToString() + ".ynd";
|
|
YndAreaIDInfoLabel.Text = "ID: " + areaid.ToString();
|
|
ProjectForm.SetYndHasChanged(true);
|
|
}
|
|
}
|
|
UpdateFormTitleYndChanged();
|
|
}
|
|
|
|
private void YndAreaIDXUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
YndAreaIDUpDownChange();
|
|
}
|
|
|
|
private void YndAreaIDYUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
YndAreaIDUpDownChange();
|
|
}
|
|
|
|
private void YndVehicleNodesUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (Ynd == null) return;
|
|
if (Ynd.NodeDictionary == null) return;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
var vehnodes = (int)YndVehicleNodesUpDown.Value;
|
|
if (Ynd.NodeDictionary.NodesCountVehicle != vehnodes)
|
|
{
|
|
Ynd.NodeDictionary.NodesCountVehicle = (uint)vehnodes;
|
|
ProjectForm.SetYndHasChanged(true);
|
|
}
|
|
}
|
|
UpdateFormTitleYndChanged();
|
|
}
|
|
|
|
private void YndPedNodesUpDown_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
if (populatingui) return;
|
|
if (Ynd == null) return;
|
|
if (Ynd.NodeDictionary == null) return;
|
|
lock (ProjectForm.ProjectSyncRoot)
|
|
{
|
|
var pednodes = (int)YndPedNodesUpDown.Value;
|
|
if (Ynd.NodeDictionary.NodesCountPed != pednodes)
|
|
{
|
|
Ynd.NodeDictionary.NodesCountPed = (uint)pednodes;
|
|
ProjectForm.SetYndHasChanged(true);
|
|
}
|
|
}
|
|
UpdateFormTitleYndChanged();
|
|
}
|
|
}
|
|
}
|