// Reloads the level and reinitializes Mario to his default state.
        public void Reset()
        {
            Enemies.Clear();
            Blocks.Clear();
            Pipes.Clear();
            Coins.Clear();
            Checkpoints.Clear();
            Flagpoles.Clear();
            levelData.Clear();

            InvisibleBarrier = new InvisibleBarrier(Vector2.Zero);
            CoinRoomPosition = Vector2.Zero;

            DynamicObjects.Clear();
            StaticObjects.Clear();

            PowerUpState = false;

            Mario.Instance.ResetPlayer();

            SoundManager.Instance.gameOverPlayOnce = true;

            levelData = ParseLevelCSV(fileName);
            BuildLevel(levelData);
        }
예제 #2
0
        private void Load(string fileName)
        {
            Processors.Clear();
            Pipes.Clear();

            try
            {
                //var serializer = new XmlSerializer(typeof(Pipeline));
                using (var stream = new FileStream(fileName, FileMode.Open))
                {
                    Model = _serializer.ReadObject(stream) as Pipeline ?? new Pipeline();

                    foreach (var target in Model.Targets)
                    {
                        AddNode(target);
                    }

                    BuildPipeViewModels(Model);
                }
            }
            catch (Exception e)
            {
                ExceptionMessageBox.ShowException(e, String.Format("Could not load pipeline. {0}.", e.Message));
            }

            Name = fileName;
        }
예제 #3
0
        public void LoadWorld(string levelName, Game1 game, bool clearMario = true)
        {
            var state = (game.Mario == null) ? null : game.Mario.State;

            game.LevelName = levelName;
            game.Map       = null;
            game.Mario     = null;
            Items.Clear();
            Enemies.Clear();
            Fireballs.Clear();
            Pipes.Clear();
            Background.Clear();
            Texts.Clear();
            MovingTexts.Clear();
            Achievements.Clear();
            Game1.Camera.Position = Vector2.Zero;
            LevelName             = levelName;
            string level = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Content\\Levels\\" + levelName + ".csv";

            new LevelLoader(game, level);
            if (!clearMario)
            {
                if (state.Name == "Big")
                {
                    game.Mario.ToBig();
                }
                else if (state.Name == "Fire")
                {
                    game.Mario.ToFire();
                }
            }
        }
예제 #4
0
        private void OnNew()
        {
            var defaultPipeline = MessageBox.Show("Do you want create an new pipeline?", "Default Pipeline", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (defaultPipeline != MessageBoxResult.Yes)
            {
                return;
            }

            foreach (var processor in Processors)
            {
                processor.Stop();
            }

            Model.Stop();

            Processors.Clear();
            Pipes.Clear();
            Model = new Pipeline();
        }
예제 #5
0
        private static void LoadMap(string name)
        {
            // == Purge Existing Stage

            Spatial.Clear();
            Pipes.Clear();

            // Kill entities generated by loading map
            foreach (var o in FindEntities <Spawner>())
            {
                RemoveEntity(o);
            }
            foreach (var o in FindEntities <Block>())
            {
                RemoveEntity(o);
            }
            foreach (var o in FindEntities <Pipe>())
            {
                RemoveEntity(o);
            }

            // == Load Phase

            // Get map data
            Map = Assets.GetMap(name);

            // Get Layers
            var groundLayer = Map.GetLayer("ground");
            var spawnLayer  = Map.GetLayer("spawn");
            var pipeLayer   = Map.GetLayer("pipes");

            // Scan map data (generate phase)
            foreach (var(x, y) in Rasterizer.Rectangle(Map.Size))
            {
                var groundTile = groundLayer.GetTile(x, y);
                if (groundTile != null)
                {
                    LoadMapProcessGroundTiles(x, y, groundTile);
                }

                var pipeTile = pipeLayer.GetTile(x, y);
                if (pipeTile != null)
                {
                    LoadMapProcessPipesTiles(x, y, pipeTile);
                }

                var spawnTile = spawnLayer.GetTile(x, y);
                if (spawnTile != null)
                {
                    var position = new Vector(x, y) * 70 + (35, 15);

                    if (spawnTile.Id == 80)
                    {
                        // Move player to start position
                        Player.Transform.Position = position;
                    }
                    else
                    {
                        // Create spawner
                        var spawner = AddEntity(new Spawner(count: 2, period: 6, () => new Slime()));
                        spawner.Transform.Position = position;
                    }
                }
            }

            // Detect initial pipe configuration
            Pipes.EvaluatePipeConfiguration();
        }