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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |