using System; using System.Collections.Generic; using System.Text; using SalsaModel.Scheduling; namespace SalsaModel.Actions { class CompositeActions { public static void TransferWeight(TimeLine timeLine, double time, double duration, SalsaMover mover, PositionModel.Side side) { CubanMotionAction.AddTo(timeLine, time, duration, mover, side, 0, 0); } public static CubanMotionAction StepForward(TimeLine timeLine, double start, double duration, SalsaMover mover, PositionModel.Side side, double distance) { timeLine.Add(start, duration, new MoveFootAction(mover, side, distance)); return CubanMotionAction.AddTo(timeLine, start, duration, mover, side, distance, 0); } public static void FollowForward(TimeLine timeLine, double start, double duration, SalsaMover leader, SalsaMover follower, PositionModel.Side side, double distance, double separation) { MoveFootAction toFollow = new MoveFootAction(leader, side, distance); timeLine.Add(start, duration, toFollow); CubanMotionAction.AddTo(timeLine, start, duration, leader, side, distance, 0); timeLine.Add(start, duration, new FollowAtFixedDistance(follower, leader, toFollow, separation)); } public static void OneBasicWithFollower(TimeLine _timeLine, double from, SalsaMover Boy, SalsaMover Girl, double separation) { CompositeActions.FollowForward(_timeLine, from + 0.0, 1.0, Boy, Girl, PositionModel.Side.Left, -15, separation); CompositeActions.FollowForward(_timeLine, from + 1.0, 1.0, Boy, Girl, PositionModel.Side.Right, -15, separation); CompositeActions.FollowForward(_timeLine, from + 2.0, 1.0, Boy, Girl, PositionModel.Side.Left, 20, separation); CompositeActions.FollowForward(_timeLine, from + 4.0, 1.0, Boy, Girl, PositionModel.Side.Right, 15, separation); CompositeActions.FollowForward(_timeLine, from + 5.0, 1.0, Boy, Girl, PositionModel.Side.Left, 15, separation); CompositeActions.FollowForward(_timeLine, from + 6.0, 1.0, Boy, Girl, PositionModel.Side.Right, -20, separation); } public static void OneBasicBoy(TimeLine _timeLine, double from, SalsaMover Boy) { CompositeActions.StepForward(_timeLine, from + 0.0, 1.0, Boy, PositionModel.Side.Left, -15); CompositeActions.StepForward(_timeLine, from + 1.0, 1.0, Boy, PositionModel.Side.Right, -15); CompositeActions.StepForward(_timeLine, from + 2.0, 1.0, Boy, PositionModel.Side.Left, 20); CompositeActions.StepForward(_timeLine, from + 4.0, 1.0, Boy, PositionModel.Side.Right, 15); CompositeActions.StepForward(_timeLine, from + 5.0, 1.0, Boy, PositionModel.Side.Left, 15); CompositeActions.StepForward(_timeLine, from + 6.0, 1.0, Boy, PositionModel.Side.Right, -20); } public static void HalfRightHalfLeft(TimeLine _timeLine, double from, SalsaMover Girl) { CompositeActions.StepForward(_timeLine, from + 0.0, 1.0, Girl, PositionModel.Side.Right, 15); _timeLine.Add(from + 1.0, 1.0, new HalfTurn(Girl, PositionModel.Side.Left, 15, SalsaMover.TurnDirection.Right)); CompositeActions.StepForward(_timeLine, from + 2.0, 1.0, Girl, PositionModel.Side.Right, -20); CompositeActions.StepForward(_timeLine, from + 4.0, 1.0, Girl, PositionModel.Side.Left, -15); _timeLine.Add(from + 5.0, 1.0, new HalfTurn(Girl, PositionModel.Side.Right, -15, SalsaMover.TurnDirection.Left)); CompositeActions.StepForward(_timeLine, from + 6.0, 1.0, Girl, PositionModel.Side.Left, 20); } public static void TurnOnTheSpot(TimeLine _timeLine, double from, SalsaMover Girl) { CompositeActions.StepForward(_timeLine, from + 0.0, 1.0, Girl, PositionModel.Side.Right, 0); _timeLine.Add(from + 1.0, 1.0, new HalfTurn(Girl, PositionModel.Side.Left, 0, SalsaMover.TurnDirection.Right)); CompositeActions.StepForward(_timeLine, from + 2.0, 1.0, Girl, PositionModel.Side.Right, -0); CompositeActions.StepForward(_timeLine, from + 4.0, 1.0, Girl, PositionModel.Side.Left, -0); _timeLine.Add(from + 5.0, 1.0, new HalfTurn(Girl, PositionModel.Side.Right, -0, SalsaMover.TurnDirection.Left)); CompositeActions.StepForward(_timeLine, from + 6.0, 1.0, Girl, PositionModel.Side.Left, 0); } public static void SingleRightTurn(TimeLine _timeLine, double from, SalsaMover Girl) { CompositeActions.StepForward(_timeLine, from + 0.0, 1.0, Girl, PositionModel.Side.Right, 15); //_timeLine.Add(from + 1.0, 1.0, new HalfTurn(Girl, PositionModel.Side.Left, 15, SalsaMover.TurnDirection.Right)); //_timeLine.Add(from + 2.0, 2.0, new HalfTurn(Girl, PositionModel.Side.Right, -20, SalsaMover.TurnDirection.Right)); _timeLine.Add(from+1.0, 3.0, new SRTurn(Girl, PositionModel.Side.Left, 15)); //CompositeActions.StepForward(_timeLine, from + 2.0, 1.0, Girl, PositionModel.Side.Right, -20); CompositeActions.StepForward(_timeLine, from + 4.0, 1.0, Girl, PositionModel.Side.Left, -15); CompositeActions.StepForward(_timeLine, from + 5.0, 1.0, Girl, PositionModel.Side.Right, -15); CompositeActions.StepForward(_timeLine, from + 6.0, 1.0, Girl, PositionModel.Side.Left, 20); } } }