public class GameData { // declare variables of class scope here Sprite playerBall; Joystick joystick; Sprite rightWall; Sprite leftWall; Sprite topWall; Sprite bottomWall; Sprite obstacle1; SpriteArray staticCollidables; SpriteArray movableCollidables; public void Initialize(GameForm form) { playerBall = sprMan.AddSprite("redball.bmp"); playerBall.sclY = .5f; NPC = sprMan.AddSprite("redball.bmp"); NPC.x = -3; joystick = inpMan.joystickArray[0]; joystick.DeadZone = 200; float wallScl = 2; rightWall = sprMan.AddUntexturedSprite(); rightWall.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2; rightWall.tintBlue = 255; rightWall.sclX = wallScl; rightWall.sclY = 20; rightWall.x = camera.XEdgeAt(0) - wallScl; topWall = sprMan.AddUntexturedSprite(); topWall.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2; topWall.tintBlue = 255; topWall.sclX = 30; topWall.sclY = wallScl; topWall.y = camera.YEdgeAt(0) - wallScl; leftWall = rightWall.Clone(); sprMan.AddSprite(leftWall); leftWall.x = -camera.XEdgeAt(0) + wallScl; bottomWall = topWall.Clone(); sprMan.AddSprite(bottomWall); bottomWall.y = -camera.YEdgeAt(0) + wallScl; obstacle1 = sprMan.AddUntexturedSprite(); obstacle1.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2; obstacle1.tintBlue = 255; obstacle1.x = 5; obstacle1.sclX = obstacle1.sclY = 2; obstacle1.rotZ = 1; // add the objects to the static collidables: staticCollidables = new SpriteArray(); staticCollidables.Add(topWall); staticCollidables.Add(bottomWall); staticCollidables.Add(leftWall); staticCollidables.Add(rightWall); staticCollidables.Add(obstacle1); movableCollidables = new SpriteArray(); movableCollidables.Add(playerBall); movableCollidables.Add(NPC); // uncomment this line and pass the qualified string name of the first // Screen class that the game should show upon execution. //screenManager.Start("NameSpace.Screens.ScreenClassName"); } public void Activity() { // this can be left uncommented - won't do anything if there are no active Screens screenManager.Activity(); // assume thruster is button 0 (A on the 360 controller) if (joystick.Down(0)) { // we know our angle is rotZ, so let's get the x and y components: float absoluteAcceleration = 10; playerBall.xAcceleration = (float)Math.Cos(playerBall.rotZ) * absoluteAcceleration; playerBall.yAcceleration = (float)Math.Sin(playerBall.rotZ) * absoluteAcceleration; } else { playerBall.xAcceleration = playerBall.yAcceleration = 0; } // left/right spins the player playerBall.rotZVelocity = -joystick.x / 200.0f; // cap the velocity: playerBall.xVelocity = Math.Min(10, playerBall.xVelocity); playerBall.xVelocity = Math.Max(-10, playerBall.xVelocity); playerBall.yVelocity = Math.Min(10, playerBall.yVelocity); playerBall.yVelocity = Math.Max(-10, playerBall.yVelocity); // perform Collisions here: // assumes all movables are circles, all statics are rectangles foreach (Sprite movable in movableCollidables) { foreach (Sprite staticSprite in staticCollidables) Collisions.circleBounceRect(movable, staticSprite); foreach (Sprite otherMovable in movableCollidables) if (otherMovable != movable) Collisions.circleBounceBothCircle(movable, otherMovable); } } public void AfterFrameActivity() { // usually, the only code that goes here is text printing with the TextManager // if drawing text, uncomment the following line: // textMan.BeginDrawing(); } }