Ejemplo n.º 1
0
        public override bool Slice()
        {
            double normalized = this.m_Sync.Normalized;

            if (normalized >= 1.0)
            {
                return(false);
            }
            int xSource;
            int ySource;
            int xTarget;
            int yTarget;
            int xPixel;
            int yPixel;

            this.GetRenderLocation(normalized, out xSource, out ySource, out xTarget, out yTarget, out xPixel, out yPixel);
            IHue hue  = Renderer.m_Dead ? Hues.Grayscale : this.m_Hue;
            int  num1 = this.m_ItemID;

            if (this.m_Animated)
            {
                num1 += (int)this.m_Animation[(Renderer.m_Frames - this.m_Start) / this.m_Delay % this.m_FrameCount];
            }
            Texture texture1 = hue.GetItem(num1);
            double  angle    = Math.Atan2((double)(ySource - yTarget), (double)(xSource - xTarget));
            double  xCenter  = (double)(texture1.xMin + texture1.xMax) * 0.5;
            double  yCenter  = (double)(texture1.yMin + texture1.yMax) * 0.5;

            Renderer.FilterEnable = true;
            if (num1 == 3853)
            {
                angle += normalized * Math.PI * 4.0;
            }
            else if (this._effectId == 9501)
            {
                xCenter = 12.0;
                yCenter = 10.0;
            }
            RenderEffect renderEffect = Effects.GetItemEffect(num1);

            if (renderEffect != null && renderEffect.Glow != null)
            {
                Texture texture2 = Hues.Shadow.GetItem(num1);
                if (texture2 != null && !texture2.IsEmpty())
                {
                    Renderer.PushAlpha(renderEffect.Glow.Alpha);
                    Renderer.SetBlendType(DrawBlendType.Additive);
                    int input = renderEffect.Glow.Color ?? texture2._averageColor;
                    if (this._effectId == 9501)
                    {
                        input = 16737792;
                    }
                    int color1 = hue.Pixel32(input);
                    texture2.DrawRotated(xPixel, yPixel, angle, color1, xCenter + 8.0, yCenter + 8.0);
                    int?color2 = renderEffect.Glow.Color;
                    if ((color2.GetValueOrDefault() != 9203350 ? 0 : (color2.HasValue ? 1 : 0)) != 0)
                    {
                        Renderer.SetAlpha(renderEffect.Glow.Alpha * 0.5f);
                        texture2.DrawRotated(xPixel, yPixel, angle, color1, xCenter + 8.0, yCenter + 8.0);
                    }
                    Renderer.SetBlendType(DrawBlendType.Normal);
                    Renderer.PopAlpha();
                }
            }
            float num2 = 1f;

            if (this._effectId == 9501)
            {
                Texture texture2 = hue.GetItem(4972);
                if (texture2 != null && !texture2.IsEmpty())
                {
                    Renderer.FilterEnable = true;
                    texture2.DrawRotated(xPixel, yPixel, angle + normalized * Math.PI * 4.0, 13395507);
                    Renderer.FilterEnable = false;
                    num2 = 0.5f;
                }
            }
            switch (this.m_RenderMode)
            {
            case 2:
            case 3:
                renderEffect = RenderEffects.Additive;
                break;

            case 4:
                renderEffect = RenderEffects.HalfAdditive;
                break;
            }
            if (renderEffect == null)
            {
                renderEffect = RenderEffects.Default;
            }
            Renderer.PushAlpha(renderEffect.Alpha * num2);
            Renderer.SetBlendType(renderEffect.BlendType);
            Renderer.FilterEnable = true;
            int color = 16777215;

            if (this._effectId == 9501)
            {
                color = 16737792;
            }
            texture1.DrawRotated(xPixel, yPixel, angle, color, xCenter, yCenter);
            Renderer.FilterEnable = false;
            Renderer.SetBlendType(DrawBlendType.Normal);
            Renderer.PopAlpha();
            return(true);
        }
Ejemplo n.º 2
0
        public override bool Slice()
        {
            if (Renderer.m_Frames - this.m_Start >= this.m_Duration)
            {
                return(false);
            }
            int xPixel;
            int yPixel;

            this.GetRenderLocation(out xPixel, out yPixel);
            IHue hue  = Renderer.m_Dead ? Hues.Grayscale : this.m_Hue;
            int  num1 = this.m_ItemID;

            if (this.m_Animated)
            {
                num1 += (int)this.m_Animation[(Renderer.m_Frames - this.m_Start) / this.m_Delay % this.m_FrameCount];
            }
            Texture tex = hue.GetItem(num1);

            if (this.m_vCache == null)
            {
                this.m_vCache = this.VCPool.GetInstance();
            }
            int          num2         = (Renderer.m_Frames - this.m_Start) / this.m_Duration;
            RenderEffect renderEffect = Effects.GetItemEffect(num1);

            if (renderEffect != null && renderEffect.Glow != null)
            {
                Texture texture = Hues.Shadow.GetItem(num1);
                if (texture != null && !texture.IsEmpty())
                {
                    Renderer.PushAlpha(renderEffect.Glow.Alpha);
                    Renderer.SetBlendType(DrawBlendType.Additive);
                    int color1 = hue.Pixel32(renderEffect.Glow.Color ?? texture._averageColor);
                    texture.DrawGame(xPixel - tex.Width / 2 - 8, yPixel - tex.Height - 8, color1);
                    int?color2 = renderEffect.Glow.Color;
                    if ((color2.GetValueOrDefault() != 9203350 ? 0 : (color2.HasValue ? 1 : 0)) != 0)
                    {
                        Renderer.SetAlpha(renderEffect.Glow.Alpha * 0.5f);
                        texture.DrawGame(xPixel - tex.Width / 2 - 8, yPixel - tex.Height - 8, color1);
                    }
                    Renderer.SetBlendType(DrawBlendType.Normal);
                    Renderer.PopAlpha();
                }
            }
            switch (this.m_RenderMode)
            {
            case 2:
            case 3:
                renderEffect = RenderEffects.Additive;
                break;

            case 4:
                renderEffect = RenderEffects.HalfAdditive;
                break;
            }
            if (renderEffect == null)
            {
                renderEffect = RenderEffects.Default;
            }
            Renderer.PushAlpha(renderEffect.Alpha);
            Renderer.SetBlendType(renderEffect.BlendType);
            this.m_vCache.DrawGame(tex, xPixel - tex.Width / 2, yPixel - tex.Height);
            Renderer.SetBlendType(DrawBlendType.Normal);
            Renderer.PopAlpha();
            return(true);
        }