namespace GameName { public class GameData { #region reference to engine managers and data public GameForm form; public InputManager inpMan; public SpriteManager sprMan; public TextManager textMan; public GuiManager guiMan; public Camera camera; public Cursor cursor; public Random random; public ShapeManager shaMan; public GameName.Screens.ScreenManager screenManager; #endregion Sprite ship; //The player's ship Sprite bullet; //The player's ship's bullet Sprite redball; SpriteArray BadGuy; public void Initialize(GameForm form) { #region initialize engine managers and data this.form = form; sprMan = GameForm.sprMan; inpMan = GameForm.inpMan; textMan = GameForm.textMan; guiMan = GameForm.guiMan; camera = GameForm.camera; cursor = GameForm.cursor; random = GameForm.random; shaMan = GameForm.shaMan; screenManager = GameForm.screenManager; #endregion ship = sprMan.AddSprite("Game Ship.bmp"); //redball = sprMan.AddSprite("redball.bmp"); BadGuy = new SpriteArray(); BadGuy.Add(sprMan.AddSprite("redball.bmp")); } public void Activity() { if (cursor.primaryClick) { ShootBullet(); } } public void Shot(Sprite sprite, SpriteManager sprMan) { //Here is the problem, I can't use BadGuy array in place of redball // Vic says, "Sure you can. Observe:" for(int i = BadGuy.Count - 1; i > -1; i--) { if (FRB.Collisions.rectCollisionMove(sprite, BadGuy[i])) { sprMan.Remove(sprite); sprMan.Remove(BadGuy[i]); // no need to do anything to the BadGuy array because of two-way relationships } } /* if (FRB.Collisions.rectCollisionMove(sprite, redball)) { sprMan.RemoveSprite(bullet); BadGuy.Remove(redball); } */ } public void ShootBullet() { bullet = sprMan.AddSprite("Bullet.bmp"); bullet.z = 1; bullet.x = ship.x; bullet.y = ship.y; bullet.rotZ = (float)Math.Atan2(cursor.YAt(bullet.z) - bullet.y, cursor.XAt(bullet.z) - bullet.x); float speed = 50; // change to make bullet faster or slower bullet.xVelocity = (float)Math.Cos(bullet.rotZ) * speed; bullet.yVelocity = (float)Math.Sin(bullet.rotZ) * speed; bullet.velocity += ship.velocity; bullet.customFunctions += new customFunction(Shot); // calls the custom function for the collion }