summaryrefslogtreecommitdiff
path: root/Penguloon/Levels/LevelBase.cs
diff options
context:
space:
mode:
authoraldrikboy <aldrikboy@gmail.com>2018-01-01 23:49:59 +0100
committeraldrikboy <aldrikboy@gmail.com>2018-01-01 23:49:59 +0100
commitc3c4f2c7617c393ad6e8c7f1d87abf4a9a8cf602 (patch)
treeaff9fde951a0ecbd18aac6b32f6ccbbe82709610 /Penguloon/Levels/LevelBase.cs
parentda38e93e55b6ff46a53dcd9d2be393149089d329 (diff)
bobba
Diffstat (limited to 'Penguloon/Levels/LevelBase.cs')
-rw-r--r--Penguloon/Levels/LevelBase.cs38
1 files changed, 35 insertions, 3 deletions
diff --git a/Penguloon/Levels/LevelBase.cs b/Penguloon/Levels/LevelBase.cs
index 2b003cf..e077ee4 100644
--- a/Penguloon/Levels/LevelBase.cs
+++ b/Penguloon/Levels/LevelBase.cs
@@ -1,7 +1,10 @@
-using Microsoft.Xna.Framework;
+using System;
+using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input.Touch;
using Penguloon.Scenes;
+using Penguloon.Controls;
+using System.Collections.Generic;
namespace Penguloon.Levels
{
@@ -38,6 +41,8 @@ namespace Penguloon.Levels
{
this.ParentScene = sceneBase;
CreateMap();
+
+ lastLevelCheck = UserdataManager.GetLevel();
}
public void Draw(float deltaTime)
@@ -58,6 +63,23 @@ namespace Penguloon.Levels
UpdateUnique(deltaTime, touchLocations);
CheckForObjectPlacement(touchLocations);
+
+ CheckForLevelUp();
+ }
+
+ int lastLevelCheck;
+ private void CheckForLevelUp()
+ {
+ if (Finished) return;
+
+ int lvl = UserdataManager.GetLevel(UserdataManager.TotalKills + Kills);
+
+ if (lvl != lastLevelCheck)
+ {
+ lastLevelCheck = lvl;
+
+ Alert.Show("Leveled up to " + lvl + "!", 3000, ParentScene);
+ }
}
private void CheckForObjectPlacement(TouchLocation[] touchLocations)
@@ -77,6 +99,15 @@ namespace Penguloon.Levels
int posToSpawnX = tileX * Map.TileWidth;
int posToSpawnY = tileY * Map.TileHeight;
+ List<Vector2> spawnPosToCheck = new List<Vector2>();
+ for(int x = 0; x < ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanX; x++)
+ {
+ for (int y = 0; y < ParentScene.ObjectSeletor.Objects[ParentScene.ObjectSeletor.SelectedObjectIndex].Item1.TileSpanY; y++)
+ {
+ spawnPosToCheck.Add(new Vector2(posToSpawnX + (Map.TileWidth * x), posToSpawnY + (Map.TileHeight * y)));
+ }
+ }
+
// check if there isnt an object already
for (int x = 0; x < Map.Objects.Count; x++)
{
@@ -86,7 +117,8 @@ namespace Penguloon.Levels
{
Vector2 posToCheck = Map.Objects[x].Position + new Vector2(px * Map.TileWidth, py * Map.TileHeight);
- if (posToCheck == new Vector2(posToSpawnX, posToSpawnY))
+ for (int t = 0; t < spawnPosToCheck.Count; t++)
+ if (posToCheck == spawnPosToCheck[t])
return;
}
}
@@ -132,7 +164,7 @@ namespace Penguloon.Levels
}
public void FinishGame()
- {
+ {
// upload score here or something
UserdataManager.GamesPlayed++;
UserdataManager.TotalKills += Kills;