diff --git a/World/CutsceneForm.cs b/World/CutsceneForm.cs
index 1f2910f..c1a3877 100644
--- a/World/CutsceneForm.cs
+++ b/World/CutsceneForm.cs
@@ -16,7 +16,6 @@ namespace CodeWalker.World
public partial class CutsceneForm : Form
{
private WorldForm WorldForm;
-
private GameFileCache GameFileCache;
private Cutscene Cutscene = null;
@@ -100,7 +99,7 @@ namespace CodeWalker.World
GameFileCache.RpfMan.LoadFile(cutFile, entry);
cutscene = new Cutscene();
- cutscene.Init(cutFile, GameFileCache);
+ cutscene.Init(cutFile, GameFileCache, WorldForm);
}
}
@@ -288,6 +287,7 @@ namespace CodeWalker.World
{
public CutFile CutFile { get; set; } = null;
private GameFileCache GameFileCache = null;
+ private WorldForm WorldForm = null;
public float[] CameraCutList { get; set; } = null;
public YcdFile[] Ycds { get; set; } = null;
@@ -317,10 +317,11 @@ namespace CodeWalker.World
- public void Init(CutFile cutFile, GameFileCache gfc)
+ public void Init(CutFile cutFile, GameFileCache gfc, WorldForm wf)
{
CutFile = cutFile;
GameFileCache = gfc;
+ WorldForm = wf;
var csf = cutFile?.CutsceneFile2;
if (csf == null) return;
@@ -734,6 +735,17 @@ namespace CodeWalker.World
if (args == null)
{ return; }
+ if (WorldForm != null)
+ {
+ var txt = args.cName.ToString();
+ var dur = args.fSubtitleDuration;
+
+ txt = txt.Replace("~z~", "");
+ txt = txt.Replace("~n~", "\n");
+ txt = txt.Replace("~c~", " - ");
+
+ WorldForm.ShowSubtitle(txt, dur);
+ }
}
private void PedVariation(CutEvent e)
{
diff --git a/WorldForm.Designer.cs b/WorldForm.Designer.cs
index 67715f5..e886aed 100644
--- a/WorldForm.Designer.cs
+++ b/WorldForm.Designer.cs
@@ -219,6 +219,7 @@ namespace CodeWalker
this.ToolsMenuRPFExplorer = new System.Windows.Forms.ToolStripMenuItem();
this.ToolsMenuSelectionInfo = new System.Windows.Forms.ToolStripMenuItem();
this.ToolsMenuProjectWindow = new System.Windows.Forms.ToolStripMenuItem();
+ this.ToolsMenuCutsceneViewer = new System.Windows.Forms.ToolStripMenuItem();
this.ToolsMenuWorldSearch = new System.Windows.Forms.ToolStripMenuItem();
this.ToolsMenuBinarySearch = new System.Windows.Forms.ToolStripMenuItem();
this.ToolsMenuJenkGen = new System.Windows.Forms.ToolStripMenuItem();
@@ -292,7 +293,8 @@ namespace CodeWalker
this.ToolbarCameraMapViewButton = new System.Windows.Forms.ToolStripMenuItem();
this.ToolbarCameraOrthographicButton = new System.Windows.Forms.ToolStripMenuItem();
this.ToolbarPanel = new System.Windows.Forms.Panel();
- this.ToolsMenuCutsceneViewer = new System.Windows.Forms.ToolStripMenuItem();
+ this.SubtitleLabel = new System.Windows.Forms.Label();
+ this.SubtitleTimer = new System.Windows.Forms.Timer(this.components);
this.StatusStrip.SuspendLayout();
this.ToolsPanel.SuspendLayout();
this.ToolsTabControl.SuspendLayout();
@@ -2681,12 +2683,12 @@ namespace CodeWalker
this.ToolsMenuExtractShaders,
this.ToolsMenuOptions});
this.ToolsMenu.Name = "ToolsMenu";
- this.ToolsMenu.Size = new System.Drawing.Size(181, 334);
+ this.ToolsMenu.Size = new System.Drawing.Size(170, 312);
//
// ToolsMenuRPFBrowser
//
this.ToolsMenuRPFBrowser.Name = "ToolsMenuRPFBrowser";
- this.ToolsMenuRPFBrowser.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuRPFBrowser.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuRPFBrowser.Text = "RPF Browser...";
this.ToolsMenuRPFBrowser.Visible = false;
this.ToolsMenuRPFBrowser.Click += new System.EventHandler(this.ToolsMenuRPFBrowser_Click);
@@ -2694,14 +2696,14 @@ namespace CodeWalker
// ToolsMenuRPFExplorer
//
this.ToolsMenuRPFExplorer.Name = "ToolsMenuRPFExplorer";
- this.ToolsMenuRPFExplorer.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuRPFExplorer.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuRPFExplorer.Text = "RPF Explorer...";
this.ToolsMenuRPFExplorer.Click += new System.EventHandler(this.ToolsMenuRPFExplorer_Click);
//
// ToolsMenuSelectionInfo
//
this.ToolsMenuSelectionInfo.Name = "ToolsMenuSelectionInfo";
- this.ToolsMenuSelectionInfo.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuSelectionInfo.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuSelectionInfo.Text = "Selection info...";
this.ToolsMenuSelectionInfo.Click += new System.EventHandler(this.ToolsMenuSelectionInfo_Click);
//
@@ -2709,14 +2711,22 @@ namespace CodeWalker
//
this.ToolsMenuProjectWindow.Enabled = false;
this.ToolsMenuProjectWindow.Name = "ToolsMenuProjectWindow";
- this.ToolsMenuProjectWindow.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuProjectWindow.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuProjectWindow.Text = "Project window...";
this.ToolsMenuProjectWindow.Click += new System.EventHandler(this.ToolsMenuProjectWindow_Click);
//
+ // ToolsMenuCutsceneViewer
+ //
+ this.ToolsMenuCutsceneViewer.Enabled = false;
+ this.ToolsMenuCutsceneViewer.Name = "ToolsMenuCutsceneViewer";
+ this.ToolsMenuCutsceneViewer.Size = new System.Drawing.Size(169, 22);
+ this.ToolsMenuCutsceneViewer.Text = "Cutscene viewer...";
+ this.ToolsMenuCutsceneViewer.Click += new System.EventHandler(this.ToolsMenuCutsceneViewer_Click);
+ //
// ToolsMenuWorldSearch
//
this.ToolsMenuWorldSearch.Name = "ToolsMenuWorldSearch";
- this.ToolsMenuWorldSearch.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuWorldSearch.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuWorldSearch.Text = "World search...";
this.ToolsMenuWorldSearch.Click += new System.EventHandler(this.ToolsMenuWorldSearch_Click);
//
@@ -2724,14 +2734,14 @@ namespace CodeWalker
//
this.ToolsMenuBinarySearch.Enabled = false;
this.ToolsMenuBinarySearch.Name = "ToolsMenuBinarySearch";
- this.ToolsMenuBinarySearch.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuBinarySearch.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuBinarySearch.Text = "Binary search...";
this.ToolsMenuBinarySearch.Click += new System.EventHandler(this.ToolsMenuBinarySearch_Click);
//
// ToolsMenuJenkGen
//
this.ToolsMenuJenkGen.Name = "ToolsMenuJenkGen";
- this.ToolsMenuJenkGen.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuJenkGen.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuJenkGen.Text = "JenkGen...";
this.ToolsMenuJenkGen.Click += new System.EventHandler(this.ToolsMenuJenkGen_Click);
//
@@ -2739,42 +2749,42 @@ namespace CodeWalker
//
this.ToolsMenuJenkInd.Enabled = false;
this.ToolsMenuJenkInd.Name = "ToolsMenuJenkInd";
- this.ToolsMenuJenkInd.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuJenkInd.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuJenkInd.Text = "JenkInd...";
this.ToolsMenuJenkInd.Click += new System.EventHandler(this.ToolsMenuJenkInd_Click);
//
// ToolsMenuExtractScripts
//
this.ToolsMenuExtractScripts.Name = "ToolsMenuExtractScripts";
- this.ToolsMenuExtractScripts.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuExtractScripts.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuExtractScripts.Text = "Extract scripts...";
this.ToolsMenuExtractScripts.Click += new System.EventHandler(this.ToolsMenuExtractScripts_Click);
//
// ToolsMenuExtractTextures
//
this.ToolsMenuExtractTextures.Name = "ToolsMenuExtractTextures";
- this.ToolsMenuExtractTextures.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuExtractTextures.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuExtractTextures.Text = "Extract textures...";
this.ToolsMenuExtractTextures.Click += new System.EventHandler(this.ToolsMenuExtractTextures_Click);
//
// ToolsMenuExtractRawFiles
//
this.ToolsMenuExtractRawFiles.Name = "ToolsMenuExtractRawFiles";
- this.ToolsMenuExtractRawFiles.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuExtractRawFiles.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuExtractRawFiles.Text = "Extract raw files...";
this.ToolsMenuExtractRawFiles.Click += new System.EventHandler(this.ToolsMenuExtractRawFiles_Click);
//
// ToolsMenuExtractShaders
//
this.ToolsMenuExtractShaders.Name = "ToolsMenuExtractShaders";
- this.ToolsMenuExtractShaders.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuExtractShaders.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuExtractShaders.Text = "Extract shaders...";
this.ToolsMenuExtractShaders.Click += new System.EventHandler(this.ToolsMenuExtractShaders_Click);
//
// ToolsMenuOptions
//
this.ToolsMenuOptions.Name = "ToolsMenuOptions";
- this.ToolsMenuOptions.Size = new System.Drawing.Size(180, 22);
+ this.ToolsMenuOptions.Size = new System.Drawing.Size(169, 22);
this.ToolsMenuOptions.Text = "Options...";
this.ToolsMenuOptions.Click += new System.EventHandler(this.ToolsMenuOptions_Click);
//
@@ -3383,13 +3393,25 @@ namespace CodeWalker
this.ToolbarPanel.TabIndex = 7;
this.ToolbarPanel.Visible = false;
//
- // ToolsMenuCutsceneViewer
+ // SubtitleLabel
//
- this.ToolsMenuCutsceneViewer.Enabled = false;
- this.ToolsMenuCutsceneViewer.Name = "ToolsMenuCutsceneViewer";
- this.ToolsMenuCutsceneViewer.Size = new System.Drawing.Size(180, 22);
- this.ToolsMenuCutsceneViewer.Text = "Cutscene viewer...";
- this.ToolsMenuCutsceneViewer.Click += new System.EventHandler(this.ToolsMenuCutsceneViewer_Click);
+ this.SubtitleLabel.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
+ this.SubtitleLabel.AutoSize = true;
+ this.SubtitleLabel.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.SubtitleLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.SubtitleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.SubtitleLabel.Location = new System.Drawing.Point(455, 555);
+ this.SubtitleLabel.Name = "SubtitleLabel";
+ this.SubtitleLabel.Size = new System.Drawing.Size(84, 18);
+ this.SubtitleLabel.TabIndex = 8;
+ this.SubtitleLabel.Text = "Test Subtitle";
+ this.SubtitleLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.SubtitleLabel.Visible = false;
+ this.SubtitleLabel.SizeChanged += new System.EventHandler(this.SubtitleLabel_SizeChanged);
+ //
+ // SubtitleTimer
+ //
+ this.SubtitleTimer.Tick += new System.EventHandler(this.SubtitleTimer_Tick);
//
// WorldForm
//
@@ -3403,6 +3425,7 @@ namespace CodeWalker
this.Controls.Add(this.ToolsPanel);
this.Controls.Add(this.StatusStrip);
this.Controls.Add(this.ToolsPanelShowButton);
+ this.Controls.Add(this.SubtitleLabel);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.Name = "WorldForm";
@@ -3742,5 +3765,7 @@ namespace CodeWalker
private System.Windows.Forms.NumericUpDown NearClipUpDown;
private System.Windows.Forms.Label label31;
private System.Windows.Forms.ToolStripMenuItem ToolsMenuCutsceneViewer;
+ private System.Windows.Forms.Label SubtitleLabel;
+ private System.Windows.Forms.Timer SubtitleTimer;
}
}
\ No newline at end of file
diff --git a/WorldForm.cs b/WorldForm.cs
index fa79861..72e3ee9 100644
--- a/WorldForm.cs
+++ b/WorldForm.cs
@@ -6111,6 +6111,35 @@ namespace CodeWalker
}
+
+
+ public void ShowSubtitle(string text, float duration)
+ {
+ if (InvokeRequired)
+ {
+ try
+ {
+ BeginInvoke(new Action(() => { ShowSubtitle(text, duration); }));
+ }
+ catch { }
+ return;
+ }
+
+ SubtitleLabel.Text = text;
+ SubtitleLabel.Visible = true;
+ SubtitleTimer.Interval = (int)(duration * 1000.0f);
+ SubtitleTimer.Enabled = true;
+
+ }
+
+
+
+
+
+
+
+
+
private void StatsUpdateTimer_Tick(object sender, EventArgs e)
{
@@ -7890,6 +7919,17 @@ namespace CodeWalker
var statsForm = new StatisticsForm(this);
statsForm.Show(this);
}
+
+ private void SubtitleLabel_SizeChanged(object sender, EventArgs e)
+ {
+ SubtitleLabel.Left = (ClientSize.Width - SubtitleLabel.Size.Width) / 2; //keep subtitle label centered
+ }
+
+ private void SubtitleTimer_Tick(object sender, EventArgs e)
+ {
+ SubtitleTimer.Enabled = false;
+ SubtitleLabel.Visible = false;
+ }
}
public enum WorldControlMode
diff --git a/WorldForm.resx b/WorldForm.resx
index fe93ed0..70dd9c9 100644
--- a/WorldForm.resx
+++ b/WorldForm.resx
@@ -437,6 +437,9 @@ ufo
5ZF+uwdZKEYtmuBGFSIXhtejBe5PHX7dxL+qKPoEppRHcXOtiDsAAAAASUVORK5CYII=
+
+ 652, 17
+
AAABAAMAICAAAAAAGACoDAAANgAAABAQAAAAABgAaAMAAN4MAABAQAAAAAAYACgyAABGEAAAKAAAACAA