Esempio n. 1
0
        private static List <UISpriteData> GetSprites()
        {
            var gameObject = GameObject.Find("/NGUI Root (2D)/ItemIconAtlas");

            if (gameObject == null)
            {
                SendOutput("Atlas object not found");

                return(null);
            }

            var component = gameObject.GetComponent <DynamicUIAtlas>();

            if (component == null)
            {
                SendOutput("Atlas component not found");

                return(null);
            }

            var prebakedAtlas = component.PrebakedAtlas;

            if (!DynamicUIAtlasTools.ReadPrebakedAtlasDescriptor(prebakedAtlas, out var sprites, out int _, out int _))
            {
                SendOutput("Could not read dynamic atlas descriptor");

                return(null);
            }

            if (!DynamicUIAtlasTools.ReadPrebakedAtlasTexture(prebakedAtlas, out var texture2D))
            {
                SendOutput("Could not read dynamic atlas texture");

                return(null);
            }

            Resources.UnloadAsset(texture2D);

            return(sprites);
        }
Esempio n. 2
0
    public static void WriteItemIconAtlasImageToDisc()
    {
        //EntityPlayerLocal player = GameManager.Instance.World.GetLocalPlayer() as EntityPlayerLocal;
        EntityPlayerLocal player = GameManager.Instance.World.GetPrimaryPlayer();

        if (player == null)
        {
            Debug.LogError("WriteItemIconAtlasImageToDisc: Cannot find Local Player, aborting!");
            return;
        }
        LocalPlayerUI uiforPlayer   = LocalPlayerUI.GetUIForPlayer(player);
        UIAtlas       uiAtlas       = uiforPlayer.xui.GetAtlasByName("UIAtlas");
        UIAtlas       itemIconAtlas = uiforPlayer.xui.GetAtlasByName("itemIconAtlas");

        DynamicUIAtlas dynItemIconAtlas = itemIconAtlas.gameObject.GetComponent <DynamicUIAtlas>();

        if (dynItemIconAtlas != null)
        {
            DebugMsg("itemIconAtlas PrebakedAtlas: " + dynItemIconAtlas.PrebakedAtlas);
        }
        else
        {
            DebugMsg("Cannot find dynItemIconAtlas");
        }

        Texture2D texture2Dsrc;

        //if (!DynamicUIAtlasTools.ReadPrebakedAtlasTexture(dynItemIconAtlas.PrebakedAtlas, out texture2DSrc))
        if (!DynamicUIAtlasTools.ReadPrebakedAtlasTexture("GUI/Atlases/UIAtlas", out texture2Dsrc))
        {
            DebugMsg("Could not read dynamic atlas texture");
            return;
        }

        DebugMsg("itemIconAtlas Texture: " + texture2Dsrc.name + " (" + texture2Dsrc.width.ToString() + "x" + texture2Dsrc.height.ToString() + ")");
        Texture2D texture2D = new Texture2D(texture2Dsrc.width, texture2Dsrc.height, TextureFormat.ARGB32, false);

        texture2D.SetPixels(texture2Dsrc.GetPixels());
        byte[] bytes = texture2D.EncodeToPNG();
        //File.WriteAllBytes("C:/SDXModding/Gimp/itemIconAtlas_extract.png", bytes);
        File.WriteAllBytes("C:/SDXModding/Gimp/ui_atlas_extract.png", bytes);
        UnityEngine.Object.Destroy(texture2D);
        Resources.UnloadAsset(texture2Dsrc);

        //Texture2D texture2Dsrc;
        if (!DynamicUIAtlasTools.ReadPrebakedAtlasTexture(dynItemIconAtlas.PrebakedAtlas, out texture2D))
        {
            SingletonMonoBehaviour <SdtdConsole> .Instance.Output("Could not read dynamic atlas texture");

            return;
        }
        //DebugMsg("uiAtlas Texture: " + uiAtlas.texture.name + " (" + uiAtlas.texture.width.ToString() + "x" + uiAtlas.texture.height.ToString() + ")");
        texture2D = new Texture2D(uiAtlas.texture.width, uiAtlas.texture.height, TextureFormat.ARGB32, false);
        texture2D.SetPixels(((Texture2D)uiAtlas.texture).GetPixels());
        bytes = texture2D.EncodeToPNG();
        File.WriteAllBytes("C:/SDXModding/Gimp/ui_atlas_extract.png", bytes);

        //DebugMsg("itemIconAtlas Texture: " + itemIconAtlas.texture.name + " (" + itemIconAtlas.texture.width.ToString() + "x" + itemIconAtlas.texture.height.ToString() + ")");
        texture2D = new Texture2D(itemIconAtlas.texture.width, itemIconAtlas.texture.height, TextureFormat.ARGB32, false);
        texture2D.SetPixels(((Texture2D)itemIconAtlas.texture).GetPixels());
        bytes = texture2D.EncodeToPNG();
        File.WriteAllBytes("C:/SDXModding/Gimp/itemIconAtlas_extract.png", bytes);
        UnityEngine.Object.Destroy(texture2D);
        Resources.UnloadAsset(texture2Dsrc);
    }
Esempio n. 3
0
        private static List <string> GetSprites(out int bakedCount)
        {
            //Vanilla
            bakedCount = 0;
            var gameObject = GameObject.Find("/NGUI Root (2D)/ItemIconAtlas");

            if (gameObject == null)
            {
                SendOutput("Atlas object not found");

                return(null);
            }

            var component = gameObject.GetComponent <DynamicUIAtlas>();

            if (component == null)
            {
                SendOutput("Atlas component not found");

                return(null);
            }

            var prebakedAtlas = component.PrebakedAtlas;

            if (!DynamicUIAtlasTools.ReadPrebakedAtlasDescriptor(prebakedAtlas, out var sprites, out var iconWidth, out var iconHeight))
            {
                SendOutput("Could not read dynamic atlas descriptor");

                return(null);
            }

            var list = sprites.Select(s => s.name).ToList();

            bakedCount = list.Count;

            //Mod Icons
            foreach (var mod in ModManager.GetLoadedMods())
            {
                var modIconsPath = mod.Path + "/ItemIcons";
                if (!Directory.Exists(modIconsPath))
                {
                    continue;
                }

                foreach (var file in Directory.GetFiles(modIconsPath))
                {
                    if (!file.ToLower().EndsWith(".png"))
                    {
                        continue;
                    }

                    var name = Path.GetFileNameWithoutExtension(file);
                    if (list.Contains(name))
                    {
                        continue;
                    }

                    var tex = new Texture2D(1, 1, TextureFormat.ARGB32, false);
                    if (!tex.LoadImage(File.ReadAllBytes(file)))
                    {
                        continue;
                    }

                    if (tex.width == iconWidth && tex.height == iconHeight)
                    {
                        list.Add(name);
                    }

                    Object.Destroy(tex);
                }
            }

            return(list);
        }