Example #1
0
        private void AddStringDrawer(Vector2 startPosition, string stringToDraw)
        {
            int  elapsed = 0;
            bool isScrit = false;

            Random       random       = null;
            Vector2      position     = startPosition;
            EffectDrawer effectDrawer = new EffectDrawer();

            if (currentWeapon.IsCrit(int.Parse(stringToDraw)))
            {
                random  = new Random();
                isScrit = true;
            }

            effectDrawer.Update = (gameTime) =>
            {
                if (elapsed > 850)
                {
                    effectDrawer.Dispose();
                }
                else
                {
                    elapsed += gameTime.ElapsedGameTime.Milliseconds;
                    position = new Vector2(position.X, position.Y - 1.25f);

                    if (isScrit)
                    {
                        position = new Vector2(Math.Abs(position.X + (float)random.NextDouble() * 5), position.Y - Math.Abs((float)random.NextDouble() * 5));
                    }
                }
            };
            effectDrawer.Draw = (spriteBatch) =>
            {
                if (isScrit)
                {
                    bool  negate   = random.NextDouble() >= 0.5;
                    float value    = MathHelper.Clamp((float)random.NextDouble(), 0.0f, 0.15f);
                    float rotation = (negate ? -value : value);

                    spriteBatch.DrawString(spriteFont, stringToDraw, position, Color.Red, rotation, spriteFont.MeasureString(stringToDraw) / 2, 2.0f, SpriteEffects.None, 0.0f);
                }
                else
                {
                    spriteBatch.DrawString(spriteFont, stringToDraw, position, Color.Red);
                }
            };
            effectDrawer.Dispose = () =>
            {
                effectDrawers.Remove(effectDrawer);
            };

            effectDrawers.Add(effectDrawer);
        }
    void CustomDrawer(ref Boost pBoost, int pIndex)
    {
        Boost.Effect tEffect = pBoost.Effects[pIndex];

        BaseEffect tBaseEffect = null;

        if (tEffect.EffectToRun == null)
        {
            tBaseEffect = BaseEffect.GetEffectObject(tEffect.Type);
        }
        else
        {
            tBaseEffect = tEffect.EffectToRun;
        }
        EffectDrawer.DrawTypeList(ref tBaseEffect, tEffect.Type);
    }