diff --git a/Trunk/MonoGameView/DataModels/Displayer.cs b/Trunk/MonoGameView/DataModels/Displayer.cs index c734f44..bb5fe3d 100644 --- a/Trunk/MonoGameView/DataModels/Displayer.cs +++ b/Trunk/MonoGameView/DataModels/Displayer.cs @@ -6,8 +6,29 @@ using System.Threading.Tasks; namespace MonoGameView.DataModels { - public class Displayer + public sealed class Displayer { - public Dictionary Content { get; set; } + static Displayer _container = null; + public Dictionary barsPercent { get; set; } + public Dictionary info { get; set; } + + public static int GetPercent(string s) + { + return _container.barsPercent[s]; + } + + public void SetInfo(Dictionary _info) + { + info = _info; + } + + public void SetBars(Dictionary barsPercent) + { + this.barsPercent = barsPercent; + } + public Displayer() + { + + } } } diff --git a/Trunk/MonoGameView/DataModels/Models/Dump.cs b/Trunk/MonoGameView/DataModels/Models/Dump.cs index e459af1..e214ea4 100644 --- a/Trunk/MonoGameView/DataModels/Models/Dump.cs +++ b/Trunk/MonoGameView/DataModels/Models/Dump.cs @@ -1,4 +1,5 @@ -using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces; +using System; +using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans; using CzokoŚmieciarka.MonoGameView.DataModels.Models; using Microsoft.Xna.Framework; @@ -16,6 +17,7 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.GeneralModels.Models public void Draw(SpriteBatch batch, int size) { batch.Draw(ImageContainer.GetImage(TypeOfGarbage.GarbageType.ToString()), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size, 500 / size, 500 / size), Color.White); + batch.Draw(ImageContainer.GetImage(TypeOfGarbage.GarbageType.ToString()+"Bar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size, (int)Math.Round(FillPercent * 500) / size, 50 / size), Color.White); } public override object Clone() diff --git a/Trunk/MonoGameView/DataModels/Models/House.cs b/Trunk/MonoGameView/DataModels/Models/House.cs index 5c2c489..f45e01f 100644 --- a/Trunk/MonoGameView/DataModels/Models/House.cs +++ b/Trunk/MonoGameView/DataModels/Models/House.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using CzokoŚmieciarka.MonoGameView.DataModels.Enums; using CzokoŚmieciarka.MonoGameView.DataModels.GeneralModels.Models; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces; using CzokoŚmieciarka.MonoGameView.DataModels.Interfaces.TrashCans; @@ -25,11 +26,24 @@ namespace CzokoŚmieciarka.MonoGameView.DataModels.Models public void Draw(SpriteBatch batch, int size) { batch.Draw(ImageContainer.GetImage("house"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size, 500 / size, 500 / size), Color.White); - batch.Draw(ImageContainer.GetImage("GlassBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size, (int)Math.Round(TrashCans.ElementAtOrDefault(0).FillPercent*500) / size, 50 / size), Color.White); - batch.Draw(ImageContainer.GetImage("PaperBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 5, (int)Math.Round(TrashCans.ElementAtOrDefault(1).FillPercent * 500) / size, 50 / size), Color.White); - batch.Draw(ImageContainer.GetImage("PlasticMetalBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 10, (int)Math.Round(TrashCans.ElementAtOrDefault(2).FillPercent * 500) / size, 50 / size), Color.White); - batch.Draw(ImageContainer.GetImage("OrganicBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 15, (int)Math.Round(TrashCans.ElementAtOrDefault(3).FillPercent * 500) / size, 50 / size), Color.White); - + foreach (TrashCan can in TrashCans) + { + switch (can.Garbage.TypeOfGarbage.GarbageType) + { + case GarbageType.Glass: + batch.Draw(ImageContainer.GetImage("GlassBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size, (int)Math.Round(can.FillPercent * 500) / size, 50 / size), Color.White); + break; + case GarbageType.Paper: + batch.Draw(ImageContainer.GetImage("PaperBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 5, (int)Math.Round(can.FillPercent * 500) / size, 50 / size), Color.White); + break; + case GarbageType.PlasticMetal: + batch.Draw(ImageContainer.GetImage("PlasticMetalBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 10, (int)Math.Round(can.FillPercent * 500) / size, 50 / size), Color.White); + break; + case GarbageType.Organic: + batch.Draw(ImageContainer.GetImage("OrganicBar"), new Rectangle(Coords.X * 500 / size, Coords.Y * 500 / size + 15, (int)Math.Round(can.FillPercent * 500) / size, 50 / size), Color.White); + break; + } + } } public object Clone() diff --git a/Trunk/MonoGameView/Game1.cs b/Trunk/MonoGameView/Game1.cs index 7ff4d39..62d46c5 100644 --- a/Trunk/MonoGameView/Game1.cs +++ b/Trunk/MonoGameView/Game1.cs @@ -38,7 +38,7 @@ namespace CzokoŚmieciarka.MonoGameView List steps; GarbageCollector collector; IDrawables[,] grid; - Displayer displayer = new Displayer(){Content = new Dictionary()}; + Displayer displayer = new Displayer(); public Game1() @@ -64,28 +64,28 @@ namespace CzokoŚmieciarka.MonoGameView // TODO: Add your initialization logic here timer = 0f; - mapLoader.Load(out size,out grid,"map2.xml"); + mapLoader.Load(out size,out grid,"map3.xml"); var containers = new List() { new GarbageCollectorContainer( new TypeOfGarbage(GarbageType.Glass,1), - 1000, + 10000, new BasicGarbage(new TypeOfGarbage(GarbageType.Glass,1),0) ), new GarbageCollectorContainer( new TypeOfGarbage(GarbageType.Paper,1), - 1000, - new BasicGarbage(new TypeOfGarbage(GarbageType.Glass,1),0) + 10000, + new BasicGarbage(new TypeOfGarbage(GarbageType.Paper,1),0) ), new GarbageCollectorContainer( new TypeOfGarbage(GarbageType.Organic,1), - 1000, - new BasicGarbage(new TypeOfGarbage(GarbageType.Glass,1),0) + 10000, + new BasicGarbage(new TypeOfGarbage(GarbageType.Organic,1),0) ), new GarbageCollectorContainer( new TypeOfGarbage(GarbageType.PlasticMetal,1), - 1000, - new BasicGarbage(new TypeOfGarbage(GarbageType.Glass,1),0) + 10000, + new BasicGarbage(new TypeOfGarbage(GarbageType.PlasticMetal,1),0) ), }; @@ -148,15 +148,19 @@ namespace CzokoŚmieciarka.MonoGameView } */ // TODO: Add your update logic here + var barsDictionary = new Dictionary(); var collectorDictionary = new Dictionary { - {"Garbage Collector Info", ""}, - {collector.TrashContainers.ElementAtOrDefault(0).TypeOfGarbage.GarbageType.ToString(), collector.TrashContainers.ElementAtOrDefault(0).Garbage.Weight.ToString()}, - {collector.TrashContainers.ElementAtOrDefault(1).TypeOfGarbage.GarbageType.ToString(), collector.TrashContainers.ElementAtOrDefault(1).Garbage.Weight.ToString()}, - {collector.TrashContainers.ElementAtOrDefault(2).TypeOfGarbage.GarbageType.ToString(), collector.TrashContainers.ElementAtOrDefault(2).Garbage.Weight.ToString()}, - {collector.TrashContainers.ElementAtOrDefault(3).TypeOfGarbage.GarbageType.ToString(), collector.TrashContainers.ElementAtOrDefault(3).Garbage.Weight.ToString()} + {"Garbage Collector Info", ""} }; - displayer.Content = collectorDictionary; + foreach (GarbageCollectorContainer container in collector.TrashContainers) + { + collectorDictionary.Add(container.TypeOfGarbage.GarbageType.ToString(), container.Garbage.Weight.ToString()); + barsDictionary.Add(container.TypeOfGarbage.GarbageType.ToString(), (int) Math.Round(container.FillPercent * 100)); + } + + displayer.info = collectorDictionary; + displayer.barsPercent = barsDictionary; base.Update(gameTime); } @@ -177,7 +181,7 @@ namespace CzokoŚmieciarka.MonoGameView } } collector.Draw(spriteBatch, size); - Display(displayer.Content); + Display(displayer.info, displayer.barsPercent); spriteBatch.End(); // TODO: Add your drawing code here @@ -188,7 +192,7 @@ namespace CzokoŚmieciarka.MonoGameView /// /// /// - public void Display(Dictionary info) + public void Display(Dictionary info, Dictionary barInfo) { int x = 510; int y = 10; @@ -198,7 +202,15 @@ namespace CzokoŚmieciarka.MonoGameView y += 15; spriteBatch.DrawString(font, item.Value, new Vector2(x, y), Color.White); y += 30; - + try + { + var bar = barInfo[item.Key]; + spriteBatch.Draw(ImageContainer.GetImage(item.Key+"Bar"), new Rectangle(x, y, bar * 40, 10), Color.White); + y += 50; + } + catch + { + } } } } diff --git a/Trunk/MonoGameView/map2.xml b/Trunk/MonoGameView/map2.xml index a60ee6a..35584d5 100644 --- a/Trunk/MonoGameView/map2.xml +++ b/Trunk/MonoGameView/map2.xml @@ -716,7 +716,7 @@ - 100 + 100000 @@ -743,7 +743,7 @@ - 100 + 100000 @@ -874,7 +874,7 @@ - 100 + 100000 @@ -901,7 +901,7 @@ - 100 + 100000