summaryrefslogtreecommitdiff
path: root/Penguloon/Levels
diff options
context:
space:
mode:
authoraldrikboy <aldrikboy@gmail.com>2018-01-13 16:01:11 +0100
committeraldrikboy <aldrikboy@gmail.com>2018-01-13 16:01:11 +0100
commitd26927ed5be011c8200e31e2c6f92394c279647d (patch)
treeca207ba040aaf97e1eb28b606cc3be5a9d21a87c /Penguloon/Levels
parent4ae069581351b8712fd4647e9b902da1e3c9dbe3 (diff)
endscreen xd
Diffstat (limited to 'Penguloon/Levels')
-rw-r--r--Penguloon/Levels/LevelBase.cs40
-rw-r--r--Penguloon/Levels/Map.cs2
-rw-r--r--Penguloon/Levels/WaveManager.cs1
3 files changed, 39 insertions, 4 deletions
diff --git a/Penguloon/Levels/LevelBase.cs b/Penguloon/Levels/LevelBase.cs
index 31f94fa..013bd94 100644
--- a/Penguloon/Levels/LevelBase.cs
+++ b/Penguloon/Levels/LevelBase.cs
@@ -21,8 +21,10 @@ namespace Penguloon.Levels
public Map Map { get; set; }
public int Health { get; set; }
+ public int Money { get; set; }
- public int Money { get; set; } = 0;
+ public int HealthBase { get; set; }
+ public int MoneyBase { get; set; }
public int MoneySpent { get; set; } = 0;
@@ -37,16 +39,21 @@ namespace Penguloon.Levels
public TouchLocation[] PrevTouchLocations { get; set; }
public DateTime StartDate { get; set; }
+ public DateTime EndDate { get; set; }
+
+ public bool NewPR { get; set; } = false;
public LevelBase()
{
-
+
}
public abstract void CreateMap();
public virtual void Initialize(GameScene sceneBase)
{
+ MoneyBase = Money;
+ HealthBase = Health;
StartDate = DateTime.Now;
this.ParentScene = sceneBase;
CreateMap();
@@ -62,12 +69,31 @@ namespace Penguloon.Levels
DrawSelectedObject();
- string time = (DateTime.Now - StartDate).ToString("hh':'mm':'ss");
+ string time = "";
+
+ if (!Finished)
+ time = (DateTime.Now - StartDate).ToString("hh':'mm':'ss");
+ else
+ time = (EndDate - StartDate).ToString("hh':'mm':'ss");
ParentScene.DrawText(ContentManager.GetFont("Fonts/GWENT/36"), time, new Vector2(10, StaticUIValues.ScreenViewport.Y - ContentManager.GetFont("Fonts/GWENT/36").MeasureString("XD").Y - 10),
new Vector2(), TextAllignment.LeftTop, Color.White, Color.Black, 2);
}
+ public void Restart()
+ {
+ CreateMap();
+ Map.WaveManager.CurrentWave = 1;
+
+ ParentScene.StartRoundBtn.ControlState = ControlState.Idle;
+ StartDate = DateTime.Now;
+ Kills = 0;
+ MoneySpent = 0;
+ Money = MoneyBase;
+ Health = HealthBase;
+ Finished = false;
+ }
+
private void DrawSelectedObject()
{
if (ParentScene.ObjectSeletor.State == Controls.State.Idle || ParentScene.ObjectSeletor.SelectedObjectIndex == -1) return;
@@ -110,9 +136,12 @@ namespace Penguloon.Levels
{
Map.Update(deltaTime);
- if(Health <= 0)
+ if(Health <= 0 && !Finished)
{
Finished = true;
+ EndDate = DateTime.Now;
+ ParentScene.IngameEndStats.State = IngameOptionsState.Show;
+ FinishGame();
}
UpdateUnique(deltaTime, touchLocations);
@@ -249,7 +278,10 @@ namespace Penguloon.Levels
UserdataManager.HighestKills = Kills;
if (Map.WaveManager.CurrentWave - 1 > UserdataManager.HighestRound)
+ {
UserdataManager.HighestRound = Map.WaveManager.CurrentWave - 1;
+ NewPR = true;
+ }
UserdataManager.WriteData(ParentScene.Main.Context);
diff --git a/Penguloon/Levels/Map.cs b/Penguloon/Levels/Map.cs
index c4dadaf..7f06cd0 100644
--- a/Penguloon/Levels/Map.cs
+++ b/Penguloon/Levels/Map.cs
@@ -158,6 +158,8 @@ namespace Penguloon.Levels
Enemies[i].Update(deltaTime);
}
+ if (ParentScene.Level.Finished) return;
+
for (int i = 0; i < Objects.Count; i++)
{
Objects[i].Update(deltaTime);
diff --git a/Penguloon/Levels/WaveManager.cs b/Penguloon/Levels/WaveManager.cs
index b7dd192..d7be1ba 100644
--- a/Penguloon/Levels/WaveManager.cs
+++ b/Penguloon/Levels/WaveManager.cs
@@ -75,6 +75,7 @@ namespace Penguloon.Levels
internal void FinishRound()
{
+ if (!Map.Level.Finished)
CurrentWave++;
}
}