Exemplo n.º 1
0
    //creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to
    //define the appeareance. Otherwise sticks to defaults. Doesn't populate the sub menus though.
    private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus)
    {
        RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>();

        if (rightClickAppearance != null)
        {
            //use right click menu to determine appearance
            return(rightClickAppearance.AsMenu(subMenus));
        }

        //use defaults
        var            label       = forObject.name.Replace("(clone)", "");
        SpriteRenderer firstSprite = forObject.GetComponentInChildren <SpriteRenderer>();
        Sprite         sprite      = null;

        if (firstSprite != null)
        {
            sprite = firstSprite.sprite;
        }
        else
        {
            Logger.LogWarningFormat("Could not determine sprite to use for right click menu" +
                                    " for object {0}. Please manually configure a sprite in a RightClickAppearance component" +
                                    " on this object.", Category.UI, forObject.name);
        }

        return(RightClickMenuItem.CreateObjectMenuItem(Color.gray, sprite, null, label, subMenus));
    }
Exemplo n.º 2
0
    //creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to
    //define the appearance. Otherwise sticks to defaults. Doesn't populate the sub menus though.
    private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus)
    {
        RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>();

        if (rightClickAppearance != null)
        {
            //use right click menu to determine appearance
            return(rightClickAppearance.AsMenu(subMenus));
        }
        // else use defaults:

        var label = forObject.ExpensiveName();

        // check if is a paletted item
        ItemAttributesV2 item    = forObject.GetComponent <ItemAttributesV2>();
        List <Color>     palette = null;

        if (item != null)
        {
            if (item.ItemSprites.IsPaletted)
            {
                palette = item.ItemSprites.Palette;
            }
        }

        // See if this object has an AirLockAnimator then try to get the sprite from that, otherwise try to get the sprite from the first renderer we find
        var airLockAnimator = forObject.GetComponentInChildren <AirLockAnimator>();
        var spriteRenderer  = airLockAnimator != null ? airLockAnimator.doorbase : forObject.GetComponentInChildren <SpriteRenderer>();

        Sprite sprite = null;

        if (spriteRenderer != null)
        {
            sprite = spriteRenderer.sprite;
        }
        else
        {
            Logger.LogWarningFormat("Could not determine sprite to use for right click menu" +
                                    " for object {0}. Please manually configure a sprite in a RightClickAppearance component" +
                                    " on this object.", Category.UserInput, forObject.name);
        }

        return(RightClickMenuItem.CreateObjectMenuItem(ButtonColor, sprite, null, label, subMenus, spriteRenderer.color, palette));
    }
Exemplo n.º 3
0
    //creates the top-level menu item for this object. If object has a RightClickAppearance, uses that to
    //define the appearance. Otherwise sticks to defaults. Doesn't populate the sub menus though.
    private RightClickMenuItem CreateObjectMenu(GameObject forObject, List <RightClickMenuItem> subMenus)
    {
        RightClickAppearance rightClickAppearance = forObject.GetComponent <RightClickAppearance>();

        if (rightClickAppearance != null)
        {
            //use right click menu to determine appearance
            return(rightClickAppearance.AsMenu(subMenus));
        }
        // else use defaults:

        var label = forObject.ExpensiveName();

        // check if is a paletted item
        ItemAttributesV2 item    = forObject.GetComponent <ItemAttributesV2>();
        List <Color>     palette = null;

        if (item != null)
        {
            if (item.ItemSprites.IsPaletted)
            {
                palette = item.ItemSprites.Palette;
            }
        }

        // try get sprite
        SpriteRenderer firstRenderer = forObject.GetComponentInChildren <SpriteRenderer>();
        Sprite         sprite        = null;

        if (firstRenderer != null)
        {
            sprite = firstRenderer.sprite;
        }
        else
        {
            Logger.LogWarningFormat("Could not determine sprite to use for right click menu" +
                                    " for object {0}. Please manually configure a sprite in a RightClickAppearance component" +
                                    " on this object.", Category.UI, forObject.name);
        }

        return(RightClickMenuItem.CreateObjectMenuItem(Color.gray, sprite, null, label, subMenus, firstRenderer.color, palette));
    }