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); }
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); }