public ScoreDisplay(Game game, SpriteBatch spriteBatch, Character character) : base(game) { this.spriteBatch = spriteBatch; this.character = character; texture = game.Content.Load<Texture2D>("Displays/ScoreDisplay"); font = game.Content.Load<SpriteFont>("Fonts/ScoreFont"); position = new Vector2(60, 30); }
public HealthDisplay(Game game, SpriteBatch spriteBatch, Character character) : base(game) { this.spriteBatch = spriteBatch; this.character = character; //Import necessary mainTextures mainTexture = game.Content.Load<Texture2D>("Displays/HealthDisplay-Main"); rightTexture = game.Content.Load<Texture2D>("Displays/HealthDisplay-Right"); skullTexture = game.Content.Load<Texture2D>("Displays/HealthDisplay-Skull"); sourceRectangle = new Rectangle(0, 0, mainTexture.Width, mainTexture.Height); }
/// <summary> /// Loads the specified CaptainCPA XML level file /// </summary> /// <param name="levelName">File path to the save file</param> public void LoadGame(string levelName) { //Create lists of level tiles MoveableTileList = new List<MoveableTile>(); FixedTileList = new List<FixedTile>(); #region LoadTextures //Load the different block textures Texture2D characterTexture = game.Content.Load<Texture2D>("Sprites/Character"); //Texture2D characterTexture = game.Content.Load<Texture2D>("Sprites/braidSpriteSheet"); List<Texture2D> grassTextures = new List<Texture2D> { game.Content.Load<Texture2D>("Sprites/Grass1"), game.Content.Load<Texture2D>("Sprites/Grass2"), game.Content.Load<Texture2D>("Sprites/Grass3"), game.Content.Load<Texture2D>("Sprites/Grass4"), game.Content.Load<Texture2D>("Sprites/Grass5") }; List<Texture2D> grassEndTexures = new List<Texture2D> { game.Content.Load<Texture2D>("Sprites/GrassEnd1"), game.Content.Load<Texture2D>("Sprites/GrassEnd2"), game.Content.Load<Texture2D>("Sprites/GrassEnd3") }; List<Texture2D> dirtTextures = new List<Texture2D> { game.Content.Load<Texture2D>("Sprites/Dirt1"), game.Content.Load<Texture2D>("Sprites/Dirt2"), game.Content.Load<Texture2D>("Sprites/Dirt3") }; Texture2D blockTexture = game.Content.Load<Texture2D>("Sprites/Block"); Texture2D ventLeftTexture = game.Content.Load<Texture2D>("Sprites/Vent-Left"); Texture2D ventMiddleTexture = game.Content.Load<Texture2D>("Sprites/Vent-Middle"); Texture2D ventRightTexture = game.Content.Load<Texture2D>("Sprites/Vent-Right"); Texture2D levelBarrierTexture = game.Content.Load<Texture2D>("Sprites/LevelBarrier"); Texture2D levelEndTexture = game.Content.Load<Texture2D>("Sprites/LevelEnd"); Texture2D platformTexture = game.Content.Load<Texture2D>("Sprites/Platform"); Texture2D platformMiddleTexture = game.Content.Load<Texture2D>("Sprites/Platform-Middle"); Texture2D platformEndTexture = game.Content.Load<Texture2D>("Sprites/Platform-End"); Texture2D floppyDiscTexture = game.Content.Load<Texture2D>("Sprites/FloppyDisc"); Texture2D floppyDiscOverlayTexture = game.Content.Load<Texture2D>("Sprites/FloppyDiscOverlay"); Texture2D spikeTexture = game.Content.Load<Texture2D>("Sprites/Spike"); Texture2D spikeTopTexture = game.Content.Load<Texture2D>("Sprites/Spike-Top"); Texture2D flagTexture = game.Content.Load<Texture2D>("Sprites/Flag"); Texture2D dinoSkeletonTexture = game.Content.Load<Texture2D>("Images/Dino-skeleton"); #endregion //Randomizer for generating random textures Random r = new Random(); //Create a new XML document and load the selected save file XmlDocument loadFile = new XmlDocument(); loadFile.Load(@"Content/Levels/" + levelName + ".xml"); XmlNodeList rows = loadFile.SelectNodes("/XnaContent/PlatformGame/Rows/*"); foreach (XmlNode row in rows) { //Store Y-value of current row float yValue = float.Parse(row.Attributes["y"].Value); foreach (XmlNode tile in row) { //Skip XML comments (will crash otherwise) if (tile is XmlComment) { continue; } //Store X-value of current column and the tiles type float xValue = float.Parse(tile.Attributes["x"].Value); string tileType = tile.Attributes["tileType"].Value; //Declare new Tile properties Tile newTile = null; Color color = Utilities.ConvertColor(tile.Attributes["color"].Value); Vector2 position = new Vector2(xValue * Utilities.TILE_SIZE, yValue * Utilities.TILE_SIZE); float rotation = 0.0f; float scale = 1.0f; float layerDepth = 1.0f; Vector2 velocity = Vector2.Zero; bool onGround = true; //Initialize the tile depending on its type switch (tileType) { case "": case " ": break; case "block": newTile = new Block(game, spriteBatch, blockTexture, color, position, rotation, scale, layerDepth); break; case "grass": newTile = new Block(game, spriteBatch, grassTextures[r.Next(0, grassTextures.Count)], color, position, rotation, scale, layerDepth); break; case "grass-left": newTile = new Block(game, spriteBatch, grassEndTexures[r.Next(0, grassEndTexures.Count)], color, position, rotation, scale, layerDepth); break; case "grass-right": newTile = new Block(game, spriteBatch, grassEndTexures[r.Next(0, grassEndTexures.Count)], color, position, rotation, scale, layerDepth); newTile.SpriteEffects = SpriteEffects.FlipHorizontally; break; case "dirt": newTile = new Block(game, spriteBatch, dirtTextures[r.Next(0, dirtTextures.Count)], color, position, rotation, scale, layerDepth); break; case "vent-left": newTile = new Block(game, spriteBatch, ventLeftTexture, color, position, rotation, scale, layerDepth); break; case "vent-middle": newTile = new Block(game, spriteBatch, ventMiddleTexture, color, position, rotation, scale, layerDepth); break; case "vent-right": newTile = new Block(game, spriteBatch, ventRightTexture, color, position, rotation, scale, layerDepth); break; case "level-barrier": newTile = new LevelBarrier(game, spriteBatch, levelBarrierTexture, color, position, rotation, scale, layerDepth); break; case "level-end": newTile = new LevelEnd(game, spriteBatch, levelEndTexture, color, position, rotation, scale, layerDepth); break; case "platform-middle": newTile = new Platform(game, spriteBatch, platformMiddleTexture, color, position, rotation, scale, layerDepth); break; case "platform-left": newTile = new Platform(game, spriteBatch, platformEndTexture, color, position, rotation, scale, layerDepth); break; case "platform-right": newTile = new Platform(game, spriteBatch, platformEndTexture, color, position, rotation, scale, layerDepth); newTile.SpriteEffects = SpriteEffects.FlipHorizontally; break; case "moving-platform-middle": bool goRight = (tile.Attributes["init-dir"].Value == "L") ? false : true; int range = int.Parse(tile.Attributes["range"].Value); newTile = new MovingPlatform(game, spriteBatch, platformMiddleTexture, color, position, rotation, scale, layerDepth, range, goRight); break; case "moving-platform-left": goRight = (tile.Attributes["init-dir"].Value == "L") ? false : true; range = int.Parse(tile.Attributes["range"].Value); newTile = new MovingPlatform(game, spriteBatch, platformEndTexture, color, position, rotation, scale, layerDepth, range, goRight); break; case "moving-platform-right": goRight = (tile.Attributes["init-dir"].Value == "L") ? false : true; range = int.Parse(tile.Attributes["range"].Value); newTile = new MovingPlatform(game, spriteBatch, platformEndTexture, color, position, rotation, scale, layerDepth, range, goRight); newTile.SpriteEffects = SpriteEffects.FlipHorizontally; break; case "moving-platform": goRight = (tile.Attributes["init-dir"].Value == "L") ? false : true; range = int.Parse(tile.Attributes["range"].Value); newTile = new MovingPlatform(game, spriteBatch, platformTexture, color, position, rotation, scale, layerDepth, range, goRight); break; case "platform": newTile = new Platform(game, spriteBatch, platformTexture, color, position, rotation, scale, layerDepth); break; case "floppy-disc": int points = int.Parse(tile.Attributes["points"].Value); newTile = new FloppyDisc(game, spriteBatch, floppyDiscTexture, floppyDiscOverlayTexture, Color.White, color, position, rotation, scale, layerDepth, points); break; case "spike": newTile = new Spike(game, spriteBatch, spikeTexture, color, position, rotation, scale, layerDepth); break; case "spike-top": newTile = new Spike(game, spriteBatch, spikeTopTexture, color, position, rotation, scale, layerDepth); break; case "character": int lives = int.Parse(tile.Attributes["lives"].Value); newTile = new Character(game, spriteBatch, characterTexture, color, position, rotation, scale, layerDepth, Vector2.Zero, true, lives); Character = (Character)newTile; break; case "boulder": velocity = new Vector2(-2, 0); onGround = true; Texture2D texture = game.Content.Load<Texture2D>("Sprites/Meteor1"); newTile = new Boulder(game, spriteBatch, texture, color, position, rotation, scale, layerDepth, velocity, onGround); break; case "monstar": velocity = new Vector2(2, 0); onGround = true; newTile = new Monstar(game, spriteBatch, blockTexture, color, position, rotation, scale, layerDepth, velocity, onGround); break; case "mimic": velocity = new Vector2(3, 0); onGround = true; newTile = new Mimic(game, spriteBatch, blockTexture, color, position, rotation, scale, layerDepth, velocity, onGround); break; case "flag": newTile = new LevelEnd(game, spriteBatch, flagTexture, color, position, rotation, scale, layerDepth); break; case "dino-skeleton": newTile = new Block(game, spriteBatch, dinoSkeletonTexture, color, position, rotation, scale, layerDepth); break; default: break; } //Determine if tile is collideable if (tile.Attributes["collideable"] != null) { newTile.IsCollideable = bool.Parse(tile.Attributes["collideable"].Value); } //If the tile is not null, add it to the correct tile list if (newTile is MoveableTile) { MoveableTileList.Add((MoveableTile)newTile); } else if (newTile is FixedTile) { FixedTileList.Add((FixedTile)newTile); } } } }
public CharacterCollisionManager(Game game, Character character, List<MoveableTile> moveableTiles, List<FixedTile> fixedTiles) : base(game, moveableTiles, fixedTiles) { this.character = character; }