Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Menu Variants is now compatible with Fortrise new version! #16

Merged
merged 4 commits into from
Jan 11, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
2 changes: 2 additions & 0 deletions MenuVariantsMod/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.idea
Folder.DotSettings.user
28 changes: 6 additions & 22 deletions MenuVariantsMod/BezelLoad.cs
Original file line number Diff line number Diff line change
@@ -1,23 +1,14 @@
using Monocle;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using TowerFall;
using FortRise;
using MonoMod.ModInterop;
using System.Diagnostics;

namespace MenuVariantsMod
{
public class BezelLoad
{
public static List<CustomBezel> BezelList;
public static List<CustomBezel> BezelList = new();
public static List<string> BezelNames = new List<string>();
public static void Load() {
public static void Load(FortContent content) {
var _separator = Path.DirectorySeparatorChar.ToString();
var _customLogos = "Content" + _separator + "Mod" + _separator + "CustomBezels" + _separator;
string[] directories = Directory.GetDirectories(_customLogos);
Expand All @@ -28,24 +19,17 @@ public static void Load() {
{
Console.WriteLine(text);
var text2 = text.Replace("Content" + _separator, "");
Atlas atlas = new Atlas(text2 + _separator + "atlas.xml", text2 + _separator + "atlas.png", true);
Atlas atlas = AtlasExt.CreateAtlas(content, text2 + _separator + "atlas.xml", text2 + _separator + "atlas.png", true, ContentAccess.Content);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should remove the 4th argument since this signature is obsolete and will be removed in 5.0

var BezelData = Calc.LoadXML(text + _separator + "BezelData.xml");
var TrueBezelData = BezelData["BezelData"];
Console.WriteLine(atlas);
if (atlas == null)
{
Debugger.Break();
}
//if (TrueLogoData != null)
//{
CustomBezel BezelCustomData = new CustomBezel(TrueBezelData, atlas);
//if (logoCustomData != null)
//{
BezelList.Add(BezelCustomData);
BezelNames.Add(TrueBezelData.ChildText("Name"));
// }

//}
CustomBezel BezelCustomData = new CustomBezel(TrueBezelData, atlas);
BezelList.Add(BezelCustomData);
BezelNames.Add(TrueBezelData.ChildText("Name"));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<BezelData>
<Name>ASCENSION</Name>
<Left>aspectBarLeft</Left>
<Right>aspectBarRight</Right>
</BezelData>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions MenuVariantsMod/Content/CustomBezels/ClassicBlue/atlas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<TextureAtlas imagePath="atlas.png">
<SubTexture name="aspectBarLeft" x="1" y="0" width="55" height="240"/>
<SubTexture name="aspectBarRight" x="64" y="0" width="55" height="240"/>
</TextureAtlas>
18 changes: 18 additions & 0 deletions MenuVariantsMod/Content/CustomLogos/TowerSus/LogoData.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<LogoData>
<Name>TOWERSUS</Name>
<VanillaAscension>True</VanillaAscension>
<VanillaAscensionCore>True</VanillaAscensionCore>
<VanillaBg>False</VanillaBg>
<VanillaArrow>True</VanillaArrow>
<VanillaTitle>False</VanillaTitle>

<Title>title/TowerSus</Title>
<TitleLight>title/TowerSusLight</TitleLight>
<Ascension>title/ascension</Ascension>
<Bg>title/TowerSusBg</Bg>
<Arrow>title/bigArrow</Arrow>
<AscensionCore>title/ascensionCoreAnimation</AscensionCore>

<BgOrigin x="148" y = "64"/>
</LogoData>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions MenuVariantsMod/Content/CustomLogos/TowerSus/atlas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<TextureAtlas imagePath="atlas.png">
<SubTexture name="title/TowerSus" x="14" y="275" width="256" height="78"/>
<SubTexture name="title/TowerSusLight" x="14" y="197" width="256" height="78"/>
<SubTexture name="title/TowerSusBg" x="11" y="9" width="272" height="125"/>
</TextureAtlas>
10 changes: 0 additions & 10 deletions MenuVariantsMod/CustomBezel.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
using Monocle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Xna.Framework;

namespace MenuVariantsMod
{
public class CustomBezel //Just the class for BEZELS....
{

public string Name;
public string Left;
public string Right;
Expand All @@ -26,6 +17,5 @@ public CustomBezel(XmlElement xml, Atlas atlas)
Right = xml.ChildText("Right", defaultValue: "Name Not Defined");
Atlas = atlas;
}

}
}
10 changes: 1 addition & 9 deletions MenuVariantsMod/CustomLogo.cs
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
using Monocle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using Microsoft.Xna.Framework;

namespace MenuVariantsMod
{
public class CustomLogo //Just the class for logos....
public class CustomLogo
{
public bool VanillaBg;
public bool VanillaArrow;
Expand Down Expand Up @@ -45,6 +38,5 @@ public CustomLogo(XmlElement xml, Atlas atlas)
Atlas = atlas;
BgOrigin = xml.ChildPosition("BgOrigin", defaultValue: new Vector2(148f, 74f));
}

}
}
102 changes: 53 additions & 49 deletions MenuVariantsMod/ExampleModModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
using System.Diagnostics;
using System.Drawing;
using MonoMod.Utils;
using OnTower = IL.FortRise.OnTower;
using TFGame = On.TowerFall.TFGame;

namespace MenuVariantsMod;

Expand All @@ -20,7 +22,7 @@ public class MenuVariantModModule : FortModule

public static MenuVariantModModule Instance;
public static List<bool> Vanilla;
public static int SettingLogoCount;
public static FortContent s_Content;

public static List<string> MenuVariantNames = new List<string>();
public MenuVariantModModule()
Expand All @@ -30,72 +32,74 @@ public MenuVariantModModule()
public override Type SettingsType => typeof(ModSettings);
public static ModSettings Settings => (ModSettings)Instance.InternalSettings;

public override void LoadContent()
{

}

public override void Load()
{
var _separator = Path.DirectorySeparatorChar.ToString();
var _customLogos = "Content" + _separator + "Mod" + _separator + "CustomLogos" + _separator;
Directory.CreateDirectory(_customLogos);
MenuVariantModModule.MenuVariantNames.Add("ASCENSION");
MenuVariantModModule.MenuVariantNames.Add("DARK WORLD");
LogoLoad.Load();
BezelLoad.Load();
Console.WriteLine("Custom Logos are here");
On.TowerFall.Logo.ctor += MyLogo.ctor;
On.TowerFall.TFGame.LoadContent += MyBezel.MyLoad;
On.TowerFall.TFGame.LoadContent += TFGameOnLoadContent;
typeof(ModExports).ModInterop();
}

public override void LoadContent()
{
s_Content = Content;

string _separator = Path.DirectorySeparatorChar.ToString();
string _customLogos = "Mods" + _separator + "MenuVariantsMod" + _separator + "Content" + _separator + "CustomLogos" + _separator ;
Directory.CreateDirectory(_customLogos);

string _customBezels = "Mods" + _separator + "MenuVariantsMod" + _separator + "Content" + _separator + "CustomBezels" + _separator;
Directory.CreateDirectory(_customBezels);

MenuVariantNames.Add("ASCENSION");
MenuVariantNames.Add("DARK WORLD");

LogoLoad.Load(Content);
BezelLoad.Load(Content);

MyBezel.MyLoad();
}

public override void Unload()
{
On.TowerFall.Logo.ctor -= MyLogo.ctor;
On.TowerFall.TFGame.LoadContent -= MyBezel.MyLoad;
On.TowerFall.TFGame.LoadContent -= TFGameOnLoadContent;
}
public override void CreateModSettings(List<OptionsButton> optionList)

private void TFGameOnLoadContent(TFGame.orig_LoadContent orig, TowerFall.TFGame self)
{
var optionButton = new OptionsButton("TITLE MODE");
optionButton.SetCallbacks(
()=> {optionButton.State = SettingName();},
()=> {Settings.MenuVariant--; SettingName(); },
()=>{Settings.MenuVariant++; SettingName(); },
null
);
optionList.Add(optionButton);
var optionBezelButton = new OptionsButton("BEZEL MODE");
optionBezelButton.SetCallbacks(
() => { optionBezelButton.State = SideSettingName(); },
() => { Settings.BezelVariant--; SideSettingName(); },
() => { Settings.BezelVariant++; SideSettingName(); },
null
);
optionList.Add(optionButton);
optionList.Add(optionBezelButton);
string SideSettingName()
orig(self);
if (Settings.BezelVariant > 0 && Settings.BezelVariant < BezelLoad.BezelList.Count)
{
optionBezelButton.CanLeft = Settings.BezelVariant > 0;
optionBezelButton.CanRight = Settings.BezelVariant < BezelLoad.BezelNames.Count - 1;
Refresher.RefreshBezel();
return BezelLoad.BezelNames[Settings.BezelVariant];
var LoadedBezel = BezelLoad.BezelList[Settings.BezelVariant - 1];
var atlas = LoadedBezel.Atlas;
Screen.LeftImage = atlas[LoadedBezel.Left];
Screen.RightImage = atlas[LoadedBezel.Right];
}
string SettingName()
}

public override void CreateModSettings(TextContainer textContainer)
{
var logoSelect = new TextContainer.SelectionOption("Logo", MenuVariantNames.ToArray());
logoSelect.Value = (MenuVariantNames[Settings.MenuVariant], Settings.MenuVariant);
logoSelect.OnValueChanged = value =>
{
Settings.MenuVariant = value.Item2;
Refresher.RefreshLogo();
optionButton.CanLeft = Settings.MenuVariant > 0;
optionButton.CanRight = Settings.MenuVariant < MenuVariantNames.Count - 1;
return MenuVariantNames[Settings.MenuVariant];
}

};
var bezelSelect = new TextContainer.SelectionOption("Bezel", BezelLoad.BezelNames.ToArray());
bezelSelect.Value = (BezelLoad.BezelNames[Settings.BezelVariant], Settings.BezelVariant);
bezelSelect.OnValueChanged = value =>
{
Settings.BezelVariant = value.Item2;
Refresher.RefreshBezel();
};

textContainer.Add(logoSelect);
textContainer.Add(bezelSelect);
}


}

// Harmony can be supported

[HarmonyPatch(typeof(MainMenu), "BoolToString")]
public class MyPatcher
{
Expand All @@ -116,7 +120,7 @@ Example of interppting with libraries
Learn more: https://github.com/MonoMod/MonoMod/blob/master/README-ModInterop.md
*/

[ModExportName("ExampleModExport")]
[ModExportName("MenuVariantMod")]
public static class ModExports
{
public static int Add(int x, int y) => x + y;
Expand Down
40 changes: 13 additions & 27 deletions MenuVariantsMod/LogoLoad.cs
Original file line number Diff line number Diff line change
@@ -1,53 +1,39 @@
using Monocle;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using TowerFall;
using FortRise;
using MonoMod.ModInterop;
using System.Diagnostics;

namespace MenuVariantsMod
{
public class LogoLoad
{
public static List<CustomLogo> LogoList;
public static void Load() {
public static void Load(FortContent content) {
MenuVariantModModule.Vanilla = new List<bool>();
MenuVariantModModule.Vanilla.Add(true);
MenuVariantModModule.Vanilla.Add(true);

var _separator = Path.DirectorySeparatorChar.ToString();
var _customLogos = "Content" + _separator + "Mod" + _separator + "CustomLogos" + _separator;
string _customLogos = "Mods" + _separator + "MenuVariantsMod" + _separator + "Content" + _separator + "CustomLogos" + _separator;

string[] directories = Directory.GetDirectories(_customLogos);
string[] array = directories;
LogoList = new List<CustomLogo>();
foreach (string text in array)
foreach (string customLogoPath in array)
{
Console.WriteLine(text);
var text2 = text.Replace("Content" + _separator, "");
Atlas atlas = new Atlas(text2 + _separator + "atlas.xml", text2 + _separator + "atlas.png", true);
var LogoData = Calc.LoadXML(text + _separator + "LogoData.xml");
Console.WriteLine(customLogoPath);
Atlas atlas = AtlasExt.CreateAtlas(content, customLogoPath + _separator + "atlas.xml", customLogoPath + _separator + "atlas.png", true, ContentAccess.Root);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one as well is using the obsolete signature

var LogoData = Calc.LoadXML(customLogoPath + _separator + "LogoData.xml");
var TrueLogoData = LogoData["LogoData"];
Console.WriteLine(atlas);

if (atlas == null)
{
Debugger.Break();
}
//if (TrueLogoData != null)
//{
CustomLogo logoCustomData = new CustomLogo(TrueLogoData, atlas);
//if (logoCustomData != null)
//{
LogoList.Add(logoCustomData);
MenuVariantModModule.MenuVariantNames.Add(TrueLogoData.ChildText("Name"));
MenuVariantModModule.Vanilla.Add(false);
// }

//}
CustomLogo logoCustomData = new CustomLogo(TrueLogoData, atlas);
LogoList.Add(logoCustomData);
MenuVariantModModule.MenuVariantNames.Add(TrueLogoData.ChildText("Name"));
MenuVariantModModule.Vanilla.Add(false);
}
}
}
Expand Down
Loading