mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2026-05-14 18:25:15 +08:00
Projects code to support audio placements editing
This commit is contained in:
@@ -21,6 +21,7 @@ namespace CodeWalker.Project
|
||||
public List<string> YnvFilenames { get; set; } = new List<string>();
|
||||
public List<string> TrainsFilenames { get; set; } = new List<string>();
|
||||
public List<string> ScenarioFilenames { get; set; } = new List<string>();
|
||||
public List<string> AudioRelFilenames { get; set; } = new List<string>();
|
||||
|
||||
//fields not stored
|
||||
public string Filename { get; set; } //filename without path
|
||||
@@ -33,6 +34,7 @@ namespace CodeWalker.Project
|
||||
public List<YnvFile> YnvFiles { get; set; } = new List<YnvFile>();
|
||||
public List<TrainTrack> TrainsFiles { get; set; } = new List<TrainTrack>();
|
||||
public List<YmtFile> ScenarioFiles { get; set; } = new List<YmtFile>();
|
||||
public List<RelFile> AudioRelFiles { get; set; } = new List<RelFile>();
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +83,12 @@ namespace CodeWalker.Project
|
||||
Xml.AddChildWithInnerText(doc, scenarioselem, "Item", scenariofilename);
|
||||
}
|
||||
|
||||
var audiorelselem = Xml.AddChild(doc, projelem, "AudioRelFilenames");
|
||||
foreach (string audiorelfilename in AudioRelFilenames)
|
||||
{
|
||||
Xml.AddChildWithInnerText(doc, audiorelselem, "Item", audiorelfilename);
|
||||
}
|
||||
|
||||
doc.Save(Filepath);
|
||||
}
|
||||
|
||||
@@ -196,6 +204,22 @@ namespace CodeWalker.Project
|
||||
}
|
||||
|
||||
|
||||
|
||||
AudioRelFilenames.Clear();
|
||||
AudioRelFiles.Clear();
|
||||
var audiorelselem = Xml.GetChild(projelem, "AudioRelFilenames");
|
||||
if (audiorelselem != null)
|
||||
{
|
||||
foreach (var node in audiorelselem.SelectNodes("Item"))
|
||||
{
|
||||
XmlElement audiorelel = node as XmlElement;
|
||||
if (audiorelel != null)
|
||||
{
|
||||
AddAudioRelFile(audiorelel.InnerText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -225,6 +249,10 @@ namespace CodeWalker.Project
|
||||
{
|
||||
ScenarioFilenames[i] = GetUpdatedFilePath(ScenarioFilenames[i], oldprojpath);
|
||||
}
|
||||
for (int i = 0; i < AudioRelFilenames.Count; i++)
|
||||
{
|
||||
AudioRelFilenames[i] = GetUpdatedFilePath(AudioRelFilenames[i], oldprojpath);
|
||||
}
|
||||
}
|
||||
|
||||
public string GetUpdatedFilePath(string oldpath, string oldprojpath)
|
||||
@@ -697,5 +725,72 @@ namespace CodeWalker.Project
|
||||
}
|
||||
|
||||
|
||||
public RelFile AddAudioRelFile(string filename)
|
||||
{
|
||||
RelFile relfile = new RelFile();
|
||||
relfile.RpfFileEntry = new RpfResourceFileEntry();
|
||||
relfile.RpfFileEntry.Name = Path.GetFileName(filename);
|
||||
relfile.FilePath = GetFullFilePath(filename);
|
||||
relfile.Name = relfile.RpfFileEntry.Name;
|
||||
if (!AddAudioRelFile(relfile)) return null;
|
||||
return relfile;
|
||||
}
|
||||
public bool AddAudioRelFile(RelFile rel)
|
||||
{
|
||||
string relpath = GetRelativePath(rel.FilePath);
|
||||
if (string.IsNullOrEmpty(relpath)) relpath = rel.Name;
|
||||
if (AudioRelFilenames.Contains(relpath)) return false;
|
||||
AudioRelFilenames.Add(relpath);
|
||||
AudioRelFiles.Add(rel);
|
||||
return true;
|
||||
}
|
||||
public void RemoveAudioRelFile(RelFile rel)
|
||||
{
|
||||
if (rel == null) return;
|
||||
var relpath = GetRelativePath(rel.FilePath);
|
||||
if (string.IsNullOrEmpty(relpath)) relpath = rel.Name;
|
||||
AudioRelFiles.Remove(rel);
|
||||
AudioRelFilenames.Remove(relpath);
|
||||
HasChanged = true;
|
||||
}
|
||||
public bool ContainsAudioRel(string filename)
|
||||
{
|
||||
bool found = false;
|
||||
filename = filename.ToLowerInvariant();
|
||||
foreach (var audiorelfn in AudioRelFilenames)
|
||||
{
|
||||
if (audiorelfn == filename)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
public bool ContainsAudioRel(RelFile rel)
|
||||
{
|
||||
foreach (var f in AudioRelFiles)
|
||||
{
|
||||
if (f == rel) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool RenameAudioRel(string oldfilename, string newfilename)
|
||||
{
|
||||
oldfilename = oldfilename.ToLowerInvariant();
|
||||
newfilename = newfilename.ToLowerInvariant();
|
||||
for (int i = 0; i < AudioRelFilenames.Count; i++)
|
||||
{
|
||||
if (AudioRelFilenames[i] == oldfilename)
|
||||
{
|
||||
AudioRelFilenames[i] = newfilename;
|
||||
HasChanged = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user