예제 #1
0
        public PlayingState(StateManager stateManager,
                            ISoundEngine soundEngine,
                            Renderer renderer,
                            ResourceManager resourceManager) : base(stateManager)
        {
            physics  = new Physics();
            contacts = new List <Physics.Contact>();

            physics.Collision += (sender, contact) =>
            {
                if (contact.collider == Collider.Paddle)
                {
                    soundEngine.Play2D(ResourceManager.MediaPath + "puckHitPaddle.wav");
                    contacts.Add(contact);
                }
                if (contact.collider == Collider.Table)
                {
                    soundEngine.Play2D(ResourceManager.MediaPath + "puckHitWall.wav");
                    contacts.Add(contact);
                }
            };


            tableGraphicsObject = new Visual(
                GeometryFactory.CreateBox(
                    new Box2(-Constants.tableWidth * 0.5f, Constants.tableHeight * 0.5f,
                             Constants.tableWidth * 0.5f, -Constants.tableHeight * 0.5f)),
                new TextureEffect("table.png"));
            puckGraphicsObject = new Visual(
                GeometryFactory.CreateCircle(Constants.puckRadius, new Color4(1, 0, 0, 1)),
                new VertexColorEffect());
            paddleGraphicsObjects    = new Visual[2];
            paddleGraphicsObjects[0] = new Visual(
                GeometryFactory.CreateCircle(Constants.paddleRadius, new Color4(1, 1, 1, 1)),
                new VertexColorEffect());
            paddleGraphicsObjects[1] = new Visual(
                GeometryFactory.CreateCircle(Constants.paddleRadius, new Color4(1, 1, 1, 1)),
                new VertexColorEffect());

            gameFrame = new GameFrame();
            ai        = new AIPlayer();
        }