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