mirror of
https://github.com/All-Of-Us-Mods/MiraAPI.git
synced 2026-10-19 15:51:48 +00:00
Merge remote-tracking branch 'origin/dev' into cleanup
This commit is contained in:
6 files changed
+68
-7
No files matched your search
@@ -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;
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 + "%");
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user