Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 29 additions & 29 deletions src/SerialLoops.Lib/Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public static bool BuildIterative(Project project, ConfigUser configUser, ILogge
{
bool result = DoBuild(project.IterativeDirectory, project, configUser, log, tracker);
CopyToArchivesToIterativeOriginal(Path.Combine(project.IterativeDirectory, "rom", "data"),
Path.Combine(project.IterativeDirectory, "original", "archives"), log, tracker);
Path.Combine(project.IterativeDirectory, "original", "archives"), project, log, tracker);
ReplicateProjectSettingsAndBanner(Path.Combine(project.IterativeDirectory, "rom"),
Path.Combine(project.BaseDirectory, "rom"), project.Name, log, tracker);
if (result)
Expand All @@ -38,7 +38,7 @@ public static bool BuildBase(Project project, ConfigUser configUser, ILogger log
{
bool result = DoBuild(project.BaseDirectory, project, configUser, log, tracker);
CopyToArchivesToIterativeOriginal(Path.Combine(project.BaseDirectory, "rom", "data"),
Path.Combine(project.IterativeDirectory, "original", "archives"), log, tracker);
Path.Combine(project.IterativeDirectory, "original", "archives"), project, log, tracker);
ReplicateProjectSettingsAndBanner(Path.Combine(project.BaseDirectory, "rom"),
Path.Combine(project.IterativeDirectory, "rom"), project.Name, log, tracker);
if (result)
Expand All @@ -52,7 +52,7 @@ private static void CleanIterative(Project project, ILogger log, IProgressTracke
{
string[] preservedFiles = [];
string[] cleanableFiles = Directory.GetFiles(Path.Combine(project.IterativeDirectory, "assets"), "*", SearchOption.AllDirectories);
tracker.Focus("Cleaning Iterative Directory", cleanableFiles.Length);
tracker.Focus("BuildCleaningIterativeDirectory", cleanableFiles.Length);
foreach (string file in cleanableFiles)
{
if (!preservedFiles.Contains(Path.GetFileName(file)))
Expand All @@ -79,22 +79,22 @@ private static bool DoBuild(string directory, Project project, ConfigUser config
commandsIncSb.AppendLine(command.GetMacro());
}

tracker.Focus("Loading Archives (dat.bin)", 3);
tracker.Focus(project.Localize("ProjectLoadLoadingDatBin"), 3);
var dat = ArchiveFile<DataFile>.FromFile(Path.Combine(directory, "original", "archives", "dat.bin"), log);
tracker.Finished++;
tracker.CurrentlyLoading = "Loading Archives (evt.bin)";
tracker.CurrentlyLoading = project.Localize("ProjectLoadLoadingEvtBin");
var evt = ArchiveFile<EventFile>.FromFile(Path.Combine(directory, "original", "archives", "evt.bin"), log);
tracker.Finished++;
tracker.CurrentlyLoading = "Loading Archives (grp.bin)";
tracker.CurrentlyLoading = project.Localize("ProjectLoadLoadingGrpBin");
var grp = ArchiveFile<GraphicsFile>.FromFile(Path.Combine(directory, "original", "archives", "grp.bin"), log);

if (dat is null || evt is null || grp is null)
{
log.LogError("One or more archives is null.");
log.LogError(project.Localize("ErrorArchivesNull"));
return false;
}

tracker.Focus("Writing Includes", 4);
tracker.Focus(project.Localize("BuildWritingIncludesProgressMessage"), 4);
try
{
File.WriteAllText(Path.Combine(directory, "COMMANDS.INC"), commandsIncSb.ToString());
Expand All @@ -104,14 +104,14 @@ private static bool DoBuild(string directory, Project project, ConfigUser config
}
catch (IOException exc)
{
log.LogException("Failed to write include files to disk.", exc);
log.LogException(project.Localize("ErrorFailedWritingIncludeFiles"), exc);
return false;
}
tracker.Finished += 4;

// Replace files
string[] files = Directory.GetFiles(Path.Combine(directory, "assets"), "*.*", SearchOption.AllDirectories);
tracker.Focus("Replacing Files", files.Length);
tracker.Focus(project.Localize("BuildReplacingFilesProgressMessage"), files.Length);
foreach (string file in files)
{
if (int.TryParse(Path.GetFileNameWithoutExtension(file).Split('_')[0], NumberStyles.HexNumber, new CultureInfo("en-US"), out int index) || Path.GetFileName(file).StartsWith("new", StringComparison.OrdinalIgnoreCase))
Expand Down Expand Up @@ -160,7 +160,7 @@ private static bool DoBuild(string directory, Project project, ConfigUser config
}
else
{
log.LogError(string.Format(project.Localize("Unsure what to do with file '{0}'"), Path.GetFileName(file)));
log.LogError(string.Format(project.Localize("BuildUnsureWhatToDoWithFileMessage"), Path.GetFileName(file)));
return false;
}
}
Expand All @@ -173,7 +173,7 @@ private static bool DoBuild(string directory, Project project, ConfigUser config
}

// Save files to disk
tracker.Focus("Writing Replaced Archives", 3);
tracker.Focus("BuildWritingReplacedArchivesProgressMessage", 3);
if (!IO.WriteBinaryFile(Path.Combine(directory, "rom", "data", "dat.bin"), dat?.GetBytes(), log))
{
return false;
Expand All @@ -190,36 +190,36 @@ private static bool DoBuild(string directory, Project project, ConfigUser config

// Save project file to disk
string ndsProjectFile = Path.Combine(directory, "rom", $"{project.Name}.json");
tracker.Focus("Writing NitroPacker Project File", 1);
tracker.Focus(project.Localize("BuildWritingNPProjectFile"), 1);
try
{
project.Settings.File.Serialize(ndsProjectFile);
}
catch (IOException exc)
{
log.LogException("Failed to write NitroPacker NDS project file to disk", exc);
log.LogException(project.Localize("ErrorFailedWritingNPProjectFile"), exc);
return false;
}
tracker.Finished++;

tracker.Focus("Packing ROM", 1);
tracker.Focus(project.Localize("BuildPackingRomProgressMessage"), 1);
try
{
NdsProjectFile.Pack(Path.Combine(project.MainDirectory, $"{project.Name}.nds"), ndsProjectFile);
}
catch (Exception exc)
{
log.LogException("NitroPacker failed to pack ROM with exception", exc);
log.LogException(project.Localize("BuildNitroPackerFailedPacking"), exc);
return false;
}
tracker.Finished++;

return true;
}

private static void CopyToArchivesToIterativeOriginal(string newDataDir, string iterativeOriginalDir, ILogger log, IProgressTracker tracker)
private static void CopyToArchivesToIterativeOriginal(string newDataDir, string iterativeOriginalDir, Project project, ILogger log, IProgressTracker tracker)
{
tracker.Focus("Copying Archives to Iterative Originals", 4);
tracker.Focus(project.Localize("BuildCopyingArchivesMessage"), 4);
try
{
File.Copy(Path.Combine(newDataDir, "dat.bin"), Path.Combine(iterativeOriginalDir, "dat.bin"), overwrite: true);
Expand All @@ -233,7 +233,7 @@ private static void CopyToArchivesToIterativeOriginal(string newDataDir, string
}
catch (IOException exc)
{
log.LogException($"Failed to copy newly built archives to the iterative originals directory", exc);
log.LogException(project.Localize("ErrorFailedCopyingArchivesToIterativeDir"), exc);
}
}

Expand Down Expand Up @@ -273,7 +273,7 @@ private static void ReplaceSingleGraphicsFile(ArchiveFile<GraphicsFile> grp, str
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing graphics file {0} with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingGraphicsFile"), index, filePath), ex);
}
}

Expand All @@ -290,7 +290,7 @@ private static void ReplaceSingleScreenGraphicsFile(ArchiveFile<GraphicsFile> gr
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing graphics file {0} with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingGraphicsFile"), index, filePath), ex);
}
}

Expand All @@ -309,7 +309,7 @@ private static void ReplaceSingleLayoutGraphicsFile(ArchiveFile<GraphicsFile> gr
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing graphics file {0} with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingGraphicsFile"), index, filePath), ex);
}
}

Expand All @@ -320,7 +320,7 @@ private static bool ReplaceSingleSourceFile(ArchiveFile<EventFile> archive, stri
(string objFile, string binFile) = CompileSourceFile(filePath, llvm, workingDirectory, localize, log);
if (!File.Exists(binFile))
{
log.LogError(string.Format(localize("Compiled file {0} does not exist!"), binFile));
log.LogError(string.Format(localize("BuildErrorCompiledFileNotExist"), binFile));
return false;
}
ReplaceSingleFile(archive, binFile, index, localize, log);
Expand All @@ -330,7 +330,7 @@ private static bool ReplaceSingleSourceFile(ArchiveFile<EventFile> archive, stri
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing source file {0} in evt.bin with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingEvtSourceFile"), index, filePath), ex);
return false;
}
}
Expand All @@ -341,7 +341,7 @@ private static bool ReplaceSingleSourceFile(ArchiveFile<DataFile> archive, strin
(string objFile, string binFile) = CompileSourceFile(filePath, llvm, workingDirectory, localize, log);
if (!File.Exists(binFile))
{
log.LogError(string.Format(localize("Compiled file {0} does not exist!"), binFile));
log.LogError(string.Format(localize("BuildErrorCompiledFileNotExist"), binFile));
return false;
}
ReplaceSingleFile(archive, binFile, index, localize, log);
Expand All @@ -351,7 +351,7 @@ private static bool ReplaceSingleSourceFile(ArchiveFile<DataFile> archive, strin
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing source file {0} in dat.bin with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingDatFile"), index, filePath), ex);
return false;
}
}
Expand Down Expand Up @@ -426,7 +426,7 @@ private static void ReplaceSingleFile(ArchiveFile<EventFile> archive, string fil
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing file {0} in evt.bin with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingEvtFile"), index, filePath), ex);
}
}
private static void ReplaceSingleFile(ArchiveFile<DataFile> archive, string filePath, int index, Func<string, string> localize, ILogger log)
Expand All @@ -440,7 +440,7 @@ private static void ReplaceSingleFile(ArchiveFile<DataFile> archive, string file
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing source file {0} in dat.bin with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingDatFile"), index, filePath), ex);
}
}
private static void ReplaceSingleBinaryFile(ArchiveFile<GraphicsFile> archive, string filePath, int index, Func<string, string> localize, ILogger log)
Expand All @@ -459,7 +459,7 @@ private static void ReplaceSingleBinaryFile(ArchiveFile<GraphicsFile> archive, s
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed replacing animation file {0} in grp.bin with file '{1}'"), index, filePath), ex);
log.LogException(string.Format(localize("ErrorFailedReplacingAnimationFile"), index, filePath), ex);
}
}
}
2 changes: 1 addition & 1 deletion src/SerialLoops.Lib/ConfigUser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ internal void InitializeScriptTemplates(Func<string, string> localize, ILogger l
}
catch (Exception ex)
{
log.LogException(string.Format(localize("Failed to deserialize script template file '{0}'"), scriptTemplateFile), ex);
log.LogException(string.Format(localize("ErrorFailedDeserializingScriptTemplate"), scriptTemplateFile), ex);
}
}
ScriptTemplates = new(templates);
Expand Down
2 changes: 1 addition & 1 deletion src/SerialLoops.Lib/Factories/ConfigFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public ConfigUser LoadConfig(Func<string, string> localize, ILogger log)
}
catch (JsonException exc)
{
log.LogException(localize("Exception occurred while parsing config.json!"), exc);
log.LogException(localize("ErrorParsingConfigJson"), exc);
ConfigUser defaultConfigUser = GetDefault(sysConfig, log);
defaultConfigUser.ValidateConfig(localize, log);
IO.WriteStringFile(configJson, JsonSerializer.Serialize(defaultConfigUser), log);
Expand Down
12 changes: 6 additions & 6 deletions src/SerialLoops.Lib/Flags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,35 +23,35 @@ public static string GetFlagNickname(int flag, Project project)
TopicItem topic = (TopicItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.Topic && ((TopicItem)i).TopicEntry.Id == flag + 1);
if (topic is not null)
{
return string.Format(project.Localize("{0} Obtained (F{1:D2})"), topic.DisplayName, flag);
return string.Format(project.Localize("FlagTopicObtained"), topic.DisplayName, flag);
}

TopicItem readTopic = (TopicItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.Topic &&
((((TopicItem)i).TopicEntry.Type == TopicType.Main && ((TopicItem)i).HiddenMainTopic is not null && ((TopicItem)i).TopicEntry.Id + 3463 == flag + 1) ||
(((TopicItem)i).TopicEntry.Type != TopicType.Main && ((TopicItem)i).TopicEntry.Id + 3451 == flag + 1)));
if (readTopic is not null)
{
return string.Format(project.Localize("{0} Watched in Extras (F{1:D2})"), readTopic.DisplayName, flag);
return string.Format(project.Localize("FlagTopicSceneWatchedInExtras"), readTopic.DisplayName, flag);
}

BackgroundMusicItem bgm = (BackgroundMusicItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.BGM && ((BackgroundMusicItem)i).Flag == flag + 1);
if (bgm is not null)
{
return string.Format(project.Localize("Listened to {0} (F{1:D2})"), bgm.DisplayName, flag);
return string.Format(project.Localize("FlagListenedToBgm"), bgm.DisplayName, flag);
}

BackgroundItem bg = (BackgroundItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.Background && ((BackgroundItem)i).Flag == flag + 1);
if (bg is not null && flag + 1 > 0)
{
return string.Format(project.Localize("{0} ({1}) Seen (F{2:D2})"), bg.CgName, bg.DisplayName, flag);
return string.Format(project.Localize("FlagCgSeen"), bg.CgName, bg.DisplayName, flag);
}

GroupSelectionItem groupSelection = (GroupSelectionItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.Group_Selection &&
((GroupSelectionItem)i).Selection.Activities.Any(a => a?.Routes.Any(r => r?.Flag == flag + 1) ?? false));
if (groupSelection is not null)
{
ScenarioRoute route = groupSelection.Selection.Activities.First(a => a?.Routes.Any(r => r.Flag == flag + 1) ?? false).Routes.First(r => r.Flag == flag + 1);
return string.Format(project.Localize("Route \"{0}\" Completed (F{1:D2})"), route.Title.GetSubstitutedString(project), flag);
return string.Format(project.Localize("FlagsRouteCompletedDescription"), route.Title.GetSubstitutedString(project), flag);
}

ScriptItem script = (ScriptItem)project.Items.FirstOrDefault(i => i.Type == ItemDescription.ItemType.Script && ((ScriptItem)i).StartReadFlag > 0 &&
Expand All @@ -64,7 +64,7 @@ public static string GetFlagNickname(int flag, Project project)
Tutorial tutorial = project.TutorialFile.Tutorials.FirstOrDefault(t => t.Id != 0 && t.Id == flag + 1);
if (tutorial is not null)
{
return string.Format(project.Localize("Tutorial {0} Completed (F{1:D2})"),
return string.Format(project.Localize("FlagsTutorialCompletedDescription"),
((ScriptItem)project.Items.First(i =>
i.Type == ItemDescription.ItemType.Script &&
((ScriptItem)i).Event.Index == tutorial.AssociatedScript)).DisplayName, flag);
Expand Down
2 changes: 1 addition & 1 deletion src/SerialLoops.Lib/Hacks/AsmHack.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ public void Revert(Project project, ILogger log)
// If there's at least one success, we assume that an older version of the hack was applied and we've now rolled it back
if (!oneSuccess)
{
log.LogError(string.Format(project.Localize("Failed to delete files for hack '{0}' -- this hack is likely applied in the ROM base and can't be disabled."), Name));
log.LogError(string.Format(project.Localize("ErrorFailedDeletingHackFiles"), Name));
IsApplied = true;
}
}
Expand Down
Loading
Loading