/// <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); } }
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); } }
/// <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(); } }
/// <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); }