mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2026-05-18 04:42:07 +08:00
New Project Window
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
using CodeWalker.GameFiles;
|
||||
using SharpDX;
|
||||
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 EditScenarioYmtPanel : ProjectPanel
|
||||
{
|
||||
public ProjectForm2 ProjectForm;
|
||||
public YmtFile CurrentScenario { get; set; }
|
||||
|
||||
private bool populatingui = false;
|
||||
private bool waschanged = false;
|
||||
|
||||
public EditScenarioYmtPanel(ProjectForm2 projectForm)
|
||||
{
|
||||
ProjectForm = projectForm;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public void SetScenarioYmt(YmtFile scenario)
|
||||
{
|
||||
CurrentScenario = scenario;
|
||||
Tag = scenario;
|
||||
UpdateFormTitle();
|
||||
UpdateScenarioUI();
|
||||
waschanged = scenario?.HasChanged ?? false;
|
||||
}
|
||||
|
||||
public void UpdateFormTitleYmtChanged()
|
||||
{
|
||||
bool changed = CurrentScenario.HasChanged;
|
||||
if (!waschanged && changed)
|
||||
{
|
||||
UpdateFormTitle();
|
||||
waschanged = true;
|
||||
}
|
||||
else if (waschanged && !changed)
|
||||
{
|
||||
UpdateFormTitle();
|
||||
waschanged = false;
|
||||
}
|
||||
}
|
||||
private void UpdateFormTitle()
|
||||
{
|
||||
string fn = CurrentScenario.RpfFileEntry?.Name ?? CurrentScenario.Name;
|
||||
if (string.IsNullOrEmpty(fn)) fn = "untitled.ymt";
|
||||
Text = fn + (CurrentScenario.HasChanged ? "*" : "");
|
||||
}
|
||||
|
||||
|
||||
public void UpdateScenarioUI()
|
||||
{
|
||||
if (CurrentScenario == null)
|
||||
{
|
||||
populatingui = true;
|
||||
//ScenarioYmtPanel.Enabled = false;
|
||||
ScenarioYmtNameTextBox.Text = string.Empty;
|
||||
ScenarioYmtVersionTextBox.Text = string.Empty;
|
||||
ScenarioYmtGridMinTextBox.Text = string.Empty;
|
||||
ScenarioYmtGridMaxTextBox.Text = string.Empty;
|
||||
ScenarioYmtGridScaleTextBox.Text = string.Empty;
|
||||
ScenarioYmtGridInfoLabel.Text = "Total grid points: 0";
|
||||
ScenarioYmtExtentsMinTextBox.Text = string.Empty;
|
||||
ScenarioYmtExtentsMaxTextBox.Text = string.Empty;
|
||||
ScenarioYmtFileLocationTextBox.Text = string.Empty;
|
||||
ScenarioYmtProjectPathTextBox.Text = string.Empty;
|
||||
populatingui = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var rgn = CurrentScenario.CScenarioPointRegion;
|
||||
var accg = rgn?._Data.AccelGrid ?? new rage__spdGrid2D();
|
||||
var bvh = CurrentScenario.ScenarioRegion?.BVH;
|
||||
var emin = bvh?.Box.Minimum ?? Vector3.Zero;
|
||||
var emax = bvh?.Box.Maximum ?? Vector3.Zero;
|
||||
|
||||
populatingui = true;
|
||||
//ScenarioYmtPanel.Enabled = true;
|
||||
ScenarioYmtNameTextBox.Text = CurrentScenario.Name;
|
||||
ScenarioYmtVersionTextBox.Text = rgn?.VersionNumber.ToString() ?? "";
|
||||
ScenarioYmtGridMinTextBox.Text = FloatUtil.GetVector2String(accg.Min);
|
||||
ScenarioYmtGridMaxTextBox.Text = FloatUtil.GetVector2String(accg.Max);
|
||||
ScenarioYmtGridScaleTextBox.Text = FloatUtil.GetVector2String(accg.Scale);
|
||||
ScenarioYmtGridInfoLabel.Text = "Total grid points: " + (rgn?.Unk_3844724227?.Length ?? 0).ToString();
|
||||
ScenarioYmtExtentsMinTextBox.Text = FloatUtil.GetVector3String(emin);
|
||||
ScenarioYmtExtentsMaxTextBox.Text = FloatUtil.GetVector3String(emax);
|
||||
ScenarioYmtFileLocationTextBox.Text = CurrentScenario.RpfFileEntry?.Path ?? "";
|
||||
ScenarioYmtProjectPathTextBox.Text = (ProjectForm.CurrentProjectFile != null) ? ProjectForm.CurrentProjectFile.GetRelativePath(CurrentScenario.FilePath) : CurrentScenario.FilePath;
|
||||
populatingui = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ScenarioYmtVersionTextBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (populatingui) return;
|
||||
if (CurrentScenario == null) return;
|
||||
if (CurrentScenario.CScenarioPointRegion == null) return;
|
||||
lock (ProjectForm.ProjectSyncRoot)
|
||||
{
|
||||
int v = 0;
|
||||
int.TryParse(ScenarioYmtVersionTextBox.Text, out v);
|
||||
if (CurrentScenario.CScenarioPointRegion.VersionNumber != v)
|
||||
{
|
||||
CurrentScenario.CScenarioPointRegion.VersionNumber = v;
|
||||
ProjectForm.SetScenarioHasChanged(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user