예제 #1
0
        public override void Run(Combat.Character character)
        {
            Combat.ModifyExplodData data = CreateModifyExplodData(character);
            if (data == null)
            {
                return;
            }

            foreach (Combat.Explod explod in character.GetExplods(data.Id))
            {
                explod.Modify(data);
            }
        }
예제 #2
0
        Combat.ModifyExplodData CreateModifyExplodData(Combat.Character character)
        {
            if (character == null)
            {
                throw new ArgumentNullException("character");
            }

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

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

            SpriteEffects?flip = null;

            if (horizfacing != null || vertfacing != null)
            {
                flip = SpriteEffects.None;
            }

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

            Blending?transparency = Transparency;

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

            Combat.ModifyExplodData data = new Combat.ModifyExplodData();
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, false);
            data.AnimationNumber = animationnumber;
            data.Id             = id.Value;
            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);
        }
예제 #3
0
        Combat.ModifyExplodData CreateModifyExplodData(Combat.Character character)
        {
            if (character == null) throw new ArgumentNullException("character");

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

            if (id == null) return null;

            SpriteEffects? flip = null;
            if (horizfacing != null || vertfacing != null) flip = SpriteEffects.None;

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

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

            Combat.ModifyExplodData data = new Combat.ModifyExplodData();
            data.CommonAnimation = EvaluationHelper.IsCommon(AnimationNumber, false);
            data.AnimationNumber = animationnumber;
            data.Id = id.Value;
            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;
        }