summaryrefslogtreecommitdiff
path: root/Penguloon/Levels
diff options
context:
space:
mode:
Diffstat (limited to 'Penguloon/Levels')
-rw-r--r--Penguloon/Levels/IceLevel.cs3
-rw-r--r--Penguloon/Levels/IceLevel2.cs1
-rw-r--r--Penguloon/Levels/IceLevel3.cs1
-rw-r--r--Penguloon/Levels/LevelBase.cs8
-rw-r--r--Penguloon/Levels/Map.cs42
-rw-r--r--Penguloon/Levels/SandLevel1.cs89
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