Example #1
0
        public override void Run(Combat.Character character)
        {
            var animationnumber    = EvaluationHelper.AsInt32(character, AnimationNumber, 0);
            var drawunder          = EvaluationHelper.AsBoolean(character, DrawUnder, false);
            var offset             = EvaluationHelper.AsPoint(character, DrawPosition, new Point(0, 0));
            var randomdisplacement = EvaluationHelper.AsInt32(character, RandomDisplacement, 0);

            var data = new Combat.ExplodData();

            data.Scale           = Vector2.One;
            data.AnimationNumber = animationnumber;
            data.CommonAnimation = true;
            data.Location        = (Vector2)offset;
            data.PositionType    = PositionType.P1;
            data.RemoveTime      = -2;
            data.DrawOnTop       = false;
            data.OwnPalFx        = true;
            data.SpritePriority  = drawunder ? -9 : 9;
            data.Random          = new Point(randomdisplacement / 2, randomdisplacement / 2);
            data.Transparency    = new Blending();
            data.Creator         = character;
            data.Offseter        = character;

            var explod = new Combat.Explod(character.Engine, data);

            if (explod.IsValid)
            {
                explod.Engine.Entities.Add(explod);
            }
        }
Example #2
0
        public override void Run(Combat.Character character)
        {
            int?time       = EvaluationHelper.AsInt32(character, Time, 30);
            var buffertime = EvaluationHelper.AsInt32(character, EndCommandBufferTime, 0);
            var movetime   = EvaluationHelper.AsInt32(character, MoveTime, 0);
            var pausebg    = EvaluationHelper.AsBoolean(character, PauseBackgrounds, true);
            var power      = EvaluationHelper.AsInt32(character, PowerAdd, 0);

#warning Documentation states that default should be 30. Testing looks to be 100.
            var animationnumber = EvaluationHelper.AsInt32(character, AnimationNumber, 100);

            var soundid           = EvaluationHelper.AsSoundId(character, SoundId, null);
            var animationposition = EvaluationHelper.AsPoint(character, AnimationPosition, new Point(0, 0));
            var darkenscreen      = EvaluationHelper.AsBoolean(character, DarkenScreen, true);
            var p2defmul          = EvaluationHelper.AsSingle(character, P2DefenseMultiplier, null);
            var unhittable        = EvaluationHelper.AsBoolean(character, Unhittable, true);

            if (time == null)
            {
                return;
            }

            var pause = character.Engine.SuperPause;
            pause.Set(character, time.Value, buffertime, movetime, false, pausebg);

            character.BasePlayer.Power += power;

            var data = new Combat.ExplodData();
            data.PositionType    = PositionType.P1;
            data.Location        = (Vector2)animationposition;
            data.RemoveTime      = -2;
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, true);
            data.AnimationNumber = animationnumber;
            data.Scale           = Vector2.One;
            data.SuperMove       = true;
            data.Creator         = character;
            data.Offseter        = character;
            data.DrawOnTop       = true;

            var explod = new Combat.Explod(character.Engine, data);
            if (explod.IsValid)
            {
                explod.Engine.Entities.Add(explod);
            }

            if (soundid != null)
            {
                Audio.SoundManager soundmanager = SoundId.IsCommon(true) ? character.Engine.CommonSounds : character.SoundManager;
                soundmanager.Play(soundid.Value);
            }
        }
Example #3
0
        public override void Run(Combat.Character character)
        {
            Combat.ExplodData data = CreateExplodData(character);
            if (data == null)
            {
                return;
            }

            data.Creator  = character;
            data.Offseter = (data.PositionType == PositionType.P2) ? character.GetOpponent() : character;

            Combat.Explod explod = new Combat.Explod(character.Engine, data);
            if (explod.IsValid == true)
            {
                explod.Engine.Entities.Add(explod);
            }
        }
Example #4
0
        Combat.ExplodData CreateExplodData(Combat.Character character)
        {
            if (character == null) throw new ArgumentNullException("character");

            Int32? animationnumber = EvaluationHelper.AsInt32(character, AnimationNumber, null);
            Int32 id = EvaluationHelper.AsInt32(character, Id, -1);
            Point location = EvaluationHelper.AsPoint(character, Position, new Point(0, 0));
            Int32 horizfacing = EvaluationHelper.AsInt32(character, Facing, 1);
            Int32 vertfacing = EvaluationHelper.AsInt32(character, VerticalFacing, 1);
            Int32 bindtime = EvaluationHelper.AsInt32(character, BindTime, 0);
            Vector2 velocity = EvaluationHelper.AsVector2(character, Velocity, new Vector2(0, 0));
            Vector2 acceleration = EvaluationHelper.AsVector2(character, Acceleration, new Vector2(0, 0));
            Point randomdisplacement = EvaluationHelper.AsPoint(character, RandomDisplacement, new Point(0, 0));
            Int32 removetime = EvaluationHelper.AsInt32(character, RemoveTime, -2);
            Boolean supermove = EvaluationHelper.AsBoolean(character, Supermove, false);
            Int32 supermovetime = EvaluationHelper.AsInt32(character, SupermoveTime, 0);
            Int32 pausetime = EvaluationHelper.AsInt32(character, PauseMoveTime, 0);
            Vector2 scale = EvaluationHelper.AsVector2(character, Scale, new Vector2(1, 1));
            Int32 spritepriority = EvaluationHelper.AsInt32(character, SpritePriority, 0);
            Boolean ontop = EvaluationHelper.AsBoolean(character, DrawOnTop, false);
            Boolean ownpalette = EvaluationHelper.AsBoolean(character, OwnPalette, false);
            Boolean removeongethit = EvaluationHelper.AsBoolean(character, RemoveOnGetHit, false);
            Boolean ignorehitpause = EvaluationHelper.AsBoolean(character, ExplodIgnoreHitPause, true);
            Point? alpha = EvaluationHelper.AsPoint(character, Alpha, null);

            if (animationnumber == null) return null;

            SpriteEffects flip = SpriteEffects.None;
            if (horizfacing == -1) flip ^= SpriteEffects.FlipHorizontally;
            if (vertfacing == -1) flip ^= SpriteEffects.FlipVertically;

            Blending transparency = Transparency;
            if (transparency.BlendType == BlendType.Add && transparency.SourceFactor == 0 && transparency.DestinationFactor == 0)
            {
                if (alpha != null)
                {
                    transparency = new Blending(BlendType.Add, alpha.Value.X, alpha.Value.Y);
                }
                else
                {
                    transparency = new Blending();
                }
            }

            Combat.ExplodData data = new Combat.ExplodData();
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, false);
            data.AnimationNumber = animationnumber.Value;
            data.Id = id;
            data.RemoveTime = removetime;
            data.Location = (Vector2)location;
            data.PositionType = PositionType;
            data.Velocity = velocity;
            data.Acceleration = acceleration;
            data.Flip = flip;
            data.BindTime = bindtime;
            data.Random = randomdisplacement;
            data.SuperMove = supermove;
            data.SuperMoveTime = supermovetime;
            data.PauseTime = pausetime;
            data.Scale = scale;
            data.SpritePriority = spritepriority;
            data.DrawOnTop = ontop;
            data.OwnPalFx = ownpalette;
            data.RemoveOnGetHit = removeongethit;
            data.IgnoreHitPause = ignorehitpause;
            data.Transparency = transparency;

            return data;
        }
Example #5
0
        Combat.ExplodData CreateExplodData(Combat.Character character)
        {
            if (character == null)
            {
                throw new ArgumentNullException("character");
            }

            Int32?  animationnumber = EvaluationHelper.AsInt32(character, AnimationNumber, null);
            Int32   id                 = EvaluationHelper.AsInt32(character, Id, -1);
            Point   location           = EvaluationHelper.AsPoint(character, Position, new Point(0, 0));
            Int32   horizfacing        = EvaluationHelper.AsInt32(character, Facing, 1);
            Int32   vertfacing         = EvaluationHelper.AsInt32(character, VerticalFacing, 1);
            Int32   bindtime           = EvaluationHelper.AsInt32(character, BindTime, 0);
            Vector2 velocity           = EvaluationHelper.AsVector2(character, Velocity, new Vector2(0, 0));
            Vector2 acceleration       = EvaluationHelper.AsVector2(character, Acceleration, new Vector2(0, 0));
            Point   randomdisplacement = EvaluationHelper.AsPoint(character, RandomDisplacement, new Point(0, 0));
            Int32   removetime         = EvaluationHelper.AsInt32(character, RemoveTime, -2);
            Boolean supermove          = EvaluationHelper.AsBoolean(character, Supermove, false);
            Int32   supermovetime      = EvaluationHelper.AsInt32(character, SupermoveTime, 0);
            Int32   pausetime          = EvaluationHelper.AsInt32(character, PauseMoveTime, 0);
            Vector2 scale              = EvaluationHelper.AsVector2(character, Scale, new Vector2(1, 1));
            Int32   spritepriority     = EvaluationHelper.AsInt32(character, SpritePriority, 0);
            Boolean ontop              = EvaluationHelper.AsBoolean(character, DrawOnTop, false);
            Boolean ownpalette         = EvaluationHelper.AsBoolean(character, OwnPalette, false);
            Boolean removeongethit     = EvaluationHelper.AsBoolean(character, RemoveOnGetHit, false);
            Boolean ignorehitpause     = EvaluationHelper.AsBoolean(character, ExplodIgnoreHitPause, true);
            Point?  alpha              = EvaluationHelper.AsPoint(character, Alpha, null);

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

            SpriteEffects flip = SpriteEffects.None;

            if (horizfacing == -1)
            {
                flip ^= SpriteEffects.FlipHorizontally;
            }
            if (vertfacing == -1)
            {
                flip ^= SpriteEffects.FlipVertically;
            }

            Blending transparency = Transparency;

            if (transparency.BlendType == BlendType.Add && transparency.SourceFactor == 0 && transparency.DestinationFactor == 0)
            {
                if (alpha != null)
                {
                    transparency = new Blending(BlendType.Add, alpha.Value.X, alpha.Value.Y);
                }
                else
                {
                    transparency = new Blending();
                }
            }

            Combat.ExplodData data = new Combat.ExplodData();
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, false);
            data.AnimationNumber = animationnumber.Value;
            data.Id             = id;
            data.RemoveTime     = removetime;
            data.Location       = (Vector2)location;
            data.PositionType   = PositionType;
            data.Velocity       = velocity;
            data.Acceleration   = acceleration;
            data.Flip           = flip;
            data.BindTime       = bindtime;
            data.Random         = randomdisplacement;
            data.SuperMove      = supermove;
            data.SuperMoveTime  = supermovetime;
            data.PauseTime      = pausetime;
            data.Scale          = scale;
            data.SpritePriority = spritepriority;
            data.DrawOnTop      = ontop;
            data.OwnPalFx       = ownpalette;
            data.RemoveOnGetHit = removeongethit;
            data.IgnoreHitPause = ignorehitpause;
            data.Transparency   = transparency;

            return(data);
        }