Пример #1
0
        public MirImage CreateImage(int index, ImageType type)
        {
            if (!CheckImage(index))
            {
                return(null);
            }

            MirImage image = Images[index];

            Texture texture;

            switch (type)
            {
            case ImageType.Image:
                if (!image.ImageValid)
                {
                    image.CreateImage(_BReader);
                }
                texture = image.Image;
                break;

            case ImageType.Shadow:
                if (!image.ShadowValid)
                {
                    image.CreateShadow(_BReader);
                }
                texture = image.Shadow;
                break;

            case ImageType.Overlay:
                if (!image.OverlayValid)
                {
                    image.CreateOverlay(_BReader);
                }
                texture = image.Overlay;
                break;

            default:
                return(null);
            }

            if (texture == null)
            {
                return(null);
            }

            return(image);
        }
Пример #2
0
        public void Draw(int index, float x, float y, Color4 colour, bool useOffSet, float opacity, ImageType type)
        {
            if (!CheckImage(index))
            {
                return;
            }

            MirImage image = Images[index];

            Texture texture;

            float oldOpacity = DXManager.Opacity;

            switch (type)
            {
            case ImageType.Image:
                if (!image.ImageValid)
                {
                    image.CreateImage(_BReader);
                }
                texture = image.Image;
                if (useOffSet)
                {
                    x += image.OffSetX;
                    y += image.OffSetY;
                }
                break;

            case ImageType.Shadow:
                if (!image.ShadowValid)
                {
                    image.CreateShadow(_BReader);
                }
                texture = image.Shadow;

                if (useOffSet)
                {
                    x += image.ShadowOffSetX;
                    y += image.ShadowOffSetY;
                }


                if (texture == null)
                {
                    if (!image.ImageValid)
                    {
                        image.CreateImage(_BReader);
                    }
                    texture = image.Image;

                    switch (image.ShadowType)
                    {
                    case 177:
                    case 176:
                    case 49:
                        Matrix m = Matrix.Scaling(1F, 0.5f, 0);

                        m.M21 = -0.50F;
                        DXManager.Sprite.Transform = m * Matrix.Translation(x + image.Height / 2, y, 0);

                        DXManager.Device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.None);
                        if (oldOpacity != 0.5F)
                        {
                            DXManager.SetOpacity(0.5F);
                        }

                        DXManager.Sprite.Draw(texture, Vector3.Zero, Vector3.Zero, Color.Black);
                        CEnvir.DPSCounter++;

                        DXManager.SetOpacity(oldOpacity);
                        DXManager.Sprite.Transform = Matrix.Identity;
                        DXManager.Device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.Point);

                        image.ExpireTime = Time.Now + Config.CacheDuration;
                        break;

                    case 50:
                        if (oldOpacity != 0.5F)
                        {
                            DXManager.SetOpacity(0.5F);
                        }

                        DXManager.Sprite.Draw(texture, Vector3.Zero, new Vector3(x, y, 0), Color.Black);
                        CEnvir.DPSCounter++;
                        DXManager.SetOpacity(oldOpacity);

                        image.ExpireTime = Time.Now + Config.CacheDuration;
                        break;
                    }



                    return;
                }

                break;

            case ImageType.Overlay:
                if (!image.OverlayValid)
                {
                    image.CreateOverlay(_BReader);
                }
                texture = image.Overlay;

                if (useOffSet)
                {
                    x += image.OffSetX;
                    y += image.OffSetY;
                }
                break;

            default:
                return;
            }

            if (texture == null)
            {
                return;
            }

            DXManager.SetOpacity(opacity);

            DXManager.Sprite.Draw(texture, Vector3.Zero, new Vector3(x, y, 0), colour);
            CEnvir.DPSCounter++;

            DXManager.SetOpacity(oldOpacity);

            image.ExpireTime = Time.Now + Config.CacheDuration;
        }