using System; 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; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using MonoGameView.DataModels.Models; namespace CzokoŚmieciarka.MonoGameView.DataModels.Models { public class House : IDrawables, IGarbageLocalization, ICloneable { public Coords Coords { get; } public House(Coords coords, List trashCans) { Coords = coords; TrashCans = trashCans.Select(x=>(x as ATrashCan)).ToList(); } 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); 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() { return new House((Coords) Coords.Clone(), TrashCans.Select(x => (TrashCan) x.Clone()).ToList()); } public List TrashCans { get; } } }