Exemplo n.º 1
0
 /// <summary>
 /// Performs what need to be done if the player touches another NPC
 /// </summary>
 /// <param name="player">The player</param>
 /// <param name="npc">The NPC</param>
 public static void ResolvePlayerNpcCollision(MovingSprite player, EnemySprite npc)
 {
     if (Intersects(player.bounds, npc.bounds))
     {
         // Player bumped into something, play the bump cue
         SoundFxManager.Instance.PlaySound(SoundFxManager.CueEnums.exit);
     }
 }
Exemplo n.º 2
0
        public static void ResolvePlayerTileCollision(MovingSprite player, Tile tile)
        {
            if (tile.TileType == TileTypeEnum.MagicWall || tile.TileType == TileTypeEnum.Rock ||
                tile.TileType == TileTypeEnum.TitaniumWall || tile.TileType == TileTypeEnum.Wall)
            {
                // If we collide with a tile we should be "pushed back" to
                // a place as close as possible to the tile.
                // This is done by getting the tile position and calculate
                // where the player should be relative to it.
                if (player.currentMovement.XDirection == MovementVector.DirectionX.Left)
                {
                    player.Position.X = tile.Position.X + tile.Width;
                    player.MoveStandStill();
                }
                if (player.currentMovement.XDirection == MovementVector.DirectionX.Right)
                {
                    player.Position.X = tile.Position.X - tile.Width;
                    player.MoveStandStill();
                }
                if (player.currentMovement.YDirection == MovementVector.DirectionY.Up)
                {
                    player.Position.Y = tile.Position.Y + tile.Height;
                    player.MoveStandStill();
                }
                if (player.currentMovement.YDirection == MovementVector.DirectionY.Down)
                {
                    player.Position.Y = tile.Position.Y - tile.Height;
                    player.MoveStandStill();
                }

                // Player bumped into something, play the bump cue
                SoundFxManager.Instance.PlaySound(SoundFxManager.CueEnums.bump);
            }

            if (tile.TileType == TileTypeEnum.Diamond)
            {
                tile.TileType = TileTypeEnum.Space;
                tile.Texture  = GraphicsResourceManager.Instance.LoadTexture(GraphicsResourceManager.GraphicsEnum.Space);
                player.FireDiamondCollectedEvent();

                SoundFxManager.Instance.PlaySound(SoundFxManager.CueEnums.diamond);
            }

            if (tile.TileType == TileTypeEnum.Earth)
            {
                tile.TileType = TileTypeEnum.Space;
                tile.Texture  = GraphicsResourceManager.Instance.LoadTexture(GraphicsResourceManager.GraphicsEnum.Space);
                SoundFxManager.Instance.PlaySound(SoundFxManager.CueEnums.move);
            }

            //TODO: Implement level complete
            if (tile.TileType == TileTypeEnum.Exit)
            {
                tile.FireTileCollisionEvent(tile.TileType);
            }
        }
Exemplo n.º 3
0
    /// <summary>
    /// Constructs the pane with all the sprites.
    /// </summary>
    public DemoSpriteMoving()
    {
        // Create the basics
        sprites  = new SpriteList();
        viewport = new SpriteViewport(sprites);
        viewport.BackgroundColor = new Color(0, 0, 50);

        // Load in the static green sphere
        IDrawable      drawable = DemoSprites.TilesetFactory.Create("red-sphere");
        DrawableSprite sprite1  = new DrawableSprite(drawable);

        sprite = new MovingSprite(sprite1);
        sprite.StoppedMoving += OnStoppedMoving;
        sprite.Height         = sprite.Width = 64;
        sprite.X              = sprite.Y = 10;
        sprites.Add(sprite);

        // Create the target
        drawable      = DemoSprites.TilesetFactory.Create("green-sphere");
        target        = new DrawableSprite(drawable);
        target.Height = target.Width = 32;
        sprites.Add(target);

        // Load in the static green sphere
        drawable = DemoSprites.TilesetFactory.Create("red-sphere2");
        DrawableSprite sprite2a = new DrawableSprite(drawable);

        sprite2        = new MovingSprite(sprite2a);
        sprite2.Height = sprite2.Width = 64;
        sprite2.X      = sprite2.Y = 10;
        sprites.Add(sprite2);

        // Create the target
        drawable       = DemoSprites.TilesetFactory.Create("green-sphere");
        target2        = new DrawableSprite(drawable);
        target2.Height = target2.Width = 32;
        sprites.Add(target2);
        sprite2.DesiredX = Entropy.Next(0, viewport.Width - sprite.Width);
        sprite2.DesiredY = Entropy.Next(0, viewport.Height - sprite.Height);
        target2.X        = sprite2.DesiredX + 16;
        target2.Y        = sprite2.DesiredY + 16;

        // Start our timer
        Timeout.Add(1000, OnNewLocation2);
    }
    public void StartProgram()
    {
        SnapsEngine.SetBackgroundColor(SnapsColor.Black);

        SnapsEngine.StartGameEngine(fullScreen: false, framesPerSecond: 60);

        ImageSprite starImage = new ImageSprite(imageURL: "ms-appx:///Images/star.png");

        SnapsEngine.AddSpriteToGame(starImage);
        starImage.ScaleSpriteWidth(SnapsEngine.GameViewportWidth / 50);
        MovingSprite star = new MovingSprite(sprite: starImage, xSpeed: 0, ySpeed: 1);

        while (true)
        {
            star.Update();
            SnapsEngine.DrawGamePage();
        }
    }
Exemplo n.º 5
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // MUST be set as one of the first things!!
            //TODO: Find a better way of doing this resource management
            GraphicsResourceManager.Instance.contentManager = Content;
            font    = Content.Load <SpriteFont>("david");
            bigFont = Content.Load <SpriteFont>("DashFontBig2");

            currentLevel = new Level.Level(this);
            CurrentLevel.LoadLevel("level\\level01.lvl");
            //level1.LoadLevel("level\\TESTLEVEL.lvl");
            //gameLevels.Add(level1);

            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            // Prepare scene
            sceneGraph = new SceneGraph(this, spriteBatch);

            // Set up player sprite
            playerSprite = new MovingSprite(this, Content.Load <Texture2D>("player2"), CurrentLevel.StartPosition);
            MovingSprite.DiamondCollected += new MovingSprite.DiamondEventHandler(OnDiamondCollected);

            Tile firstTile = CurrentLevel.GetTile(ref playerSprite.Position);

            Tile.TileCollision += new Tile.LevelEventHandler(OnTileCollision);

            // Set Up a 2D Camera
            camera = new Camera2D(spriteBatch);

            // Start in the middle of the level
            camera.Position    = playerSprite.Position;
            camera.worldWidth  = CurrentLevel.WorldWidth;
            camera.worldHeight = CurrentLevel.WorldHeight;
            camera.HasMoved    = true;
            visibilityChanged  = true;

            // Set up the game HUD
            gameHUD = new HUD(spriteBatch);
            gameHUD.LevelTimer.SetTimer(CurrentLevel.FinishTime);
            gameHUD.LevelTimer.Start();

            mainWindow = new MainWindow(manager);
        }
Exemplo n.º 6
0
    /// <summary>
    /// Constructs the pane with all the sprites.
    /// </summary>
    public DemoSpriteMoving()
    {
        // Create the basics
        sprites = new SpriteList();
        viewport = new SpriteViewport(sprites);
        viewport.BackgroundColor = new Color(0, 0, 50);

        // Load in the static green sphere
        IDrawable drawable = DemoSprites.TilesetFactory.Create("red-sphere");
        DrawableSprite sprite1 = new DrawableSprite(drawable);
        sprite = new MovingSprite(sprite1);
        sprite.StoppedMoving += OnStoppedMoving;
        sprite.Height = sprite.Width = 64;
        sprite.X = sprite.Y = 10;
        sprites.Add(sprite);

        // Create the target
        drawable = DemoSprites.TilesetFactory.Create("green-sphere");
        target = new DrawableSprite(drawable);
        target.Height = target.Width = 32;
        sprites.Add(target);

        // Load in the static green sphere
        drawable = DemoSprites.TilesetFactory.Create("red-sphere2");
        DrawableSprite sprite2a = new DrawableSprite(drawable);
        sprite2 = new MovingSprite(sprite2a);
        sprite2.Height = sprite2.Width = 64;
        sprite2.X = sprite2.Y = 10;
        sprites.Add(sprite2);

        // Create the target
        drawable = DemoSprites.TilesetFactory.Create("green-sphere");
        target2 = new DrawableSprite(drawable);
        target2.Height = target2.Width = 32;
        sprites.Add(target2);
        sprite2.DesiredX = Entropy.Next(0, viewport.Width - sprite.Width);
        sprite2.DesiredY = Entropy.Next(0, viewport.Height - sprite.Height);
        target2.X = sprite2.DesiredX + 16;
        target2.Y = sprite2.DesiredY + 16;

        // Start our timer
        Timeout.Add(1000, OnNewLocation2);
    }