コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: WorldManager.cs プロジェクト: Sway623/Mario-3902
        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();
        }
コード例 #3
0
 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);
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: WorldManager.cs プロジェクト: Sway623/Mario-3902
        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);
        }