private Sprite GetNumberSprite(int number) { if (number <= 0 || number > 9) { return(scoresheet.GetAt(0, 0)); } int x = number % 5; int y = number > 4 ? 1 : 0; return(scoresheet.GetAt(x, y)); }
public void CalculateSprites() { for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { bool leftBlocked = true; bool rightBlocked = true; bool topBlocked = true; bool bottomBlocked = true; if (!tileMap[x, y].Blocked) { tileMap[x, y].Sprite = Tile.NULL_SPRITE; continue; } if (x - 1 >= 0 && tileMap[x - 1, y].Blocked) { leftBlocked = false; } if (x + 1 < width && tileMap[x + 1, y].Blocked) { rightBlocked = false; } if (y - 1 >= 0 && tileMap[x, y - 1].Blocked) { topBlocked = false; } if (y + 1 < height && tileMap[x, y + 1].Blocked) { bottomBlocked = false; } int xBlock = 0; xBlock += !rightBlocked ? 1 : 0; xBlock += !topBlocked ? 2 : 0; int yBlock = 0; yBlock += !leftBlocked ? 1 : 0; yBlock += !bottomBlocked ? 2 : 0; tileMap[x, y].Sprite = tileSheet.GetAt(xBlock, yBlock); } } }
public static Level LoadLevel(SpriteSheet spritesheet, SpriteSheet sprites, string filePath) { StreamReader reader = new StreamReader(filePath); int x = 0; int y = 0; int width = int.Parse(reader.ReadLine()); int height = int.Parse(reader.ReadLine()); int tileSize = int.Parse(reader.ReadLine()); Level level = new Level(spritesheet, width, height, tileSize, filePath); level.tileMap = new Tile[width, height]; string currentLine; while ((currentLine = reader.ReadLine()) != null && y < height) { x = 0; foreach (char c in currentLine) { int value = int.Parse(c.ToString()); bool blocked = value == 1; bool food = value == 2; bool bigFood = value == 3; bool powerupGhost = value == 4; bool powerupWall = value == 5; bool pacspawn = value == 6; bool ghostspawn = value == 7; Powerup powerup = null; level.tileMap[x, y] = new Tile(blocked, null, new Vector2(x, y) * tileSize, tileSize); powerup = food ? new Powerup(PowerUpType.Food, sprites.GetAt(3, 0), 50) : powerup; powerup = bigFood ? new Powerup(PowerUpType.BigFood, sprites.GetAt(4, 0), 100) : powerup; powerup = powerupGhost ? new Powerup(PowerUpType.GhostEater, sprites.GetAt(0, 6), 500) : powerup; powerup = powerupWall ? new Powerup(PowerUpType.WallEater, sprites.GetAt(1, 6), 500) : powerup; level.tileMap[x, y].Powerup = powerup; level.PacmanSpawn = pacspawn ? level.tileMap[x, y] : level.PacmanSpawn; if (ghostspawn) { level.GhostSpawns.Add(level.tileMap[x, y]); } x++; } y++; } reader.Close(); level.CalculateSprites(); return(level); }
protected override void LoadContent() { int hudTop = 70; int hudBot = 70; graphics.PreferredBackBufferWidth = 768; graphics.PreferredBackBufferHeight = 768 + hudTop + hudBot; graphics.ApplyChanges(); spriteBatch = new SpriteBatch(GraphicsDevice); spritesheetTexture = Content.Load <Texture2D>("SpriteSheet"); tilesetTexture = Content.Load <Texture2D>("Tileset"); pacmanBackgroundTexture = Content.Load <Texture2D>("pacmanBackground"); pacmanLoseScreen = Content.Load <Texture2D>("LoseScreen"); pacmanWinScreen = Content.Load <Texture2D>("WinScreen"); Texture2D scoreTexture = Content.Load <Texture2D>("score-numbers"); menuFont = Content.Load <SpriteFont>("menuFont"); Tile.NULL_SPRITE = new SpriteSheet(CreateFilledTexture(32, 32, new Color(0, 0, 64, 128))).Sprite; this.spritesheet = new SpriteSheet(spritesheetTexture, Vector2.Zero, new Vector2(135, 112), new Vector2(16, 16)); this.tilesheet = new SpriteSheet(tilesetTexture, Vector2.Zero, new Vector2(128, 128), new Vector2(32, 32), 1); this.levelPaths = new List <string>() { "Content\\Level1.txt", "Content\\Level2.txt", "Content\\Level3.txt", "Content\\Level4.txt", "Content\\Level5.txt" }; this.currentLevelPath = this.levelPaths[0]; Level level = Level.LoadLevel(tilesheet, spritesheet, currentLevelPath); highscores = new List <int>(); int highscore = LoadHighscore(); Sprite lifeSprite = spritesheet.GetAt(1, 0); hud = new HUD(Window, hudTop, hudBot, scoreTexture, lifeSprite, highscore); game = new InGameState(Window, hud, spritesheet); game.SetLevel(level); editor = new Editor(Window); editor.SetLevel(level); editor.GridTexture = CreateRectangleTexture(32, 32, new Color(128, 128, 128, 128)); editor.HighlightTexture = CreateFilledTexture(32, 32, new Color(128, 128, 128, 128)); editor.FoodSprite = spritesheet.GetAt(3, 0); editor.BigFoodSprite = spritesheet.GetAt(4, 0); editor.PowerupGhostSprite = spritesheet.GetAt(0, 6); editor.PowerupWallEaterSprite = spritesheet.GetAt(1, 6); editor.PacmanSpawnSprite = spritesheet.GetAt(1, 0); editor.GhostSpawnSprite = spritesheet.GetAt(0, 1); menu = new MenuGameState(hud, pacmanBackgroundTexture, pacmanWinScreen, pacmanLoseScreen, menuFont, Window); menu.Highscores = highscores; gameState = menu; }