Merge pull request #147 from Lucas7yoshi/update/yvr-form

Update ywr/yvr form
This commit is contained in:
dexyfex 2022-01-16 20:33:52 +11:00 committed by GitHub
commit 88016633da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 448 additions and 110 deletions

View File

@ -30,13 +30,34 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YvrForm));
this.CloseButton = new System.Windows.Forms.Button();
this.MainTextBox = new CodeWalker.WinForms.TextBoxFix();
this.MainListView = new System.Windows.Forms.ListView();
this.PosXColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PosYColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.PosZColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.TimeColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VelocityXColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VelocityYColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VelocityZColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.RightXColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.RightYColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.RightZColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.TopXColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.TopYColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.TopZColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.SteeringAngleColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.GasPedalPowerColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.BrakePedalPowerColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.HandbrakeUsedColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ExportButton = new System.Windows.Forms.Button();
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.CopyClipboardButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// CloseButton
//
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CloseButton.Location = new System.Drawing.Point(597, 389);
this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.CloseButton.Location = new System.Drawing.Point(845, 389);
this.CloseButton.Name = "CloseButton";
this.CloseButton.Size = new System.Drawing.Size(75, 23);
this.CloseButton.TabIndex = 5;
@ -44,39 +65,186 @@
this.CloseButton.UseVisualStyleBackColor = true;
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
//
// MainTextBox
// MainListView
//
this.MainTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.MainListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.MainTextBox.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.MainTextBox.HideSelection = false;
this.MainTextBox.Location = new System.Drawing.Point(12, 12);
this.MainTextBox.Multiline = true;
this.MainTextBox.Name = "MainTextBox";
this.MainTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.MainTextBox.Size = new System.Drawing.Size(660, 371);
this.MainTextBox.TabIndex = 4;
this.MainTextBox.WordWrap = false;
this.MainListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.PosXColumn,
this.PosYColumn,
this.PosZColumn,
this.TimeColumn,
this.VelocityXColumn,
this.VelocityYColumn,
this.VelocityZColumn,
this.RightXColumn,
this.RightYColumn,
this.RightZColumn,
this.TopXColumn,
this.TopYColumn,
this.TopZColumn,
this.SteeringAngleColumn,
this.GasPedalPowerColumn,
this.BrakePedalPowerColumn,
this.HandbrakeUsedColumn});
this.MainListView.HideSelection = false;
this.MainListView.Location = new System.Drawing.Point(12, 12);
this.MainListView.Name = "MainListView";
this.MainListView.Size = new System.Drawing.Size(908, 371);
this.MainListView.TabIndex = 6;
this.MainListView.UseCompatibleStateImageBehavior = false;
this.MainListView.View = System.Windows.Forms.View.Details;
//
// PosXColumn
//
this.PosXColumn.Text = "X Pos";
this.PosXColumn.Width = 72;
//
// PosYColumn
//
this.PosYColumn.Text = "Y Pos";
this.PosYColumn.Width = 72;
//
// PosZColumn
//
this.PosZColumn.Text = "Z Pos";
this.PosZColumn.Width = 72;
//
// TimeColumn
//
this.TimeColumn.Text = "Time";
this.TimeColumn.Width = 55;
//
// VelocityXColumn
//
this.VelocityXColumn.Text = "X Velocity";
this.VelocityXColumn.Width = 48;
//
// VelocityYColumn
//
this.VelocityYColumn.Text = "Y Velocity";
this.VelocityYColumn.Width = 48;
//
// VelocityZColumn
//
this.VelocityZColumn.Text = "Z Velocity";
this.VelocityZColumn.Width = 48;
//
// RightXColumn
//
this.RightXColumn.Text = "Right X";
this.RightXColumn.Width = 48;
//
// RightYColumn
//
this.RightYColumn.Text = "Right Y";
this.RightYColumn.Width = 48;
//
// RightZColumn
//
this.RightZColumn.Text = "Right Z";
this.RightZColumn.Width = 48;
//
// TopXColumn
//
this.TopXColumn.Text = "Top X";
this.TopXColumn.Width = 44;
//
// TopYColumn
//
this.TopYColumn.Text = "Top Y";
this.TopYColumn.Width = 44;
//
// TopZColumn
//
this.TopZColumn.Text = "Top Z";
this.TopZColumn.Width = 44;
//
// SteeringAngleColumn
//
this.SteeringAngleColumn.Text = "Steer Angle";
this.SteeringAngleColumn.Width = 47;
//
// GasPedalPowerColumn
//
this.GasPedalPowerColumn.Text = "Gas Power";
this.GasPedalPowerColumn.Width = 42;
//
// BrakePedalPowerColumn
//
this.BrakePedalPowerColumn.Text = "Brake Power";
this.BrakePedalPowerColumn.Width = 50;
//
// HandbrakeUsedColumn
//
this.HandbrakeUsedColumn.Text = "Handbrake";
this.HandbrakeUsedColumn.Width = 65;
//
// ExportButton
//
this.ExportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.ExportButton.Enabled = false;
this.ExportButton.Location = new System.Drawing.Point(764, 389);
this.ExportButton.Name = "ExportButton";
this.ExportButton.Size = new System.Drawing.Size(75, 23);
this.ExportButton.TabIndex = 7;
this.ExportButton.Text = "Export";
this.ExportButton.UseVisualStyleBackColor = true;
this.ExportButton.Click += new System.EventHandler(this.ExportButton_Click);
//
// CopyClipboardButton
//
this.CopyClipboardButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CopyClipboardButton.Enabled = false;
this.CopyClipboardButton.Location = new System.Drawing.Point(656, 389);
this.CopyClipboardButton.Name = "CopyClipboardButton";
this.CopyClipboardButton.Size = new System.Drawing.Size(102, 23);
this.CopyClipboardButton.TabIndex = 8;
this.CopyClipboardButton.Text = "Copy to clipboard";
this.CopyClipboardButton.UseVisualStyleBackColor = true;
this.CopyClipboardButton.Click += new System.EventHandler(this.CopyClipboardButton_Click);
//
// YvrForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(684, 421);
this.CancelButton = this.CloseButton;
this.ClientSize = new System.Drawing.Size(932, 421);
this.Controls.Add(this.CopyClipboardButton);
this.Controls.Add(this.ExportButton);
this.Controls.Add(this.MainListView);
this.Controls.Add(this.CloseButton);
this.Controls.Add(this.MainTextBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "YvrForm";
this.Text = "Vehicle Records Viewer - CodeWalker by dexyfex";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button CloseButton;
private WinForms.TextBoxFix MainTextBox;
private System.Windows.Forms.ListView MainListView;
private System.Windows.Forms.ColumnHeader PosXColumn;
private System.Windows.Forms.ColumnHeader PosYColumn;
private System.Windows.Forms.ColumnHeader PosZColumn;
private System.Windows.Forms.ColumnHeader TimeColumn;
private System.Windows.Forms.ColumnHeader VelocityXColumn;
private System.Windows.Forms.ColumnHeader VelocityYColumn;
private System.Windows.Forms.ColumnHeader VelocityZColumn;
private System.Windows.Forms.ColumnHeader RightXColumn;
private System.Windows.Forms.ColumnHeader RightYColumn;
private System.Windows.Forms.ColumnHeader RightZColumn;
private System.Windows.Forms.ColumnHeader TopXColumn;
private System.Windows.Forms.ColumnHeader TopYColumn;
private System.Windows.Forms.ColumnHeader TopZColumn;
private System.Windows.Forms.ColumnHeader SteeringAngleColumn;
private System.Windows.Forms.ColumnHeader GasPedalPowerColumn;
private System.Windows.Forms.ColumnHeader BrakePedalPowerColumn;
private System.Windows.Forms.ColumnHeader HandbrakeUsedColumn;
private System.Windows.Forms.Button ExportButton;
private System.Windows.Forms.SaveFileDialog saveFileDialog;
private System.Windows.Forms.Button CopyClipboardButton;
}
}

View File

@ -1,5 +1,6 @@
using CodeWalker.GameFiles;
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -15,6 +16,7 @@ namespace CodeWalker.Forms
{
private string fileName;
private YvrFile yvr;
public string FileName
{
get { return fileName; }
@ -41,10 +43,9 @@ namespace CodeWalker.Forms
Text = fileName + " - Vehicle Records Viewer - CodeWalker by dexyfex";
}
public void LoadYvr(YvrFile yvr)
{
this.yvr = yvr;
fileName = yvr?.Name;
if (string.IsNullOrEmpty(fileName))
{
@ -53,65 +54,106 @@ namespace CodeWalker.Forms
UpdateFormTitle();
StringBuilder sb = new StringBuilder();
if ((yvr != null) && (yvr.Records != null) && (yvr.Records.Entries != null) && (yvr.Records.Entries.data_items != null))
{
sb.AppendLine("PositionX, PositionY, PositionZ, Time, VelocityX, VelocityY, VelocityZ, RightX, RightY, RightZ, TopX, TopY, TopZ, SteeringAngle, GasPedalPower, BrakePedalPower, HandbrakeUsed");
foreach (var entry in yvr.Records.Entries.data_items)
{
sb.Append(FloatUtil.ToString(entry.PositionX));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionY));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionZ));
sb.Append(", ");
sb.Append(entry.Time.ToString());
sb.Append(", ");
sb.Append(entry.VelocityX.ToString());
sb.Append(", ");
sb.Append(entry.VelocityY.ToString());
sb.Append(", ");
sb.Append(entry.VelocityZ.ToString());
sb.Append(", ");
sb.Append(entry.RightX.ToString());
sb.Append(", ");
sb.Append(entry.RightY.ToString());
sb.Append(", ");
sb.Append(entry.RightZ.ToString());
sb.Append(", ");
sb.Append(entry.TopX.ToString());
sb.Append(", ");
sb.Append(entry.TopY.ToString());
sb.Append(", ");
sb.Append(entry.TopZ.ToString());
sb.Append(", ");
sb.Append(entry.SteeringAngle.ToString());
sb.Append(", ");
sb.Append(entry.GasPedalPower.ToString());
sb.Append(", ");
sb.Append(entry.BrakePedalPower.ToString());
sb.Append(", ");
sb.Append(entry.HandbrakeUsed.ToString());
sb.AppendLine();
}
ExportButton.Enabled = true;
CopyClipboardButton.Enabled = true;
LoadListView();
}
else
{
sb.AppendLine("Unable to load Vehicle Records.");
}
MainTextBox.Text = sb.ToString();
}
private string GenerateText()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("PositionX, PositionY, PositionZ, Time, VelocityX, VelocityY, VelocityZ, RightX, RightY, RightZ, TopX, TopY, TopZ, SteeringAngle, GasPedalPower, BrakePedalPower, HandbrakeUsed");
foreach (var entry in yvr.Records.Entries.data_items)
{
sb.Append(FloatUtil.ToString(entry.PositionX));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionY));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionZ));
sb.Append(", ");
sb.Append(entry.Time.ToString());
sb.Append(", ");
sb.Append(entry.VelocityX.ToString());
sb.Append(", ");
sb.Append(entry.VelocityY.ToString());
sb.Append(", ");
sb.Append(entry.VelocityZ.ToString());
sb.Append(", ");
sb.Append(entry.RightX.ToString());
sb.Append(", ");
sb.Append(entry.RightY.ToString());
sb.Append(", ");
sb.Append(entry.RightZ.ToString());
sb.Append(", ");
sb.Append(entry.TopX.ToString());
sb.Append(", ");
sb.Append(entry.TopY.ToString());
sb.Append(", ");
sb.Append(entry.TopZ.ToString());
sb.Append(", ");
sb.Append(entry.SteeringAngle.ToString());
sb.Append(", ");
sb.Append(entry.GasPedalPower.ToString());
sb.Append(", ");
sb.Append(entry.BrakePedalPower.ToString());
sb.Append(", ");
sb.Append(entry.HandbrakeUsed.ToString());
sb.AppendLine();
}
return sb.ToString();
}
public void LoadListView()
{
MainListView.BeginUpdate(); // performance
foreach (var entry in yvr.Records.Entries.data_items)
{
string[] row =
{
FloatUtil.ToString(entry.PositionX),
FloatUtil.ToString(entry.PositionY),
FloatUtil.ToString(entry.PositionZ),
entry.Time.ToString(),
entry.VelocityX.ToString(),
entry.VelocityY.ToString(),
entry.VelocityZ.ToString(),
entry.RightX.ToString(),
entry.RightY.ToString(),
entry.RightZ.ToString(),
entry.TopX.ToString(),
entry.TopY.ToString(),
entry.TopZ.ToString(),
entry.SteeringAngle.ToString(),
entry.GasPedalPower.ToString(),
entry.BrakePedalPower.ToString(),
entry.HandbrakeUsed.ToString(),
};
MainListView.Items.Add(new ListViewItem(row));
}
MainListView.EndUpdate();
}
private void CloseButton_Click(object sender, EventArgs e)
{
Close();
}
private void ExportButton_Click(object sender, EventArgs e)
{
saveFileDialog.FileName = Path.GetFileNameWithoutExtension(fileName) + ".csv";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFileDialog.FileName, GenerateText());
}
}
private void CopyClipboardButton_Click(object sender, EventArgs e)
{
Clipboard.SetText(GenerateText());
}
}
}

View File

@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>

View File

@ -30,13 +30,24 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YwrForm));
this.CloseButton = new System.Windows.Forms.Button();
this.MainTextBox = new CodeWalker.WinForms.TextBoxFix();
this.MainListView = new System.Windows.Forms.ListView();
this.ExportButton = new System.Windows.Forms.Button();
this.CopyClipboardButton = new System.Windows.Forms.Button();
this.XPosColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.YPosColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.ZPosColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Unk0Column = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Unk1Column = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Unk2Column = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.Unk3Column = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.SuspendLayout();
//
// CloseButton
//
this.CloseButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CloseButton.Location = new System.Drawing.Point(597, 389);
this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.CloseButton.Location = new System.Drawing.Point(417, 389);
this.CloseButton.Name = "CloseButton";
this.CloseButton.Size = new System.Drawing.Size(75, 23);
this.CloseButton.TabIndex = 3;
@ -44,39 +55,112 @@
this.CloseButton.UseVisualStyleBackColor = true;
this.CloseButton.Click += new System.EventHandler(this.CloseButton_Click);
//
// MainTextBox
// MainListView
//
this.MainTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.MainListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.MainTextBox.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.MainTextBox.HideSelection = false;
this.MainTextBox.Location = new System.Drawing.Point(12, 12);
this.MainTextBox.Multiline = true;
this.MainTextBox.Name = "MainTextBox";
this.MainTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.MainTextBox.Size = new System.Drawing.Size(660, 371);
this.MainTextBox.TabIndex = 2;
this.MainTextBox.WordWrap = false;
this.MainListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.XPosColumn,
this.YPosColumn,
this.ZPosColumn,
this.Unk0Column,
this.Unk1Column,
this.Unk2Column,
this.Unk3Column});
this.MainListView.HideSelection = false;
this.MainListView.Location = new System.Drawing.Point(13, 13);
this.MainListView.Name = "MainListView";
this.MainListView.Size = new System.Drawing.Size(479, 370);
this.MainListView.TabIndex = 4;
this.MainListView.UseCompatibleStateImageBehavior = false;
this.MainListView.View = System.Windows.Forms.View.Details;
//
// ExportButton
//
this.ExportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.ExportButton.Enabled = false;
this.ExportButton.Location = new System.Drawing.Point(336, 389);
this.ExportButton.Name = "ExportButton";
this.ExportButton.Size = new System.Drawing.Size(75, 23);
this.ExportButton.TabIndex = 5;
this.ExportButton.Text = "Export";
this.ExportButton.UseVisualStyleBackColor = true;
this.ExportButton.Click += new System.EventHandler(this.ExportButton_Click);
//
// CopyClipboardButton
//
this.CopyClipboardButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CopyClipboardButton.Enabled = false;
this.CopyClipboardButton.Location = new System.Drawing.Point(227, 389);
this.CopyClipboardButton.Name = "CopyClipboardButton";
this.CopyClipboardButton.Size = new System.Drawing.Size(103, 23);
this.CopyClipboardButton.TabIndex = 6;
this.CopyClipboardButton.Text = "Copy to clipboard";
this.CopyClipboardButton.UseVisualStyleBackColor = true;
this.CopyClipboardButton.Click += new System.EventHandler(this.CopyClipboardButton_Click);
//
// XPosColumn
//
this.XPosColumn.Text = "Position X";
this.XPosColumn.Width = 75;
//
// YPosColumn
//
this.YPosColumn.Text = "Position Y";
this.YPosColumn.Width = 75;
//
// ZPosColumn
//
this.ZPosColumn.Text = "Position Z";
this.ZPosColumn.Width = 75;
//
// Unk0Column
//
this.Unk0Column.Text = "Unk0";
//
// Unk1Column
//
this.Unk1Column.Text = "Unk1";
//
// Unk2Column
//
this.Unk2Column.Text = "Unk2";
//
// Unk3Column
//
this.Unk3Column.Text = "Unk3";
//
// YwrForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(684, 421);
this.CancelButton = this.CloseButton;
this.ClientSize = new System.Drawing.Size(504, 421);
this.Controls.Add(this.CopyClipboardButton);
this.Controls.Add(this.ExportButton);
this.Controls.Add(this.MainListView);
this.Controls.Add(this.CloseButton);
this.Controls.Add(this.MainTextBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "YwrForm";
this.Text = "Waypoint Records Viewer - CodeWalker by dexyfex";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button CloseButton;
private WinForms.TextBoxFix MainTextBox;
private System.Windows.Forms.ListView MainListView;
private System.Windows.Forms.Button ExportButton;
private System.Windows.Forms.Button CopyClipboardButton;
private System.Windows.Forms.ColumnHeader XPosColumn;
private System.Windows.Forms.ColumnHeader YPosColumn;
private System.Windows.Forms.ColumnHeader ZPosColumn;
private System.Windows.Forms.ColumnHeader Unk0Column;
private System.Windows.Forms.ColumnHeader Unk1Column;
private System.Windows.Forms.ColumnHeader Unk2Column;
private System.Windows.Forms.ColumnHeader Unk3Column;
private System.Windows.Forms.SaveFileDialog saveFileDialog;
}
}

View File

@ -1,5 +1,6 @@
using CodeWalker.GameFiles;
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -14,7 +15,7 @@ namespace CodeWalker.Forms
public partial class YwrForm : Form
{
private YwrFile ywr;
private string fileName;
public string FileName
{
@ -45,6 +46,7 @@ namespace CodeWalker.Forms
public void LoadYwr(YwrFile ywr)
{
this.ywr = ywr;
fileName = ywr?.Name;
if (string.IsNullOrEmpty(fileName))
{
@ -53,42 +55,78 @@ namespace CodeWalker.Forms
UpdateFormTitle();
StringBuilder sb = new StringBuilder();
if ((ywr != null) && (ywr.Waypoints != null) && (ywr.Waypoints.Entries != null))
{
sb.AppendLine("PositionX, PositionY, PositionZ, Unk0, Unk1, Unk2, Unk3");
foreach (var entry in ywr.Waypoints.Entries)
{
sb.Append(FloatUtil.ToString(entry.PositionX));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionY));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionZ));
sb.Append(", ");
sb.Append(entry.Unk0.ToString());
sb.Append(", ");
sb.Append(entry.Unk1.ToString());
sb.Append(", ");
sb.Append(entry.Unk2.ToString());
sb.Append(", ");
sb.Append(entry.Unk3.ToString());
sb.AppendLine();
}
LoadListView();
ExportButton.Enabled = true;
CopyClipboardButton.Enabled = true;
}
else
{
sb.AppendLine("Unable to load Waypoint Records.");
MessageBox.Show("Error", "Could not load ywr", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
MainTextBox.Text = sb.ToString();
}
private string GenerateText()
{
var sb = new StringBuilder();
sb.AppendLine("PositionX, PositionY, PositionZ, Unk0, Unk1, Unk2, Unk3");
foreach (var entry in ywr.Waypoints.Entries)
{
sb.Append(FloatUtil.ToString(entry.PositionX));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionY));
sb.Append(", ");
sb.Append(FloatUtil.ToString(entry.PositionZ));
sb.Append(", ");
sb.Append(entry.Unk0.ToString());
sb.Append(", ");
sb.Append(entry.Unk1.ToString());
sb.Append(", ");
sb.Append(entry.Unk2.ToString());
sb.Append(", ");
sb.Append(entry.Unk3.ToString());
sb.AppendLine();
}
return sb.ToString();
}
private void LoadListView()
{
MainListView.BeginUpdate();
MainListView.Items.Clear();
foreach (var entry in ywr.Waypoints.Entries)
{
string[] row =
{
FloatUtil.ToString(entry.PositionX),
FloatUtil.ToString(entry.PositionY),
FloatUtil.ToString(entry.PositionZ),
entry.Unk0.ToString(),
entry.Unk1.ToString(),
entry.Unk2.ToString(),
entry.Unk3.ToString()
};
MainListView.Items.Add(new ListViewItem(row));
}
MainListView.EndUpdate();
}
private void CloseButton_Click(object sender, EventArgs e)
{
Close();
}
private void CopyClipboardButton_Click(object sender, EventArgs e)
{
Clipboard.SetText(GenerateText());
}
private void ExportButton_Click(object sender, EventArgs e)
{
saveFileDialog.FileName = Path.GetFileNameWithoutExtension(fileName) + ".csv";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
File.WriteAllText(saveFileDialog.FileName, GenerateText());
}
}
}
}

View File

@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>