This commit is contained in:
ang-xd committed 2024-08-29 15:47:54 -04:00
1 parent 03ef684691
commit acf1d44b52
8 files changed
+48 -26

No files matched your search

+6 -6
View File
@@ -22,13 +22,13 @@ public class ExampleOptions : AbstractOptionGroup
[ModdedStringOption("String Opt", ["Hello", "Hey", "Bye"])]
public int StringOpt { get; set; } = 2;
[ModdedEnumOption("Enum Opt", typeof(TestEnum))]
public TestEnum EnumOpt { get; set; } = TestEnum.Mira;
[ModdedEnumOption("Best API", typeof(BestApiEnum), ["Mira API", "Mitochondria", "Reactor"])]
public BestApiEnum EnumOpt { get; set; } = BestApiEnum.MiraAPI;
}
public enum TestEnum
public enum BestApiEnum
{
Welcome,
To,
Mira
MiraAPI,
Mitochondria,
Reactor
}
+1 -1
View File
@@ -13,5 +13,5 @@ public class FreezerRole : ImpostorRole, ICustomRole
public Color RoleColor => Palette.Blue;
public ModdedRoleTeams Team => ModdedRoleTeams.Impostor;
public LoadableAsset<Sprite> OptionsScreenshot => ExampleAssets.Banner;
public int MaxPlayers => 2;
}
@@ -4,12 +4,12 @@ using System.Reflection;
namespace MiraAPI.GameOptions.Attributes;
public class ModdedEnumOptionAttribute(string title, Type enumType, Type roleType = null)
public class ModdedEnumOptionAttribute(string title, Type enumType, string[] values = null, Type roleType = null)
: ModdedOptionAttribute(title, roleType)
{
internal override IModdedOption CreateOption(object value, PropertyInfo property)
{
var opt = new ModdedEnumOption(Title, (int)value, enumType, RoleType);
var opt = new ModdedEnumOption(Title, (int)value, enumType, values, RoleType);
return opt;
}
@@ -1,7 +1,7 @@
using Reactor.Localization.Utilities;
using MiraAPI.Networking;
using Reactor.Localization.Utilities;
using System;
using System.Linq;
using MiraAPI.Networking;
using UnityEngine;
using Object = UnityEngine.Object;
@@ -11,15 +11,18 @@ public class ModdedEnumOption : ModdedOption<int>
{
public string[] Values { get; }
public ModdedEnumOption(string title, int defaultValue, Type enumType, Type roleType=null) : base(title, defaultValue, roleType)
public ModdedEnumOption(string title, int defaultValue, Type enumType, string[] values = null, Type roleType = null) : base(title, defaultValue, roleType)
{
Values = Enum.GetNames(enumType);
Values = values is null ? Enum.GetNames(enumType) : values;
Data = ScriptableObject.CreateInstance<StringGameSetting>();
var data = (StringGameSetting)Data;
data.Title = StringName;
data.Type = global::OptionTypes.String;
data.Values = Values.Select(CustomStringName.CreateAndRegister).ToArray();
data.Values = values is null ?
Enum.GetNames(enumType).Select(CustomStringName.CreateAndRegister).ToArray()
: values.Select(CustomStringName.CreateAndRegister).ToArray();
data.Index = Value;
}
+24 -7
View File
@@ -1,5 +1,4 @@
#nullable enable
using MiraAPI.Utilities;
using MiraAPI.Utilities.Assets;
using UnityEngine;
using UnityEngine.Events;
@@ -55,18 +54,18 @@ public abstract class CustomActionButton
/// <summary>
/// Returns true if the effect is currently active.
/// </summary>
protected bool EffectActive;
public bool EffectActive { get; protected set; }
/// <summary>
/// Returns the amount of uses left.
/// </summary>
public int UsesLeft { get; set; }
/// <summary>
/// A timer variable to measure cooldowns and effects.
/// </summary>
protected float Timer;
/// <summary>
/// Returns the amount of uses left.
/// </summary>
protected int UsesLeft;
/// <summary>
/// The button object in game. This is created by Mira API automatically.
/// </summary>
@@ -135,6 +134,24 @@ public abstract class CustomActionButton
Button?.OverrideText(name);
}
/// <summary>
/// Increase the amount of uses this button has left.
/// </summary>
/// <param name="amount">The amount you want to increase by. Default: 1</param>
public void IncreaseUses(int amount = 1)
{
UsesLeft += amount;
}
/// <summary>
/// Decrease the amount of uses this button has left.
/// </summary>
/// <param name="amount">The amount you want to decrease by. Default: 1</param>
public void DecreaseUses(int amount = 1)
{
UsesLeft -= amount;
}
/// <summary>
/// A utility function that runs with the local PlayerControl's FixedUpdate if the button is enabled.
/// </summary>
@@ -1,4 +1,5 @@
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using MiraAPI.Networking;
using MiraAPI.Roles;
using MiraAPI.Utilities;
@@ -8,7 +9,6 @@ using Reactor.Utilities;
using Reactor.Utilities.Extensions;
using System;
using System.Linq;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
+3 -3
View File
@@ -1,7 +1,9 @@
using AmongUs.GameOptions;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.Injection;
using MiraAPI.Networking;
using MiraAPI.PluginLoading;
using MiraAPI.Utilities;
using Reactor.Localization.Utilities;
using Reactor.Networking.Rpc;
using Reactor.Utilities;
@@ -9,8 +11,6 @@ using Reactor.Utilities.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using Il2CppInterop.Runtime.Injection;
using MiraAPI.Utilities;
using TMPro;
using UnityEngine;
using Object = UnityEngine.Object;
@@ -83,7 +83,7 @@ public static class CustomRoleManager
roleBehaviour.TasksCountTowardProgress = customRole.TasksCount;
roleBehaviour.CanVent = customRole.CanUseVent;
roleBehaviour.DefaultGhostRole = customRole.GhostRole;
roleBehaviour.MaxCount = 15;
roleBehaviour.MaxCount = customRole.MaxPlayers;
roleBehaviour.RoleScreenshot = customRole.OptionsScreenshot.LoadAsset();
if (customRole.IsGhostRole)
+3 -1
View File
@@ -3,11 +3,11 @@ using BepInEx.Configuration;
using HarmonyLib;
using MiraAPI.Modifiers;
using MiraAPI.Networking;
using MiraAPI.PluginLoading;
using MiraAPI.Utilities;
using MiraAPI.Utilities.Assets;
using System;
using System.Text;
using MiraAPI.PluginLoading;
using UnityEngine;
namespace MiraAPI.Roles;
@@ -24,6 +24,8 @@ public interface ICustomRole
ModdedRoleTeams Team { get; }
int MaxPlayers => 15;
LoadableAsset<Sprite> OptionsScreenshot => MiraAssets.Empty;
LoadableAsset<Sprite> Icon => MiraAssets.Empty;