public void CreatePaddleTest2()
        {
            Paddle p = PaddleFactory.CreatePaddle(PongRoyale_shared.PaddleType.Short, 10);
            Type   t = typeof(ShortPaddle);

            Assert.IsTrue(p.Id == 10 && p.GetType().Equals(t));
        }
Exemple #2
0
        public void InitLogic(Dictionary <byte, NetworkPlayer> players)
        {
            PlayerCount     = players.Count;
            Mediator        = MainForm.Instance.Mediator;
            DoAfterGameLoop = new List <Action>();
            PlayerPaddles   = new Dictionary <byte, Paddle>();
            ArenaBalls      = new Dictionary <byte, IBall>();
            ArenaObjects    = new Dictionary <byte, ArenaObject>();

            float deltaAngle = SharedUtilities.PI * 2 / PlayerCount;
            float angle      = (-SharedUtilities.PI + deltaAngle) / 2f;

            foreach (var player in players.Values)
            {
                PaddleType pType  = player.PaddleType;
                Paddle     paddle = PaddleFactory.CreatePaddle(pType, player.Id);
                paddle.SetPosition(SharedUtilities.RadToDeg(angle));
                PlayerPaddles.Add(player.Id, paddle);
                player.SetLife(paddle.Life);
                if (Mediator.GetBool("IdMatches", player.Id))
                {
                    LocalPaddle = paddle;
                }
                paddle.AddClampAngles(SharedUtilities.RadToDeg(angle - deltaAngle / 2), SharedUtilities.RadToDeg(angle + deltaAngle / 2));
                angle += deltaAngle;
            }
            AlivePaddleCount         = PlayerPaddles.Count;
            StartingAlivePaddleCount = AlivePaddleCount;



            UpdatableRoot = new UpdateComposite();
            UpdatableRoot.Add(LocalPaddle.Id, LocalPaddle);

            UpdateComponent spawnerBranch = new UpdateComposite();

            spawnerBranch.Add(spawnerBranch.GetNextId(), new ObstacleSpawner(GameData.ObstacleSpawnerParams, ArenaObjectFactories.Values.ToArray()));
            spawnerBranch.Add(spawnerBranch.GetNextId(), new PowerUpSpawner(GameData.PowerUpSpawnerParams, ArenaObjectFactories.Values.ToArray()));
            UpdatableRoot.Add(UpdatableRoot.GetNextId(), spawnerBranch);

            UpdateComponent objectBranch = new UpdateComposite();

            ObjectBranchId = UpdatableRoot.GetNextId();
            UpdatableRoot.Add(ObjectBranchId, objectBranch);

            UpdateComponent ballBranch = new UpdateComposite();

            BallBranchId = UpdatableRoot.GetNextId();
            UpdatableRoot.Add(BallBranchId, ballBranch);

            BallType bType = RoomSettings.Instance.BallType;
            Ball     ball  = Ball.CreateBall(0, bType, ArenaDimensions.Center, GameData.DefaultBallSpeed, Vector2.RandomInUnitCircle(), GameData.DefaultBallSize);

            ArenaBalls.Add(0, ball);
            ballBranch.Add(0, ball);

            IsInitted = true;
            PauseGame(false);
        }
Exemple #3
0
        // Clear old actors and create new ones based on the settings
        private void CreateActors()
        {
            _actorRegistry.Clear();

            PaddleBase leftPaddle  = _paddleFactory.CreatePaddle(_settingsManager.Settings.Gameplay.LeftPaddleType, PaddleSide.Left);
            PaddleBase rightPaddle = _paddleFactory.CreatePaddle(_settingsManager.Settings.Gameplay.RightPaddleType, PaddleSide.Right);

            _actorRegistry.AddRange(leftPaddle, rightPaddle);

            IActor[] balls = new IActor[_settingsManager.Settings.Gameplay.BallCount];

            for (int i = 0; i < balls.Length; i++)
            {
                balls[i] = _ballFactory.CreateBall();
            }

            _actorRegistry.AddRange(balls);
        }
Exemple #4
0
        public void OnCollisionTest()
        {
            Vector2 startingDir = new Vector2(1, 1);
            Paddle  paddle      = PaddleFactory.CreatePaddle(PaddleType.Normal, (byte)0);
            Ball    testBall    = Ball.CreateBall(0, BallType.Normal, new Vector2(225.5 + 200.5, 225.5), GameData.DefaultBallSpeed, startingDir, GameData.DefaultBallSize);

            testBall.OnCollision(paddle, null);
            Vector2 dirAfterCollision = testBall.Direction;

            Assert.AreNotEqual(startingDir, dirAfterCollision);
        }
Exemple #5
0
        public void CheckCollisionWithPaddlesTest()
        {
            Vector2 startingDir = new Vector2(1, 1);
            Paddle  paddle      = PaddleFactory.CreatePaddle(PaddleType.Normal, (byte)0);

            paddle.SetPosition(-5);
            Ball testBall = Ball.CreateBall(0, BallType.Normal, new Vector2(225.5 + 200.5, 225.5), GameData.DefaultBallSpeed, startingDir, GameData.DefaultBallSize);
            Dictionary <byte, Paddle> paddleDict = new Dictionary <byte, Paddle>();

            paddleDict.Add(paddle.Id, paddle);
            testBall.CheckCollisionWithPaddles(paddleDict);
            Vector2 dirAfterCollision = testBall.Direction;

            Assert.AreNotEqual(startingDir, dirAfterCollision);
        }
Exemple #6
0
        public void CheckOutOfBoundsTest()
        {
            Paddle paddle  = PaddleFactory.CreatePaddle(PaddleType.Normal, (byte)0);
            Paddle paddle2 = PaddleFactory.CreatePaddle(PaddleType.Short, (byte)1);
            Paddle paddle3 = PaddleFactory.CreatePaddle(PaddleType.Long, (byte)2);

            paddle.SetPosition(-5);
            paddle2.SetPosition(-10);
            Ball testBall = Ball.CreateBall(0, BallType.Normal, new Vector2(225.5 + 200.5, 225.5), GameData.DefaultBallSpeed, Vector2.RandomInUnitCircle(), GameData.DefaultBallSize);
            Dictionary <byte, Paddle> paddleDict = new Dictionary <byte, Paddle>();

            paddleDict.Add(paddle.Id, paddle);
            paddleDict.Add(paddle2.Id, paddle2);
            paddleDict.Add(paddle3.Id, paddle3);
            bool isOutOfBounds = testBall.CheckOutOfBounds(0, paddleDict, out byte paddleId);

            Assert.IsTrue(isOutOfBounds);
        }
Exemple #7
0
        private static void DoWithFlyweight(int n)
        {
            Stopwatch sw = new Stopwatch();
            long      before, after;

            sw.Reset();
            before = GC.GetTotalMemory(false);
            sw.Start();
            for (int i = 0; i < n; i++)
            {
                var type = (PaddleType)(i % 4);
                PaddleFactory.CreatePaddle(type, 0);
            }
            sw.Stop();
            after = GC.GetTotalMemory(false);
            long usedWith = after - before;
            long msWith   = sw.ElapsedMilliseconds;

            Debug.WriteLine($"{n}: With Flyweight: {msWith} milliseconds. {usedWith} bytes");
        }
Exemple #8
0
 public Player(RenderWindow rw)
 {
     this._points = 0;
     this._paddle = PaddleFactory.CreatePaddle(rw, PaddleTypes.Player);
 }
Exemple #9
0
 public Enemy(RenderWindow rw)
 {
     this._points = 0;
     this._paddle = PaddleFactory.CreatePaddle(rw, PaddleTypes.Enemy);
 }