make role configs save to mod, not to mira

This commit is contained in:
XtraCube committed 2024-08-20 11:05:59 -04:00
1 parent 0a855c602d
commit 9a9367f2b9
5 files changed
+32 -23

No files matched your search

@@ -106,11 +106,18 @@ public static class RoleSettingMenuPatches
var role = roleSetting.Role as ICustomRole;
if (role is null or { HideSettings: true }) return;
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(role.NumConfigDefinition, out var numEntry);
numEntry.Value = roleSetting.RoleMaxCount;
try
{
role.ParentMod.PluginConfig.TryGetEntry<int>(role.NumConfigDefinition, out var numEntry);
numEntry.Value = roleSetting.RoleMaxCount;
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(role.ChanceConfigDefinition, out var chanceEntry);
chanceEntry.Value = roleSetting.RoleChance;
role.ParentMod.PluginConfig.TryGetEntry<int>(role.ChanceConfigDefinition, out var chanceEntry);
chanceEntry.Value = roleSetting.RoleChance;
}
catch (Exception e)
{
Logger<MiraApiPlugin>.Warning(e);
}
roleSetting.UpdateValuesAndText(GameOptionsManager.Instance.CurrentGameOptions.RoleOptions);
DestroyableSingleton<HudManager>.Instance.Notifier.AddRoleSettingsChangeMessage(roleSetting.Role.StringName, roleSetting.RoleMaxCount, roleSetting.RoleChance, roleSetting.Role.TeamType, false);
@@ -156,14 +163,14 @@ public static class RoleSettingMenuPatches
newOpt.Initialize();
}
__instance.scrollBar.CalculateAndSetYBounds((float)(__instance.advancedSettingChildren.Count + 3), 1f, 6f, 0.45f);
__instance.scrollBar.CalculateAndSetYBounds(__instance.advancedSettingChildren.Count + 3, 1f, 6f, 0.45f);
}
private static void ChangeTab(RoleBehaviour role, RolesSettingsMenu __instance)
{
ICustomRole customRole = role as ICustomRole;
__instance.roleDescriptionText.text = customRole.RoleLongDescription;
__instance.roleTitleText.text = DestroyableSingleton<TranslationController>.Instance.GetString(role.StringName, Array.Empty<Il2CppSystem.Object>());
__instance.roleScreenshot.sprite = Sprite.Create(role.RoleScreenshot.texture, new Rect(0, 0, 370, 230), Vector2.one / 2, 100);
__instance.roleTitleText.text = DestroyableSingleton<TranslationController>.Instance.GetString(role.StringName, []);
__instance.roleScreenshot.sprite = Sprite.Create(customRole.OptionsScreenshot.LoadAsset().texture, new Rect(0, 0, 370, 230), Vector2.one / 2, 100);
__instance.roleScreenshot.drawMode = SpriteDrawMode.Sliced;
__instance.roleHeaderSprite.color = customRole.RoleColor;
__instance.roleHeaderText.color = customRole.RoleColor.DarkenColor();
@@ -1,7 +1,6 @@
using AmongUs.GameOptions;
using HarmonyLib;
using MiraAPI.Roles;
using Reactor.Utilities;
namespace MiraAPI.Patches.Roles;
@@ -22,7 +21,7 @@ public static class RoleOptionsCollectionPatch
return false;
}
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var entry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var entry);
__result = entry.Value;
return false;
}
@@ -44,7 +43,7 @@ public static class RoleOptionsCollectionPatch
return false;
}
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.NumConfigDefinition, out var entry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.NumConfigDefinition, out var entry);
__result = entry.Value;
return false;
}
+2 -1
View File
@@ -84,6 +84,7 @@ public class MiraPluginManager
if (typeof(IModdedOption).IsAssignableFrom(property.PropertyType))
{
IModdedOption option = (IModdedOption)property.GetValue(group);
group.Options.Add(option);
option.Group = group;
option.AdvancedRole = group.AdvancedRole;
}
@@ -101,7 +102,7 @@ public class MiraPluginManager
ClassInjector.RegisterTypeInIl2Cpp(type);
var role = CustomRoleManager.RegisterRole(type, attribute.RoleId);
var role = CustomRoleManager.RegisterRole(type, attribute.RoleId, pluginInfo);
try
{
+7 -7
View File
@@ -36,7 +36,7 @@ public static class CustomRoleManager
RoleManager.Instance.AllRoles = RoleManager.Instance.AllRoles.Concat(CustomRoles.Values).ToArray();
}
internal static RoleBehaviour RegisterRole(Type roleType, ushort roleId)
internal static RoleBehaviour RegisterRole(Type roleType, ushort roleId, MiraPluginInfo parentMod)
{
if (!(typeof(RoleBehaviour).IsAssignableFrom(roleType) && typeof(ICustomRole).IsAssignableFrom(roleType)))
{
@@ -79,7 +79,7 @@ public static class CustomRoleManager
return roleBehaviour;
}
var config = PluginSingleton<MiraApiPlugin>.Instance.Config;
var config = parentMod.PluginConfig;
config.Bind(customRole.NumConfigDefinition, 1);
config.Bind(customRole.ChanceConfigDefinition, 100);
@@ -88,7 +88,7 @@ public static class CustomRoleManager
public static MiraPluginInfo FindParentMod(ICustomRole role)
{
return MiraPluginManager.Instance.RegisteredPlugins.First(plugin => plugin.Value.CustomRoles.Values.Contains(role as RoleBehaviour)).Value;
return MiraPluginManager.Instance.RegisteredPlugins.First(plugin => plugin.Value.CustomRoles.ContainsValue(role as RoleBehaviour)).Value;
}
public static bool GetCustomRoleBehaviour(RoleTypes roleType, out ICustomRole result)
@@ -150,8 +150,8 @@ public static class CustomRoleManager
continue;
}
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.NumConfigDefinition, out var numEntry);
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var chanceEntry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.NumConfigDefinition, out var numEntry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var chanceEntry);
var netData = new NetData((uint)role.Role, BitConverter.GetBytes(numEntry.Value).AddRangeToArray(BitConverter.GetBytes(chanceEntry.Value)));
@@ -186,8 +186,8 @@ public static class CustomRoleManager
var num = BitConverter.ToInt32(netData.Data, 0);
var chance = BitConverter.ToInt32(netData.Data, 4);
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.NumConfigDefinition, out var numEntry);
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var chanceEntry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.NumConfigDefinition, out var numEntry);
customRole.ParentMod.PluginConfig.TryGetEntry<int>(customRole.ChanceConfigDefinition, out var chanceEntry);
numEntry.Value = num;
chanceEntry.Value = chance;
+7 -5
View File
@@ -6,7 +6,7 @@ using MiraAPI.Utilities.Assets;
using System.Text;
using HarmonyLib;
using MiraAPI.Networking;
using Reactor.Utilities;
using MiraAPI.PluginLoading;
using UnityEngine;
namespace MiraAPI.Roles;
@@ -22,8 +22,8 @@ public interface ICustomRole
Color RoleColor { get; }
ModdedRoleTeams Team { get; }
LoadableAsset<Sprite> OptionsScreenshot { get; }
LoadableAsset<Sprite> OptionsScreenshot => MiraAssets.Empty;
LoadableAsset<Sprite> Icon => MiraAssets.Empty;
@@ -53,6 +53,8 @@ public interface ICustomRole
RoleTypes GhostRole => Team == ModdedRoleTeams.Crewmate ? RoleTypes.CrewmateGhost : RoleTypes.ImpostorGhost;
MiraPluginInfo ParentMod => CustomRoleManager.FindParentMod(this);
void CreateOptions() { }
void PlayerControlFixedUpdate(PlayerControl playerControl) { }
@@ -72,8 +74,8 @@ public interface ICustomRole
NetData GetNetData(RoleBehaviour roleBehaviour)
{
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(NumConfigDefinition, out var numEntry);
PluginSingleton<MiraApiPlugin>.Instance.Config.TryGetEntry<int>(ChanceConfigDefinition, out var chanceEntry);
ParentMod.PluginConfig.TryGetEntry<int>(NumConfigDefinition, out var numEntry);
ParentMod.PluginConfig.TryGetEntry<int>(ChanceConfigDefinition, out var chanceEntry);
return new NetData((uint)roleBehaviour.Role, BitConverter.GetBytes(numEntry.Value).AddRangeToArray(BitConverter.GetBytes(chanceEntry.Value)));
}