コード例 #1
0
        /// <summary>
        /// Initialize scene.
        /// </summary>
        public override void Init()
        {
            // Call base init.
            base.Init();

            // Set texture of the scene.
            Texture2D texture = Game.Content.Load <Texture2D>("Images/Screens/GameOver");

            // Load the nintendo logo.
            MonoSprite logo = new MonoSprite(texture, new Rectangle(0, 0, SuperPlatformerGame.RESOLUTION_X, SuperPlatformerGame.RESOLUTION_Y), Vector2.Zero, SuperPlatformerGame.RESOLUTION_X, SuperPlatformerGame.RESOLUTION_Y);

            // Add the logo to the drawlist.
            Children.Add(logo);

            _sound = Game.Content.Load <SoundEffect>("Audio/smw_gameover");

            if (_sound != null)
            {
                _sound.Play();
            }

            // Set and start the timer.
            _durationTimer = new TimedEvent(OnTimerElapsed, _duration);
            _durationTimer.Enable();
        }
コード例 #2
0
ファイル: Level.cs プロジェクト: yvog/SuperPlatformer
 /// <summary>
 /// Activated when player finished the level.
 /// </summary>
 /// <param name="sender"> The sender.</param>
 /// <param name="e"> The event arguments.</param>
 private void OnFinished(object sender, EventArgs e)
 {
     MediaPlayer.Stop();
     Player.OnPeace();
     _endTimer.Enable();
     _time.Disable();
 }
コード例 #3
0
ファイル: PlungerEnemy.cs プロジェクト: yvog/SuperPlatformer
        /// <summary>
        /// Set direction in opisite direction.
        /// </summary>
        private void Turn()
        {
            // Switch direction.
            _direction = (Direction)(((int)_direction + 1) % 2);

            // Restart timer.
            _turnTimer.Enable();
        }
コード例 #4
0
ファイル: Enemy.cs プロジェクト: yvog/SuperPlatformer
 /// <summary>
 /// Starts the enemey death timer.
 /// </summary>
 protected void EnableDeathTimer()
 {
     // Enable death timer if it is not running.
     if (!_deathTimer.Running)
     {
         _deathTimer.Enable();
     }
 }
コード例 #5
0
        /// <summary>
        /// This method makes the player go to the big state.
        /// </summary>
        public void Grow()
        {
            PowerState = SizeState.BIG;

            Width  = _bigWidth;
            Height = _bigHeight;

            Vector2 position = Position;

            position.Y -= _bigHeight - _smallHeight;
            Position    = position;

            JumpImpulse = _bigJumpImpulse;

            OnSizeChanged?.Invoke(this, new SizeChangeEventArgs(PowerState));

            PlaySound("grow");

            _flickerTimer.Enable();
        }
コード例 #6
0
ファイル: PlungerEnemy.cs プロジェクト: yvog/SuperPlatformer
        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="position"> Position in the level.</param>
        /// <param name="width"> Width of the PlungerEnemy.</param>
        /// <param name="height"> Height of the PlungerEnemy.</param>
        /// <param name="content"> Content manager of the game.</param>
        /// <param name="level"> The level the PlungerEnemy is in.</param>
        public PlungerEnemy(Vector2 position, int width, int height, ContentManager content, Level level) : base(position, width, height, level)
        {
            Sprite = new MonoSprite(content.Load <Texture2D>("Images/Enemy/PlungerEnemy"), new Rectangle(0, 0, width, height), position, width, height);

            // Remove gravity.
            Gravity = 0;

            // PlungerEnemy is not solid.
            Solid = false;

            // PlungerEnemy shouldn't check for collisions.
            CheckCollisions = false;

            // Set default direction.
            _direction = Direction.Down;

            // Enemy doesnt walk.
            AllowMovement = false;

            // Set spawn position.
            _spawnPosition = position;

            // Set default height.
            _startHeight = height;

            // Set some padding
            Padding = new Vector2(3, 3);

            // This enemy is invunreble.
            Invulnerable = true;

            // Add biting animation.
            Animations.Add(new Animation(
                               id: (int)PlungerEnemyAnimation.BITING,
                               baseFrame: Vector2.Zero,
                               frameSize: new Vector2(width, height),
                               rows: 1,
                               columns: 2,
                               msPerFrame: 150
                               ));

            // Start biting animation.
            Animations.Play((int)PlungerEnemyAnimation.BITING);

            // Create timer.
            _turnTimer = new TimedEvent(Turn, 2250);

            // Start timer.
            _turnTimer.Enable();
        }
コード例 #7
0
ファイル: Level.cs プロジェクト: yvog/SuperPlatformer
        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="title"> Level title.</param>
        /// <param name="game"> Game.</param>
        public Level(string title, SuperPlatformerGame game)
        {
            CurrentTime = 0;
            Gravity     = 550;

            // Create the lists.
            _entities        = new List <Entity>();
            _pendingEntities = new List <Entity>();
            _decorations     = new List <MonoSprite>();
            _backgroundTiles = new List <Tile>();

            // Time moves on.
            _time = new TimedEvent(OnTimeTick, 1000);
            _time.Enable();

            // Time to respawn
            _respawnTimer = new TimedEvent(OnRespawnTimerElapsed, 3000);

            // Wait X seconds before switching to end level scene on level finished.
            _endTimer = new TimedEvent(() =>
            {
                game.SceneActivator.ActivateScene(new EndLevelScene(game));
            }, 4000);

            _scale = SuperPlatformerGame.SCALE;

            _viewport = game.GraphicsDevice.Viewport;

            _title = title;

            _collisions = new CollisionTester();

            _camera = new Camera2D(_viewport);

            Player = new Player(game.Content.Load <Texture2D>("Images/Player/Protagonist"), Vector2.Zero, 16, 22, game.KeyboardDevice, this, game.Content);

            // Listen to some player events
            Player.OnSizeChanged += OnPlayerSizeChange;
            Player.OnDied        += OnPlayerDeath;

            Score = new ScoreCollector();

            TypePlayer = PlayerType.PROTAGONIST;

            Display = new HUD(this, _camera, game.Content);

            _collidables = new List <Entity>();

            _camera.Follow(Player);
        }
コード例 #8
0
ファイル: IntroScene.cs プロジェクト: yvog/SuperPlatformer
        /// <summary>
        /// Initialize scene.
        /// </summary>
        public override void Init()
        {
            // Call base init.
            base.Init();

            // Set texture of the scene.
            Texture2D texture = Game.Content.Load <Texture2D>("Images/Screens/Nintendo");

            // Load the nintendo logo.
            MonoSprite logo = new MonoSprite(texture, new Rectangle(0, 0, SuperPlatformerGame.RESOLUTION_X, SuperPlatformerGame.RESOLUTION_Y), Vector2.Zero, SuperPlatformerGame.RESOLUTION_X, SuperPlatformerGame.RESOLUTION_Y);

            // Add the logo to the drawlist.
            Children.Add(logo);

            // Set and start the timer.
            _introPhaseTimer = new TimedEvent(OnIntroPhaseTimerElapsed, _introPhaseDuration);
            _introPhaseTimer.Enable();
        }
コード例 #9
0
ファイル: Level.cs プロジェクト: yvog/SuperPlatformer
 /// <summary>
 /// Event when player died.
 /// </summary>
 /// <param name="sender"> The sender.</param>
 /// <param name="e"> The event arguments.</param>
 private void OnPlayerDeath(object sender, EventArgs e)
 {
     _respawnTimer.Reset();
     _respawnTimer.Enable();
 }
コード例 #10
0
ファイル: Level.cs プロジェクト: yvog/SuperPlatformer
 /// <summary>
 /// Callback every second.
 /// </summary>
 private void OnTimeTick()
 {
     CurrentTime--;
     _time.Enable();
 }