public static LevelUtility.SpriteSet SwitchLevel(LevelUtility.SpriteSet spriteSet, int setNum, String currentFilename) { MarioState temp = spriteSet.players[0].GetState(); if (setNum == 0) { firstSet = new LevelUtility.SpriteSet(0); onePositionDict = new Dictionary <string, List <Vector2> >(); LevelUtility.InitializePositionKey(onePositionDict); } else { secondSet = new LevelUtility.SpriteSet(1); twoPositionDict = new Dictionary <string, List <Vector2> >(); LevelUtility.InitializePositionKey(twoPositionDict); } if (filenames[setNum] == currentFilename) { marioStartLocation.Y -= AdjustMarioStart(temp); camera = new CameraController(game, new Vector2(marioStartLocation.X - 20, 0), screenHeight, screenWidth); } spriteSet = LoadLevel(currentFilename, new Vector2(marioStartLocation.X - 20, 0), setNum, spriteSet); ResumeLastState(temp, spriteSet); filenames[setNum] = currentFilename; return(spriteSet); }
public static void Initialize(Game1 myGame, String filename) { game = myGame; setNum = 0; if (filename.Equals("")) { filenames[0] = "Mario Level 1-1.csv"; } else { filenames[0] = filename; } filenames[1] = ""; currentFilename = filenames[0]; LevelManager.ResetLevel(); LevelManager.Initialize(myGame); marioStartLocation = new Vector2(50, screenHeight - 50); spriteSet.players = new List <IPlayer>(); spriteSet = LevelManager.LoadLevel(currentFilename, new Vector2(0, 0), setNum, spriteSet); int life = 3; camera = GetCamera(); spriteSet.players[0].SetLives(life); spriteSet.players[0].SwitchToSmallMario(false); Display.Initalize(); RemainingLives.Initalize(); RemainingLives.ResetTimer(); }
public static void ResetLevel() { onePositionDict = new Dictionary <string, List <Vector2> >(); twoPositionDict = new Dictionary <string, List <Vector2> >(); LevelUtility.InitializePositionKey(onePositionDict); LevelUtility.InitializePositionKey(twoPositionDict); firstSet = new LevelUtility.SpriteSet(0); secondSet = new LevelUtility.SpriteSet(1); }
public static void ResumeLastState(MarioState lastState, LevelUtility.SpriteSet spriteSet) { if (lastState == MarioState.SMALL) { spriteSet.players[0].SwitchToSmallMario(false); spriteSet.players[0].ManualMoveY(-16); } else if (lastState == MarioState.LARGE) { spriteSet.players[0].SwitchToBigMario(false); //players[0].ManualMoveY(32); } else if (lastState == MarioState.FIRE) { spriteSet.players[0].SwitchToFireMario(false); } }
public static LevelUtility.SpriteSet LoadLevel(String filename, Vector2 cameraStart, int setNum, LevelUtility.SpriteSet spriteSet) { if (setNum == 0) { positionDict = onePositionDict; } else { positionDict = twoPositionDict; } CSVReader csvReader = new CSVReader(); List <string> csvLines = csvReader.getLines(filename); CSVParser levelParser = new CSVParser(); camera = new CameraController(game, cameraStart, screenHeight, screenWidth); spriteSet = SwitchSpriteSet(setNum); levelParser.parse(positionDict, csvLines, screenHeight, screenWidth); int levelHeight = csvLines.Count(); int levelWidth = csvLines[0].Count(); int worldHeight = screenHeight; int worldWidth = levelWidth; if (spriteSet.players.Count > 0) { lastState = spriteSet.players[0].GetState(); lives = spriteSet.players[0].GetLives(); } spriteSet.players = new List <IPlayer>(); SpriteGenerator spriteGenerator = new SpriteGenerator(); foreach (KeyValuePair <string, List <Vector2> > pair in positionDict) { spriteGenerator.generateSprites(pair.Key, pair.Value, spriteSet.players, spriteSet.blocks, spriteSet.pipes, spriteSet.goombas, spriteSet.koopas, spriteSet.coins, spriteSet.items, spriteSet.objects); } ResumeLastState(lastState, spriteSet); return(spriteSet); }
public static void Update(GameTime gameTime) { if (switchLevel) { setNum = 1 - setNum; spriteSet = LevelManager.SwitchLevel(spriteSet, setNum, currentFilename); spriteSet.players[0].SetLocation(new Vector2(marioStartLocation.X, marioStartLocation.Y - 16)); switchLevel = false; } CollisionChecker gameCollisionChecker = new CollisionChecker(); gameCollisionChecker.CheckEachCollision(spriteSet.players, spriteSet.blocks, spriteSet.pipes, spriteSet.goombas, spriteSet.koopas, spriteSet.coins, spriteSet.items, spriteSet.projectiles); //When we are within a 1/3 of the camera's width from an enemy, begin to animate camera = GetCamera(); int rightThreshold = (int)camera.GetPosition().X; foreach (Mario mario in spriteSet.players) { if (mario.IsDead()) { ResetAllCommand reset = new ResetAllCommand(); int lives = mario.GetLives(); reset.Execute(game); if (lives - 1 <= 0) { GameOver.ResetTimer(); GameOver.EndGame(); } else { mario.SetLives(lives - 1); } } mario.Update(); } foreach (IPipe pipe in spriteSet.pipes) { pipe.Update(); } foreach (Goomba goomba in spriteSet.goombas) { //If the goomba's x position is within 4/ of the width of the rectangle if (goomba.GetRectangle().X < ((20 + camera.GetPosition().X) + camera.GetWidth())) { goomba.Update(); } } foreach (Koopa koopa in spriteSet.koopas) { if (koopa.GetRectangle().X < ((20 + camera.GetPosition().X) + camera.GetWidth())) { koopa.Update(); } } foreach (IItem item in spriteSet.items) { item.Update(); } foreach (IBlock block in spriteSet.blocks) { block.Update(gameTime); } foreach (Fireball fireball in spriteSet.projectiles) { fireball.Update(); } camera.Update(gameTime); Display.Update(gameTime); }