diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/App.xaml.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/App.xaml.cs index 65591e4..4942873 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/App.xaml.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/App.xaml.cs @@ -13,5 +13,6 @@ namespace CzokoŚmieciarka.WPF /// public partial class App : Application { + } } diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/CzokoŚmieciarka.WPF.csproj b/Trunk/Interface/CzokoŚmieciarka.WPF/CzokoŚmieciarka.WPF.csproj index 206dc7a..3531ee8 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/CzokoŚmieciarka.WPF.csproj +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/CzokoŚmieciarka.WPF.csproj @@ -37,6 +37,7 @@ + @@ -71,7 +72,9 @@ - + + + Code diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/dirt.jpg b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/dirt.jpg deleted file mode 100644 index 896a737..0000000 Binary files a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/dirt.jpg and /dev/null differ diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/garbageCollector.png b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/garbageCollector.png new file mode 100644 index 0000000..3283e83 Binary files /dev/null and b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/garbageCollector.png differ diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/house.png b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/house.png index 357a3ae..c69da1e 100644 Binary files a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/house.png and b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/house.png differ diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/intersection.png b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/intersection.png index a98dc6c..c57ed66 100644 Binary files a/Trunk/Interface/CzokoŚmieciarka.WPF/Images/intersection.png and b/Trunk/Interface/CzokoŚmieciarka.WPF/Images/intersection.png differ diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Interfaces/IObject.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Interfaces/IObject.cs index 8e3f8b0..66455bc 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/Interfaces/IObject.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Interfaces/IObject.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Media; namespace CzokoŚmieciarka.WPF.Models { @@ -11,5 +12,7 @@ namespace CzokoŚmieciarka.WPF.Models { Coords Location { get; set; } string ImagePath { get; set; } + string Data { get; set; } + ImageBrush Image { get; set; } } } diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml b/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml index d233077..46d0a02 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml @@ -10,8 +10,8 @@ - - + + diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml.cs index c103673..3f85132 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/MainWindow.xaml.cs @@ -13,6 +13,9 @@ using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; +using CzokoŚmieciarka.DataModels.GeneralModels.Models; +using CzokoŚmieciarka.DataModels.Interfaces; +using CzokoŚmieciarka.DataModels.Interfaces.TrashCans; using CzokoŚmieciarka.DataModels.Models; using CzokoŚmieciarka.WPF.Models; @@ -24,19 +27,38 @@ namespace CzokoŚmieciarka.WPF public partial class MainWindow : Window { public List Objects = new List(); + public GarbageCollector garbageCollector = new GarbageCollector(new Coords(0,0), new List()); public MainWindow() { InitializeComponent(); - Objects.Add(new Home() + Objects.Add(new House() { - ImagePath = @"C:\Users\s434678\Source\Repos\Czoko_Smieciarka\Trunk\Interface\CzokoŚmieciarka.WPF\Images\house.png", - Location = new Coords(10, 12) + ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png", + Image = new ImageBrush(new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png"))), + Location = new Coords(3, 2), + Data = "House" }); - this.DataContext = new Board(8, 10, Objects); + Objects.Add(new House() + { + ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png", + Image = new ImageBrush(new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png"))), + Location = new Coords(5, 8), + Data = "House" + }); + Objects.Add(new House() + { + ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png", + Image = new ImageBrush(new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png"))), + Location = new Coords(7, 5), + Data = "House" + }); + garbageCollector.Position.X += 1; + this.DataContext = new Board(9, 9, Objects, garbageCollector); + } - + } } diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Board.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Board.cs index 7cc761b..6184db4 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Board.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Board.cs @@ -1,10 +1,14 @@ using System; using System.Collections.Generic; +using System.Drawing; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; using System.Windows.Media.Imaging; +using CzokoŚmieciarka.DataModels.GeneralModels.Models; +using CzokoŚmieciarka.DataModels.Models; namespace CzokoŚmieciarka.WPF.Models { @@ -13,28 +17,36 @@ namespace CzokoŚmieciarka.WPF.Models int _rows; int _columns; List _tiles = new List(); + private GarbageCollectorWPF garbageCollectorWPF = new GarbageCollectorWPF(new Coords(0,0), AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\garbageCollector.png"); - public Board(int rows, int columns, List Objects) + public Board(int rows, int columns, List objects, GarbageCollector garbageCollector) { _rows = rows; _columns = columns; - ImageBrush imgBrush = new ImageBrush(new BitmapImage(new Uri(@"C:\Users\s434678\Source\Repos\Czoko_Smieciarka\Trunk\Interface\CzokoŚmieciarka.WPF\Images\intersection.png"))); for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { + Road road = new Road(AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\intersection.png"); _tiles.Add(new Tile() { - Data = string.Format("Dirt {0}", r * 10 + c), - Background = imgBrush + Data = string.Format(""), + Object = road }); } } - foreach(var item in Objects) + foreach(var item in objects) { - _tiles[item.Location.X + item.Location.Y].Background = new ImageBrush(new BitmapImage(new Uri(@item.ImagePath))); + _tiles[item.Location.X + item.Location.Y * columns].Object = item; + _tiles[item.Location.X + item.Location.Y * columns].Object.Image = item.Image; + _tiles[item.Location.X + item.Location.Y * columns].Object.Data = item.Data; } + + garbageCollectorWPF.Move(columns, garbageCollector); + _tiles[garbageCollectorWPF.Location.X + garbageCollectorWPF.Location.Y].Object.Image = MergedBitmaps( + new Bitmap(_tiles[garbageCollectorWPF.Location.X + garbageCollectorWPF.Location.Y].Object.ImagePath), + new Bitmap(garbageCollectorWPF.ImagePath)); } public int Rows @@ -54,5 +66,22 @@ namespace CzokoŚmieciarka.WPF.Models get { return _tiles; } set { _tiles = value; } } + + private ImageBrush MergedBitmaps(Bitmap bmp1, Bitmap bmp2) + { + using (Graphics g = Graphics.FromImage(bmp1)) + { + g.DrawImage(bmp2, new Point(0,0)); + } + MemoryStream ms = new MemoryStream(); + ((System.Drawing.Bitmap)bmp1).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); + BitmapImage image = new BitmapImage(); + image.BeginInit(); + ms.Seek(0, SeekOrigin.Begin); + image.StreamSource = ms; + image.EndInit(); + ImageBrush result = new ImageBrush(image); + return result; + } } } diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/GarbageCollectorWPF.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/GarbageCollectorWPF.cs new file mode 100644 index 0000000..ddd3ab3 --- /dev/null +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/GarbageCollectorWPF.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using CzokoŚmieciarka.DataModels.GeneralModels.Models; +using CzokoŚmieciarka.DataModels.Models; + +namespace CzokoŚmieciarka.WPF.Models +{ + public class GarbageCollectorWPF : IObject + { + public Coords Location { get; set; } + + public void Move(int columns, GarbageCollector garbageCollector) + { + Location.X = garbageCollector.Position.X; + Location.Y = garbageCollector.Position.Y * columns; + } + + public string ImagePath { get; set; } + public string Data { get; set; } + public ImageBrush Image { get; set; } + + public GarbageCollectorWPF(Coords location, string imagePath) + { + Location = location; + ImagePath = imagePath; + Image = new ImageBrush(new BitmapImage(new Uri(ImagePath))); + } + + } +} diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Home.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/House.cs similarity index 67% rename from Trunk/Interface/CzokoŚmieciarka.WPF/Models/Home.cs rename to Trunk/Interface/CzokoŚmieciarka.WPF/Models/House.cs index ab3e271..f622b88 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Home.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/House.cs @@ -3,13 +3,16 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Media; using CzokoŚmieciarka.DataModels.Models; namespace CzokoŚmieciarka.WPF.Models { - public class Home : IObject + public class House : IObject { public Coords Location { get; set; } public string ImagePath { get; set; } + public string Data { get; set; } + public ImageBrush Image { get; set; } } } diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Road.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Road.cs new file mode 100644 index 0000000..5116285 --- /dev/null +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Road.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using CzokoŚmieciarka.DataModels.Models; + +namespace CzokoŚmieciarka.WPF.Models +{ + public class Road: IObject + { + public Coords Location { get; set; } + public string ImagePath { get; set; } + public string Data { get; set; } + public ImageBrush Image { get; set; } + + public Road(string imagePath) + { + ImagePath = imagePath; + Image = new ImageBrush(new BitmapImage(new Uri(ImagePath))); + } + } +} diff --git a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Tile.cs b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Tile.cs index c1ae124..d02f5cd 100644 --- a/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Tile.cs +++ b/Trunk/Interface/CzokoŚmieciarka.WPF/Models/Tile.cs @@ -10,6 +10,6 @@ namespace CzokoŚmieciarka.WPF.Models public class Tile { public string Data { get; set; } - public ImageBrush Background { get; set; } + public IObject Object { get; set; } } }