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
}