Skip to content

Commit

Permalink
Narikiri Support
Browse files Browse the repository at this point in the history
  • Loading branch information
Mc-muffin committed Sep 20, 2024
1 parent b396687 commit ec9501c
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 30 deletions.
16 changes: 8 additions & 8 deletions TranslationApp/fMain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ private void LoadLastFolder_Click(object sender, EventArgs e)

private void openFolderToolStripMenuItem_Click(object sender, EventArgs e)
{
string p = TryLoadFolder(GetFolderPath());
string p = TryLoadFolder(GetFolderPath(), false);
if (p != null)
{
UpdateTitle($"Single folder {Path.GetDirectoryName(p)}");
Expand Down Expand Up @@ -609,7 +609,7 @@ public string GetFolderPath()
private void LoadProjectFolder(string gameName, string path)
{
lbEntries.BorderStyle = BorderStyle.FixedSingle;
var loadedFolder = TryLoadFolder(Path.Combine(GetFolderPath(), path));
var loadedFolder = TryLoadFolder(Path.Combine(GetFolderPath(), path), gameName.Equals("NDX"));
gameConfig = config.GamesConfigList.Where(x => x.Game == gameName).FirstOrDefault();

if (gameConfig == null)
Expand All @@ -636,19 +636,19 @@ private void LoadLastFolder(string gameName)
var myConfig = config.GetGameConfig(gameName);
if (myConfig != null)
{
TryLoadFolder(config.GetGameConfig(gameName).FolderPath);
TryLoadFolder(config.GetGameConfig(gameName).FolderPath, gameName.Equals("NDX"));
gameConfig = myConfig;
UpdateOptionsVisibility();
}
else
MessageBox.Show("The game you are trying to load is not inside the configuration file,\nplease load a new folder.");
}

public string TryLoadFolder(string path)
public string TryLoadFolder(string path, bool legacy)
{
if (Directory.Exists(path))
{
LoadFolder(path);
LoadFolder(path, legacy);
return path;
}

Expand All @@ -658,7 +658,7 @@ public string TryLoadFolder(string path)
return null;
}

private void LoadFolder(string path)
private void LoadFolder(string path, bool legacy)
{
DisableEventHandlers();

Expand All @@ -668,7 +668,7 @@ private void LoadFolder(string path)
folderIncluded.Add(new DirectoryInfo(p).Name);
}

Project = new TranslationProject(path, folderIncluded);
Project = new TranslationProject(path, folderIncluded, legacy);

if (Project.CurrentFolder == null)
{
Expand Down Expand Up @@ -1365,7 +1365,7 @@ private void reloadAllToolStripMenuItem_Click(object sender, EventArgs e)
var selectedFile = cbFileList.Text;
var selectedSection = cbSections.Text;
var selectedLanguage = cbLanguage.Text;
LoadFolder(Project.ProjectPath);
LoadFolder(Project.ProjectPath, Project.isLegacy);
DisableEventHandlers();
Project.SetCurrentFolder(selectedFileType);
cbFileType.Text = selectedFileType;
Expand Down
6 changes: 4 additions & 2 deletions TranslationLib/TranslationProject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,21 @@ public class TranslationProject
public string ProjectPath { get; }
public List<XMLFolder> XmlFolders { get; set; }
public XMLFolder CurrentFolder { get; set; }
public bool isLegacy { get; set; }

public TranslationProject(string basePath, List<string> folderIncluded)
public TranslationProject(string basePath, List<string> folderIncluded, bool legacy)
{
ProjectPath = basePath;
XmlFolders = new List<XMLFolder>();
isLegacy = legacy;

foreach (var folder in folderIncluded)
{
string fullPath = Path.Combine(basePath, folder, "");
var files = Directory.GetFiles(fullPath);
if (files.Count() != 0 && files.Any(x => x.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)))
{
XmlFolders.Add(new XMLFolder(folder, fullPath));
XmlFolders.Add(new XMLFolder(folder, fullPath, legacy));
}
}

Expand Down
66 changes: 47 additions & 19 deletions TranslationLib/XMLFile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class XMLFile
public List<XMLSection> Sections = new List<XMLSection>();
public List<XMLEntry> Speakers = null;
public XMLSection CurrentSection { get; set; }
public bool isLegacy { get; set; }

public XMLFile()
{
Expand Down Expand Up @@ -218,7 +219,7 @@ private XElement GetXmlSpeakerElement(List<XMLEntry> SpeakerList)
new XElement("Section", "Speaker"),
};

speakerEntry.AddRange( SpeakerList.Select(entry => GetXMLEntryElement(entry)).ToList());
speakerEntry.AddRange(SpeakerList.Select(entry => GetXMLEntryElement(entry, isLegacy)).ToList());

return new XElement("Speakers", speakerEntry);
}
Expand All @@ -229,19 +230,21 @@ private XElement GetXmlSectionElement(XMLSection section)
new XElement("Section", section.Name),
};

sectionEntry.AddRange(section.Entries.Select(entry => GetXMLEntryElement(entry)).ToList());
sectionEntry.AddRange(section.Entries.Select(entry => GetXMLEntryElement(entry, isLegacy)).ToList());

return new XElement("Strings", sectionEntry);
}

private static XElement GetXMLEntryElement(XMLEntry entry)
private static XElement GetXMLEntryElement(XMLEntry entry, bool isLegacy)
{
var elemenId = entry.Id == null ? null : new XElement("Id", entry.Id);
var bubbleId = entry.BubbleId == null ? null : new XElement("BubbleId", entry.BubbleId);
var subId = entry.BubbleId == null ? null : new XElement("SubId", entry.SubId);
var speakerId = entry.SpeakerId == null ? null : new XElement("SpeakerId", string.Join(",",entry.SpeakerId));
var speakerId = entry.SpeakerId == null ? null : new XElement("SpeakerId", string.Join(",", entry.SpeakerId));
var voiceId = entry.VoiceId == null ? null : new XElement("VoiceId", entry.VoiceId);
var maxLength = entry.MaxLength == null ? null : new XElement("MaxLength", entry.MaxLength);
var structId = entry.StructId == null ? null : new XElement("StructId", entry.StructId);
var unknownPointer = entry.UnknownPointer == null ? null : new XElement("UnknownPointer", entry.UnknownPointer);
XElement embedOffset;

if (entry.EmbedOffset)
Expand All @@ -252,25 +255,50 @@ private static XElement GetXMLEntryElement(XMLEntry entry)
new XElement("lo", entry.lo),
};
embedOffset = new XElement("EmbedOffset", sectionEntry);
} else
}
else
{
embedOffset = null;
}
return new XElement("Entry",
new XElement("PointerOffset", entry.PointerOffset),
embedOffset,
maxLength,
voiceId,
new XElement("JapaneseText", entry.JapaneseText),
new XElement("EnglishText", entry.EnglishText),
new XElement("Notes", string.IsNullOrEmpty(entry.Notes) ? null : entry.Notes),
speakerId,
elemenId,
bubbleId,
subId,
new XElement("Status", entry.Status)

);
if (isLegacy)
{
return new XElement("Entry",
new XElement("PointerOffset", entry.PointerOffset),
embedOffset,
maxLength,
voiceId,
new XElement("JapaneseText", entry.JapaneseText),
new XElement("EnglishText", entry.EnglishText),
new XElement("Notes", string.IsNullOrEmpty(entry.Notes) ? null : entry.Notes),
elemenId,
structId,
speakerId,
unknownPointer,
bubbleId,
subId,
new XElement("Status", entry.Status)
);
}
else
{

return new XElement("Entry",
new XElement("PointerOffset", entry.PointerOffset),
embedOffset,
maxLength,
voiceId,
new XElement("JapaneseText", entry.JapaneseText),
new XElement("EnglishText", entry.EnglishText),
new XElement("Notes", string.IsNullOrEmpty(entry.Notes) ? null : entry.Notes),
speakerId,
elemenId,
bubbleId,
subId,
new XElement("Status", entry.Status)

);
}
}


Expand Down
6 changes: 5 additions & 1 deletion TranslationLib/XMLFolder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@ public class XMLFolder
public List<XMLFile> XMLFiles { get; set; }
public Dictionary<string, TranslationEntry> Translations { get; set; }
public XMLFile CurrentFile { get; set; }
public bool isLegacy { get; set; }

public XMLFolder(string name, string path)
public XMLFolder(string name, string path, bool legacy)
{
Name = name;
FolderPath = path;
Translations = new Dictionary<string, TranslationEntry>();
XMLFiles = new List<XMLFile>();
CurrentFile = new XMLFile();
isLegacy = legacy;
}

public void LoadXMLs()
Expand All @@ -46,6 +48,7 @@ public XMLFile LoadXML(string xmlpath)
var document = XDocument.Load(xmlpath, LoadOptions.PreserveWhitespace);
XMLFile.FileType = document.Root.Name.ToString();
XMLFile.FriendlyName = document.Root.Element("FriendlyName")?.Value;
XMLFile.isLegacy = isLegacy;
var XMLSections = document.Root.Elements("Strings");

// Add a dummy "Everyting" section
Expand Down Expand Up @@ -148,6 +151,7 @@ private XMLEntry ExtractXMLEntry(XElement element)
SpeakerId = ExtractNullableIntArray(element.Element("SpeakerId")),
BubbleId = ExtractNullableInt(element.Element("BubbleId")),
SubId = ExtractNullableInt(element.Element("SubId")),
StructId = ExtractNullableInt(element.Element("StructId")),
UnknownPointer = ExtractNullableInt(element.Element("UnknownPointer")),
MaxLength = ExtractNullableInt(element.Element("MaxLength"))
};
Expand Down

0 comments on commit ec9501c

Please sign in to comment.