Merge remote-tracking branch 'origin/dev' into cleanup

This commit is contained in:
Az committed 2026-09-19 23:12:52 -04:00
commit 7c76219b17
6 files changed
+68 -7

No files matched your search

+2 -1
View File
@@ -70,9 +70,10 @@ public abstract class CustomMultiSelectMenu<TEntry> : CustomPhoneMenu<CustomMult
customMenu.confirmButton = null!; // TODO: create/add confirm button
/*
var button = customMenu.confirmButton.GetComponent<PassiveButton>();
button.OnClick.RemoveAllListeners();
button.OnClick.AddListener((UnityAction)customMenu.OnCompleteSelection);
button.OnClick.AddListener((UnityAction)customMenu.OnCompleteSelection);*/
customMenu.activeColor = activeColor;
+8
View File
@@ -172,6 +172,14 @@ public abstract class CustomPhoneMenu : ICustomMenu
Component.Close();
}
/// <summary>
/// Forcibly closes the menu.
/// </summary>
public void ForceClose()
{
Component.ForceClose();
}
/// <summary>
/// Creates a <typeparamref name="TMenu"/>.
/// </summary>
+31
View File
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using MiraAPI.Utilities.Assets;
using UnityEngine;
namespace MiraAPI.Hud;
@@ -28,6 +29,36 @@ public class CustomPlayerMenu : CustomMultiSelectMenu<PlayerControl>
return Create<CustomPlayerMenu>();
}
/// <summary>
/// Creates a <see cref="CustomPlayerMenu"/>.
/// </summary>
/// <returns>New <see cref="CustomPlayerMenu"/> object.</returns>
/// <param name="activeColor">The <see cref="Color"/> to use when an entry is selected but not hovered over.</param>
/// <param name="hoverSelectSprite">The <see cref="Sprite"/> to use when an entry is hovered over while not selected.</param>
/// <param name="hoverSelectColor">The <see cref="Color"/> to use when an entry is hovered over while not selected.</param>
/// <param name="hoverDeselectSprite">The <see cref="Sprite"/> to use when an entry is hovered over while selected.</param>
/// <param name="hoverDeselectColor">The <see cref="Color"/> to use when an entry is hovered over while selected.</param>
/// <param name="onMouseOut">Function that can optionally be run when the mouse is moved outside a menu panel.</param>
/// <param name="onMouseOver">Function that can optionally be run when the mouse is moved over a menu panel.</param>
public static CustomPlayerMenu Create(
Color? activeColor,
LoadableAsset<Sprite>? hoverSelectSprite = null,
Color? hoverSelectColor = null,
LoadableAsset<Sprite>? hoverDeselectSprite = null,
Color? hoverDeselectColor = null,
PanelButtonOnMouse? onMouseOut = null,
PanelButtonOnMouse? onMouseOver = null)
{
return Create<CustomPlayerMenu>(
activeColor,
hoverSelectSprite,
hoverSelectColor,
hoverDeselectSprite,
hoverDeselectColor,
onMouseOut,
onMouseOver);
}
/// <summary>
/// Begins/opens the custom player menu.
/// </summary>
@@ -30,7 +30,7 @@ public static class NotificationPopperPatch
icon,
"<font=\"Barlow-Black SDF\" material=\"Barlow-Black Outline\">",
textColor,
TranslationController.Instance.GetString(key),
customRole.RoleName,
"</color></font>"),
"<font=\"Barlow-Black SDF\" material=\"Barlow-Black Outline\">" + roleCount + "</font>",
"<font=\"Barlow-Black SDF\" material=\"Barlow-Black Outline\">" + roleChance + "%");
+1 -1
View File
@@ -48,7 +48,7 @@ public interface ICustomRole : IOptionable
/// <summary>
/// Gets the medium description of the role. Used in the role guide and options menu.
/// </summary>
string RoleMedDescription => MiraLocaleManager.Get(RoleMedDescriptionLocale);
string RoleMedDescription => MiraLocaleManager.Get(RoleMedDescriptionLocale, RoleLongDescription);
/// <summary>
/// Gets the role's medium description id for localization.
+25 -4
View File
@@ -56,6 +56,10 @@ public static class TmpSpriteUtils
spriteAsset.name = assetName;
spriteAsset.spriteSheet = sourceTexture;
var spriteAssetMasked = ScriptableObject.CreateInstance<TMP_SpriteAsset>();
spriteAssetMasked.name = assetName + ".Masked";
spriteAssetMasked.spriteSheet = sourceTexture;
if (!_spriteShader)
{
// ReSharper disable once ShaderLabShaderReferenceNotResolved (Justification: Unnecessary.)
@@ -67,10 +71,6 @@ public static class TmpSpriteUtils
name = assetName + " Material",
};
material.SetTexture(ShaderUtilities.ID_MainTex, sourceTexture);
// TODO: Using these values, the icons will NOT clip through chat boxes. However, this breaks quite literally every other tmp text that isn't masked. Please fix this if a good solution is found.
/*material.SetFloat(ShaderUtilities.ID_StencilComp, 4);
material.SetFloat(ShaderUtilities.ID_StencilID, 1);*/
material.SetFloat(ShaderUtilities.ID_StencilComp, 0);
material.SetFloat(ShaderUtilities.ID_StencilID, 0);
material.SetFloat(ShaderUtilities.ID_StencilOp, 0);
@@ -81,15 +81,36 @@ public static class TmpSpriteUtils
spriteAsset.spriteInfoList = new CppCollections.List<TMP_Sprite>();
var maskedMaterial = new Material(_spriteShader)
{
name = assetName + " Masked Material",
};
maskedMaterial.SetTexture(ShaderUtilities.ID_MainTex, sourceTexture);
maskedMaterial.SetFloat(ShaderUtilities.ID_StencilComp, 4);
maskedMaterial.SetFloat(ShaderUtilities.ID_StencilID, 1);
maskedMaterial.SetFloat(ShaderUtilities.ID_StencilOp, 0);
maskedMaterial.SetFloat(ShaderUtilities.ID_StencilWriteMask, 255);
maskedMaterial.SetFloat(ShaderUtilities.ID_StencilReadMask, 255);
maskedMaterial.SetFloat(ShaderUtilities.ShaderTag_CullMode, 0);
spriteAssetMasked.material = maskedMaterial;
spriteAssetMasked.spriteInfoList = new CppCollections.List<TMP_Sprite>();
AddSpriteToAsset(spriteAsset, rect, assetName, scale);
AddSpriteToAsset(spriteAssetMasked, rect, assetName + ".Masked", scale);
spriteAsset.DontUnload().DontDestroy();
spriteAsset.UpdateLookupTables();
spriteAsset.fallbackSpriteAssets = new();
spriteAssetMasked.DontUnload().DontDestroy();
spriteAssetMasked.UpdateLookupTables();
spriteAssetMasked.fallbackSpriteAssets = new();
AssetHolder.fallbackSpriteAssets.Add(spriteAsset);
AssetHolder.fallbackSpriteAssets.Add(spriteAssetMasked);
AssetHolder.UpdateLookupTables();
LoadedSprites.Add(assetName, spriteAsset);
LoadedSprites.Add(assetName + ".Masked", spriteAssetMasked);
return spriteAsset;
}