diff options
Diffstat (limited to 'Penguloon/Levels')
| -rw-r--r-- | Penguloon/Levels/IceLevel.cs | 3 | ||||
| -rw-r--r-- | Penguloon/Levels/IceLevel2.cs | 1 | ||||
| -rw-r--r-- | Penguloon/Levels/IceLevel3.cs | 1 | ||||
| -rw-r--r-- | Penguloon/Levels/LevelBase.cs | 8 | ||||
| -rw-r--r-- | Penguloon/Levels/Map.cs | 42 | ||||
| -rw-r--r-- | Penguloon/Levels/SandLevel1.cs | 89 |
6 files changed, 140 insertions, 4 deletions
diff --git a/Penguloon/Levels/IceLevel.cs b/Penguloon/Levels/IceLevel.cs index 1a810a7..d041095 100644 --- a/Penguloon/Levels/IceLevel.cs +++ b/Penguloon/Levels/IceLevel.cs @@ -14,7 +14,8 @@ namespace Penguloon.Levels this.Money = 350; this.Health = 200; this.ID = 1; - this.MinimumLevel = 0; + this.MinimumLevel = 1; + LevelType = LevelType.Ice; } public override void DrawUnique(float deltaTime) diff --git a/Penguloon/Levels/IceLevel2.cs b/Penguloon/Levels/IceLevel2.cs index 86e3ce3..d225a14 100644 --- a/Penguloon/Levels/IceLevel2.cs +++ b/Penguloon/Levels/IceLevel2.cs @@ -15,6 +15,7 @@ namespace Penguloon.Levels this.Health = 200; this.ID = 2; this.MinimumLevel = 5; + LevelType = LevelType.Ice; } public override void DrawUnique(float deltaTime) diff --git a/Penguloon/Levels/IceLevel3.cs b/Penguloon/Levels/IceLevel3.cs index 1a7451d..e70ea70 100644 --- a/Penguloon/Levels/IceLevel3.cs +++ b/Penguloon/Levels/IceLevel3.cs @@ -15,6 +15,7 @@ namespace Penguloon.Levels this.Health = 200; this.ID = 3; this.MinimumLevel = 5; + LevelType = LevelType.Ice; } public override void DrawUnique(float deltaTime) diff --git a/Penguloon/Levels/LevelBase.cs b/Penguloon/Levels/LevelBase.cs index e077ee4..dc8b5af 100644 --- a/Penguloon/Levels/LevelBase.cs +++ b/Penguloon/Levels/LevelBase.cs @@ -10,6 +10,8 @@ namespace Penguloon.Levels { public abstract class LevelBase { + public LevelType LevelType { get; set; } + public GameScene ParentScene { get; set; } public Texture2D SplashArt { get; set; } @@ -88,6 +90,8 @@ namespace Penguloon.Levels for(int i = 0; i < touchLocations.Length; i++) { + if (touchLocations[i].State != TouchLocationState.Released) continue; + if (touchLocations[i].Position.X > Map.MapWidth) return; if (touchLocations[i].Position.Y > Map.MapHeight) return; @@ -164,7 +168,9 @@ namespace Penguloon.Levels } public void FinishGame() - { + { + Finished = true; + // upload score here or something UserdataManager.GamesPlayed++; UserdataManager.TotalKills += Kills; diff --git a/Penguloon/Levels/Map.cs b/Penguloon/Levels/Map.cs index f3adf64..03e1c4f 100644 --- a/Penguloon/Levels/Map.cs +++ b/Penguloon/Levels/Map.cs @@ -33,6 +33,8 @@ namespace Penguloon.Levels public LevelBase Level { get; set; } + public int SpareTilesY { get; set; } + public Map(GameScene parentScene, LevelBase level) { this.ParentScene = parentScene; @@ -56,6 +58,8 @@ namespace Penguloon.Levels MapWidth = TileWidth * 18; MapHeight = TileHeight * 13; + SpareTilesY = ((int)StaticUIValues.ScreenViewport.Y - MapHeight) / TileHeight; SpareTilesY += 1; + WaveManager = new WaveManager(this); } @@ -64,9 +68,16 @@ namespace Penguloon.Levels for (int y = 0; y < TileMap.GetLength(0); y++) { for (int x = 0; x < TileMap.GetLength(1); x++) - { - Texture2D tileTexture = ContentManager.GetTileTextureByType(TileMap[y, x].Type); + { + Texture2D tileTexture = null; + switch (Level.LevelType) + { + case LevelType.Ice: tileTexture = ContentManager.GetTileTextureByType(TileMap[y, x].Type); break; + case LevelType.Sand: tileTexture = ContentManager.GetSandTileTextureByType(TileMap[y, x].Type); break; + } + + if(tileTexture != null) ParentScene.Main.SpriteBatch.Draw(tileTexture, destinationRectangle: new Rectangle(x * TileWidth, y * TileHeight, TileWidth, TileHeight)); @@ -76,6 +87,33 @@ namespace Penguloon.Levels } } + Texture2D tileTextureSpare = null; + Texture2D unplaceableTileTexture = null; + + unplaceableTileTexture = ContentManager.GetTexture("UI/unselectableTile"); + + switch (Level.LevelType) + { + case LevelType.Ice: tileTextureSpare = ContentManager.GetTileTextureByType(0); break; + case LevelType.Sand: tileTextureSpare = ContentManager.GetSandTileTextureByType(0); break; + } + + // draw spare tiles + for (int y = 0; y < SpareTilesY; y++) + { + for (int x = 0; x < TileMap.GetLength(1); x++) + { + if (tileTextureSpare != null) + ParentScene.Main.SpriteBatch.Draw(tileTextureSpare, + destinationRectangle: new Rectangle(x * TileWidth, MapHeight + (y * TileHeight), TileWidth, TileHeight)); + + if (ParentScene.ObjectSeletor.State == Controls.State.Selected) + ParentScene.Main.SpriteBatch.Draw(unplaceableTileTexture, + destinationRectangle: new Rectangle(x * TileWidth, MapHeight + (y * TileHeight), TileWidth, TileHeight)); + } + } + + for (int i = 0; i < Enemies.Count; i++) { if (Enemies[i].Texture != null) diff --git a/Penguloon/Levels/SandLevel1.cs b/Penguloon/Levels/SandLevel1.cs new file mode 100644 index 0000000..d8340f6 --- /dev/null +++ b/Penguloon/Levels/SandLevel1.cs @@ -0,0 +1,89 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Input.Touch; +using Penguloon.Enemies; +using Penguloon.Objects; +using Penguloon.Scenes; + +namespace Penguloon.Levels +{ + public class SandLevel1 : LevelBase + { + public SandLevel1() : base() + { + this.SplashArt = ContentManager.GetTexture("SplashArt/4"); + this.Money = 350; + this.Health = 200; + this.ID = 4; + this.MinimumLevel = 15; + LevelType = LevelType.Sand; + } + + public override void DrawUnique(float deltaTime) + { + base.DrawUnique(deltaTime); + } + + public override void UpdateUnique(float deltaTime, TouchLocation[] touchLocations) + { + base.UpdateUnique(deltaTime, touchLocations); + } + + public override void CreateMap() + { + Map = new Map(ParentScene, this); + Map.SpawnPoint = new Vector2(-1 * Map.TileWidth, 6 * Map.TileHeight); + Map.SpawnPointTargetPos = new Vector2(0 * Map.TileWidth, 6 * Map.TileHeight); + Map.FinishPoint = new Vector2(18 * Map.TileWidth, 10 * Map.TileHeight); + + Tile OO = new Tile(0, Direction.None); + + Tile DN = new Tile(6, Direction.Down); + Tile RT = new Tile(5, Direction.Right); + Tile LT = new Tile(5, Direction.Left); + Tile UP = new Tile(6, Direction.Up); + + Tile TR = new Tile(4, Direction.Right); + Tile RU = new Tile(4, Direction.Up); + Tile DR = new Tile(3, Direction.Right); + + Tile DL = new Tile(1, Direction.Down); + Tile RD = new Tile(3, Direction.Down); + Tile LD = new Tile(1, Direction.Left); + Tile LU = new Tile(2, Direction.Left); + Tile TL = new Tile(2, Direction.Up); + + Tile FN = new Tile(5, Direction.Finish); + + Map.TileMap = new Tile[13, 18] + { + { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + { OO,OO,DR,RT,RT,DL,OO,OO,OO,DR,RT,RT,RT,RT,RT,DL,OO,OO }, + { OO,OO,UP,OO,OO,DN,OO,OO,OO,UP,OO,OO,OO,OO,OO,DN,OO,OO }, + { OO,OO,UP,OO,OO,DN,OO,OO,OO,UP,OO,OO,OO,OO,RD,LU,OO,OO }, + { OO,OO,UP,OO,OO,DN,OO,OO,OO,UP,OO,OO,OO,OO,DN,OO,OO,OO }, + { RT,RT,TL,OO,OO,DN,OO,OO,OO,UP,OO,OO,OO,OO,DN,OO,OO,OO }, + { OO,OO,OO,OO,OO,DN,OO,OO,OO,UP,OO,OO,OO,OO,DN,OO,OO,OO }, + { OO,OO,OO,OO,RD,LU,OO,OO,OO,RU,LD,OO,OO,OO,DN,OO,OO,OO }, + { OO,OO,OO,OO,DN,OO,OO,OO,OO,OO,UP,OO,OO,OO,DN,OO,OO,OO }, + { OO,OO,OO,OO,TR,RT,RT,RT,RT,RT,TL,OO,OO,OO,TR,RT,RT,FN }, + { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + }; + + //{ OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + // { OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO,OO }, + } + } +}
\ No newline at end of file |
