Unhardcoded engine credits file

Moved the file name/path to ModCredits, read from mod.yaml
This commit is contained in:
penev92
2021-10-12 13:14:55 +03:00
committed by Matthias Mailänder
parent 9b1cec7712
commit a71da0a25a
2 changed files with 30 additions and 25 deletions

View File

@@ -15,7 +15,8 @@ namespace OpenRA
{
public readonly string ModTabTitle = "Game";
[FieldLoader.Require]
public readonly string ModCreditsFile = null;
public readonly string EngineCreditsFile = "^EngineDir|AUTHORS";
}
}

View File

@@ -19,19 +19,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
public class CreditsLogic : ChromeLogic
{
readonly ModData modData;
readonly ScrollPanelWidget scrollPanel;
readonly LabelWidget template;
bool showModTab;
bool showEngineTab;
readonly IEnumerable<string> modLines;
readonly IEnumerable<string> engineLines;
bool showMod = false;
[ObjectCreator.UseCtor]
public CreditsLogic(Widget widget, ModData modData, Action onExit)
{
this.modData = modData;
var panel = widget.Get("CREDITS_PANEL");
panel.Get<ButtonWidget>("BACK_BUTTON").OnClick = () =>
@@ -40,42 +38,48 @@ namespace OpenRA.Mods.Common.Widgets.Logic
onExit();
};
engineLines = ParseLines(File.OpenRead(Platform.ResolvePath("./AUTHORS")));
var modCredits = modData.Manifest.Get<ModCredits>();
var tabContainer = panel.Get("TAB_CONTAINER");
if (modCredits.ModCreditsFile != null)
{
showModTab = true;
modLines = ParseLines(modData.DefaultFileSystem.Open(modCredits.ModCreditsFile));
var modTab = tabContainer.Get<ButtonWidget>("MOD_TAB");
modTab.IsHighlighted = () => showMod;
modTab.IsHighlighted = () => showModTab;
modTab.OnClick = () => ShowCredits(true);
modTab.GetText = () => modCredits.ModTabTitle;
}
if (modCredits.EngineCreditsFile != null)
{
showEngineTab = true;
engineLines = ParseLines(File.OpenRead(Platform.ResolvePath(modCredits.EngineCreditsFile)));
var engineTab = tabContainer.Get<ButtonWidget>("ENGINE_TAB");
engineTab.IsHighlighted = () => !showMod;
engineTab.IsHighlighted = () => !showModTab;
engineTab.OnClick = () => ShowCredits(false);
}
scrollPanel = panel.Get<ScrollPanelWidget>("CREDITS_DISPLAY");
template = scrollPanel.Get<LabelWidget>("CREDITS_TEMPLATE");
var hasModCredits = modData.Manifest.Contains<ModCredits>();
if (hasModCredits)
{
var modCredits = modData.Manifest.Get<ModCredits>();
modLines = ParseLines(modData.DefaultFileSystem.Open(modCredits.ModCreditsFile));
modTab.GetText = () => modCredits.ModTabTitle;
// Make space to show the tabs
tabContainer.IsVisible = () => true;
tabContainer.IsVisible = () => showModTab && showEngineTab;
if (showModTab && showEngineTab)
{
scrollPanel.Bounds.Y += tabContainer.Bounds.Height;
scrollPanel.Bounds.Height -= tabContainer.Bounds.Height;
}
ShowCredits(hasModCredits);
ShowCredits(showModTab);
}
void ShowCredits(bool modCredits)
{
showMod = modCredits;
scrollPanel.RemoveChildren();
foreach (var line in showMod ? modLines : engineLines)
foreach (var line in modCredits ? modLines : engineLines)
{
var label = template.Clone() as LabelWidget;
label.GetText = () => line;