public Vector2 loadCurrentLevel(string FileName) { currLvlText.SetData<Color>(blankLevel); Vector2 PlayerVector = new Vector2(); projectileArr = new Projectile[50];//arbitrary value isDoorOpen = false; levelFile = File.ReadAllLines(FileName); collisionCheck = new int[levelFile[0].Length,levelFile.Length]; destroyTheseBricks = new bool[levelFile[0].Length, levelFile.Length]; destructBrickArr = new AnimatedSprite[levelFile[0].Length, levelFile.Length]; badShooters = new AnimatedSprite[levelFile[0].Length, levelFile.Length]; int x, y, lineY, valueX, currProjectile;// 20 by 20 x = 0; y = 0; lineY = 0; valueX = 0; currProjectile = 0; foreach (string line in levelFile) { foreach (char value in line) { if (value == '-') { collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), contBrick, 0, contBrick.Length); } if (value == '[') { collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), beginBrick, 0, contBrick.Length); } if (value == ']') { collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), endBrick, 0, contBrick.Length); } if (value == '_') { collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), singleBrick, 0, contBrick.Length); } if (value == 'T') { doorX = x; doorY = y; collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), topDoor, 0, contBrick.Length); } if (value == '|') { collisionCheck[valueX, lineY] = 1; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), botDoor, 0, contBrick.Length); openDoor.LoadSprite(brick, x + (brickSize / 2), y, 0, 0, 6, brickSize, brickSize * 2, 10); } if (value == 'X') { collisionCheck[valueX, lineY] = 2; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), destructBrick, 0, contBrick.Length); destructBrickArr[valueX, lineY] = new AnimatedSprite(); destructBrickArr[valueX, lineY].LoadSprite(brick, x + (brickSize / 2), y + (brickSize / 2), 0, 6 * brickSize, 3, brickSize, brickSize, 15); } if (value == '>')//shooter facing right { collisionCheck[valueX, lineY] = 4; collisionCheck[valueX, lineY - 1] = 4; badShooters[valueX, lineY] = new AnimatedSprite(); badShooters[valueX, lineY].LoadSprite(badGuys, x + brickSize/2, y, 0, 0, 7, 50, 100, 9, true); projectileArr[currProjectile] = new Projectile(x, y, true, projectile); currProjectile++; } if (value == '<') { collisionCheck[valueX, lineY] = 4; collisionCheck[valueX, lineY - 1] = 4; badShooters[valueX, lineY] = new AnimatedSprite(); badShooters[valueX, lineY].LoadSprite(badGuys, x + brickSize / 2, y, 0, 0, 7, 50, 100, 9, false); projectileArr[currProjectile] = new Projectile(x, y, false, projectile); currProjectile++; } if (value == 'C') { collisionCheck[valueX, lineY] = 3; totalCollectables++; currLvlText.SetData<Color>(0, new Rectangle(x, y, brickSize, brickSize), collectable, 0, contBrick.Length); } if (value == 'O') { PlayerVector.X = (float)x; PlayerVector.Y = (float)y; } x += brickSize; valueX++; } x = 0; y += brickSize; valueX = 0; lineY++; } return PlayerVector; }
public int bulletCollisionPlayer(int playerX, int playerY, int pHeight, int pWidth, bool duck, Projectile bullet) { int projX = (int)bullet.bulletX(); int projY = (int)bullet.bulletY(); if (checkCollision(projX, projY, true)) { bullet.bulletCollision(); return 0; } else if (projX > playerX - pWidth/2 && projX < playerX + pWidth/2) { if (duck) if (projY < playerY + pHeight / 2 && projY > playerY) return 1; else return 0; else if (projY < playerY + pHeight / 2 && projY > playerY - pHeight / 2) return 1; else return 0; } else return 0; }