diff options
Diffstat (limited to 'Penguloon/Levels')
| -rw-r--r-- | Penguloon/Levels/LevelBase.cs | 40 | ||||
| -rw-r--r-- | Penguloon/Levels/Map.cs | 2 | ||||
| -rw-r--r-- | Penguloon/Levels/WaveManager.cs | 1 |
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++; } } |
