public void Initialize()
        {
            _dt = 1;

            t_ = 0;

            var currentStrike = gameObjects["currentStrikeInfo"] as StrikeInfo;

            if (currentStrike == null) throw new NullReferenceException("currentStrikeInfo");

            _strikeModel = currentStrike.Model;

            _strike = gameObjects["strike"] as Strike;

            if (_strike == null) throw new NullReferenceException("strike");

            _t2 = Convert.ToInt32((_strike.StrikeTimeSpan.TotalSeconds + _strikeModel.Delay) * 1000);

            _ball = gameObjects["ball"] as Ball;

            _ballStartPosition = new Vector2(_ball.Position.X, _ball.Position.Y);

            _hole = gameObjects["hole"] as Hole;

            var currentUser = gameObjects["currentUser"] as User;

            if (currentUser == null) throw new NullReferenceException("currentUser");
        }
        public void EvaluteShift3()
        {
            var strikeModel = new StrikeModel { Velocity = 1, Delay = 1 };

            var kick = new LinearWithTimeDelayBallKickPhysics(strikeModel);

            var shift = kick.EvaluteShift(1);

            Assert.AreEqual(2, shift.X);
            Assert.AreEqual(0, shift.Y);
        }
        public void KickBall()
        {
            var generatorMock = new Moq.Mock<IRandom>();

            var strikeModel = new StrikeModel { Delay = 0.1, Velocity = 1 };

            generatorMock.Setup(t => t.Sample()).Returns(0.4);

            var ballPositionX = 0.0d;
            var holePositionX = 1.0d;

            var competitor = new Competitor(ballPositionX, holePositionX, generatorMock.Object, new LinearWithTimeDelayBallKickPhysics(strikeModel));

            var kick = competitor.KickBall();

            Assert.AreEqual(1.4, kick.BallShift.X);
            Assert.AreEqual(1.3, Math.Round(kick.ElapsedTime, 3));
        }
        public void EvaluteTimeDelay6()
        {
            var strikeModel = new StrikeModel { Velocity = 0, Delay = 0 };

            var kick = new LinearWithTimeDelayBallKickPhysics(strikeModel);

            var time = kick.EvaluteElapsedTime(new Vector2(1, 0));

            Assert.IsTrue(double.IsInfinity(time));
        }
        public void EvaluteTimeDelay5()
        {
            var strikeModel = new StrikeModel { Velocity = 2, Delay = 1 };

            var kick = new LinearWithTimeDelayBallKickPhysics(strikeModel);

            var time = kick.EvaluteElapsedTime(new Vector2(10, 0));

            Assert.AreEqual(4, time);
        }
 public LinearWithTimeDelayBallKickPhysics(StrikeModel strikeModel)
 {
     _strikeModel = strikeModel;
 }