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