Пример #1
0
        protected override void LoadContent()
        {
            SaveGame.Load();
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // Load sounds
            sounds = AudioLibrary.Instance;
            sounds.Add("Destroy", Content.Load <SoundEffect>("destroy"));
            sounds.Add("Win", Content.Load <SoundEffect>("win"));
            sounds.Add("Step", Content.Load <SoundEffect>("step"));
            sounds.Add("Stick", Content.Load <SoundEffect>("stick"));
            sounds.Add("Save", Content.Load <SoundEffect>("save"));

            // Prepare spritesheets
            atlasTex = Content.Load <Texture2D>("atlas" + GridPosition.CELL_SIZE);
            atlas    = new SpriteSheet(spriteBatch, atlasTex, 4, 4);
            Texture2D   editorTex   = Content.Load <Texture2D>("editorAtlas");
            SpriteSheet systemAtlas = new SpriteSheet(spriteBatch, editorTex, 8, 8);

            // Prepare player
            Texture2D playerAtlas = Content.Load <Texture2D>("playerAtlas");

            player = new Player(new SpriteSheet(spriteBatch, playerAtlas, 4, 4), 0);

            // Prepare level loading
            loader             = new LevelLoader(atlas, Content);
            editor             = new LevelEditor(atlas, systemAtlas);
            editor.Player      = player;
            editor.OnNewLevel += delegate { currentLevel = SaveGame.LevelCount; LoadLevel(); };

            // Prepare UI
            instruction = new TextSprite(systemAtlas, TextSprite.Alignement.CENTER, 7, 14);
            progression = new TextSprite(systemAtlas, TextSprite.Alignement.RIGHT, 15, 16);
            score       = new TextSprite(systemAtlas, TextSprite.Alignement.LEFT, 0, 16);
            bottomMenu.AddButton(new Sprite(systemAtlas, 10), delegate { currentLevel = 0; LoadLevel(); });
            bottomMenu.AddButton(new Sprite(systemAtlas, 13), LoadPreviousLevel);
            bottomMenu.AddButton(new Sprite(systemAtlas, 14), LoadNextLevel);
            bottomMenu.AddButton(new Sprite(systemAtlas, 11), delegate { currentLevel = SaveGame.LevelCount - 1; LoadLevel(); });

            // Player inputs
            inputs = new Command();
            inputs.Map(Keys.Left, Command.Event.JUST_DOWN, () => MovePlayer(Sprite.Direction.LEFT));
            inputs.Map(Keys.Right, Command.Event.JUST_DOWN, () => MovePlayer(Sprite.Direction.RIGHT));
            inputs.Map(Keys.Up, Command.Event.JUST_DOWN, () => MovePlayer(Sprite.Direction.UP));
            inputs.Map(Keys.Down, Command.Event.JUST_DOWN, () => MovePlayer(Sprite.Direction.DOWN));

            // System inputs
            inputs.Map(Keys.Space, Command.Event.JUST_DOWN, LoadLevel);
            inputs.Map(Keys.PageUp, Command.Event.JUST_DOWN, LoadNextLevel);
            inputs.Map(Keys.PageDown, Command.Event.JUST_DOWN, LoadPreviousLevel);
            inputs.Map(Keys.Tab, Command.Event.JUST_DOWN, ToggleLevelEditor);

            // Load title screen level
            LoadLevel();
        }