Esempio n. 1
0
        public Sprite GetSprite(string name)
        {
            Sprite sprite = Optional <Sprite>(name);

            if (sprite != null)
            {
                return(sprite);
            }

            try {
                TextureRegion textureRegion = GetRegion(name);
                if (textureRegion is TextureAtlas.AtlasRegion)
                {
                    TextureAtlas.AtlasRegion region = textureRegion as TextureAtlas.AtlasRegion;
                    if (region.Rotate || region.PackedWidth != region.OriginalWidth || region.PackedHeight != region.OriginalHeight)
                    {
                        sprite = new TextureAtlas.AtlasSprite(region);
                    }
                }

                if (sprite == null)
                {
                    sprite = new Sprite(textureRegion);
                }

                Add <Sprite>(name, sprite);
                return(sprite);
            }
            catch {
                throw new Exception("No Sprite, TextureRegion, or Texture registered with name: " + name);
            }
        }
Esempio n. 2
0
        public ISceneDrawable GetDrawable(string name)
        {
            ISceneDrawable drawable = Optional <ISceneDrawable>(name);

            if (drawable != null)
            {
                return(drawable);
            }

            drawable = Optional <TiledDrawable>(name);
            if (drawable != null)
            {
                return(drawable);
            }

            try {
                TextureRegion textureRegion = GetRegion(name);
                if (textureRegion is TextureAtlas.AtlasRegion)
                {
                    TextureAtlas.AtlasRegion region = textureRegion as TextureAtlas.AtlasRegion;
                    if (region.Splits != null)
                    {
                        drawable = new NinePatchDrawable(GetPatch(name));
                    }
                    else if (region.Rotate || region.PackedWidth != region.OriginalWidth || region.PackedHeight != region.OriginalHeight)
                    {
                        drawable = new SpriteDrawable(GetSprite(name));
                    }
                }

                if (drawable == null)
                {
                    drawable = new TextureRegionDrawable(textureRegion);
                }
            }
            catch { /* ignore */ }

            if (drawable == null)
            {
                NinePatch patch = Optional <NinePatch>(name);
                if (patch != null)
                {
                    drawable = new NinePatchDrawable(patch);
                }
                else
                {
                    Sprite sprite = Optional <Sprite>(name);
                    if (sprite != null)
                    {
                        drawable = new SpriteDrawable(sprite);
                    }
                    else
                    {
                        throw new Exception("No Drawable, NinePatch, TextureRegion, Texture, or Sprite registered with name: " + name);
                    }
                }
            }

            Add <ISceneDrawable>(name, drawable);
            return(drawable);
        }