94 lines
2.0 KiB
C#
94 lines
2.0 KiB
C#
|
|
using Godot;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/Sensor.svg")]
|
|
public partial class CombinedIconsDefinition: InputIconDefinition
|
|
{
|
|
[Export]
|
|
public CombinedInputIconsTexture[] combined = new CombinedInputIconsTexture[ 0 ];
|
|
|
|
|
|
|
|
public override int ResolveIcons( int offset, List<InputIcon> icons )
|
|
{
|
|
// this.LogInfo( "ResolveIcons", offset, icons );
|
|
|
|
var resolved = GetIconFor( offset, icons );
|
|
|
|
if ( resolved == null )
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
return resolved.icons.Length;
|
|
}
|
|
|
|
public CombinedInputIconsTexture GetIconFor( int offset, List<InputIcon> icons )
|
|
{
|
|
for ( int i = 0; i < combined.Length; i++ )
|
|
{
|
|
var isIcon = combined[ i ].IsIcon( offset, icons );
|
|
|
|
// RJLog.Log( "isIcon -> offset:", offset, "isIcon:", isIcon, "icons:", icons );
|
|
|
|
if ( isIcon )
|
|
{
|
|
return combined[ i ];
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public override List<IconElement> GetIconElementsForIcon( InputIcon icon )
|
|
{
|
|
var ci = icon as CombinedIcon;
|
|
|
|
if ( ci == null )
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var resolved = GetIconFor( 0, Lists.From( ci.icons ) );
|
|
|
|
if ( resolved == null )
|
|
{
|
|
// RJLog.Log( "CombinedIcon: null");
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
var resolvedList = new List<IconElement>();
|
|
resolvedList.Add( TextureIconElement.Create( resolved.texture, resolved.widthScale ) );
|
|
|
|
if ( resolved.label != null )
|
|
{
|
|
var labelText = LabelIconElement.Create( resolved.label, resolved.fontSizeScale, resolved.isUpperCase );
|
|
resolvedList.Add( labelText );
|
|
}
|
|
|
|
|
|
return resolvedList;
|
|
|
|
}
|
|
|
|
public override bool HasIconFor( InputIcon icon )
|
|
{
|
|
if ( ! ( icon is CombinedIcon ci ) )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var ic = GetIconFor( 0, Lists.From( ci.icons ) );
|
|
|
|
return ic != null;
|
|
}
|
|
|
|
|
|
}
|
|
} |