This commit is contained in:
s434678 2019-04-10 11:54:39 +02:00
commit aece006b15
55 changed files with 640 additions and 657 deletions

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{10E77BBE-55E1-483D-A456-0E94EAC9B24A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CzokoŚmieciarka.AI_Naive</RootNamespace>
<AssemblyName>CzokoŚmieciarka.AI_Naive</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="RoutePlanningEngine.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CzokoŚmieciarka.DataModels\CzokoŚmieciarka.DataModels.csproj">
<Project>{f2e11fee-c5ac-47d2-ba9c-819909b6dff7}</Project>
<Name>CzokoŚmieciarka.DataModels</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CzokoŚmieciarka.AI_Naive")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CzokoŚmieciarka.AI_Naive")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("10e77bbe-55e1-483d-a456-0e94eac9b24a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,117 +1,116 @@
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Interfaces.RoutePlanningEngine;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.DataModels.Models.Steps;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Czoko_Smieciarka.AI_Naive
{
public class RoutePlanningEngine : IRoutePlanningEngine
{
public IGarbageCollector Collector { get; }
public IEnumerable<IGarbageLocalization> Cans { get; }
public IEnumerable<ADump> Dumps { get; }
enum State { TravelToDump, TravelToCan, Wait, Finish }
public Coords Destination { get; set; }
public object DestinationObject { get; set; }
private State CurrentState { get; set; }
public IEnumerable<IStep> CalculateStep()
{
return PerformMove();
}
public RoutePlanningEngine(IGarbageCollector collector, IEnumerable<IGarbageLocalization> cans, IEnumerable<ADump> dumps)
{
this.Collector = collector.Clone() as IGarbageCollector;
this.Cans = cans;
this.Dumps = dumps;
this.CurrentState = State.Wait;
}
private IEnumerable<IStep> PerformMove()
{
switch (CurrentState)
{
case State.TravelToDump:
if (Destination == Collector.Position)
{
var dump = (DestinationObject as ADump);
var step = new SpillStep(Collector, dump, dump.TypeOfGarbage);
step.Invoke();
yield return step;
this.CurrentState = State.Wait;
} else
{
var dif = Destination - Collector.Position;
Direction nextDirection = (dif.X == 0) ?
((dif.Y > 0) ? Direction.Up : Direction.Down) :
((dif.X > 0) ? Direction.Right : Direction.Left);
var step = new MoveStep(nextDirection, Collector);
step.Invoke();
yield return step;
}
break;
case State.TravelToCan:
if (Destination == Collector.Position)
{
var garbage = (DestinationObject as IGarbageLocalization);
foreach (var item in garbage.TrashCans)
{
var step = new CollectStep(Collector, garbage, item.TypeOfGarbage);
step.Invoke();
yield return step;
}
this.CurrentState = State.Wait;
}
else
{
var dif = Destination - Collector.Position;
Direction nextDirection = (dif.X == 0) ?
((dif.Y > 0) ? Direction.Up : Direction.Down) :
((dif.X > 0) ? Direction.Right : Direction.Left);
var step = new MoveStep(nextDirection, Collector);
step.Invoke();
yield return step;
}
break;
case State.Wait:
var notEmpty = Collector.TrashContainers.Where(i => i.FillPercent > 0);
if (notEmpty.Any())
{
var destDump = Dumps.First(i => i.TypeOfGarbage == notEmpty.First().TypeOfGarbage);
this.Destination = destDump.Localization;
this.CurrentState = State.TravelToDump;
} else
{
var notEmptyCans = Cans.Where(i => i.TrashCans.Any(j => j.FillPercent > 0));
if (notEmptyCans.Any())
{
this.Destination = notEmptyCans.First().Coords;
this.CurrentState = State.TravelToCan;
} else
{
this.CurrentState = State.Finish;
}
}
break;
case State.Finish:
yield break;
}
foreach (var item in PerformMove())
{
yield return item;
}
}
}
}
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Interfaces.RoutePlanningEngine;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.DataModels.Models.Steps;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Czoko_Smieciarka.AI_Naive
{
public class RoutePlanningEngine : IRoutePlanningEngine
{
public IGarbageCollector Collector { get; }
public IEnumerable<IGarbageLocalization> Cans { get; }
public IEnumerable<ADump> Dumps { get; }
enum State { TravelToDump, TravelToCan, Wait, Finish }
public Coords Destination { get; set; }
public object DestinationObject { get; set; }
private State CurrentState { get; set; }
public void PerformStep()
{
PerformMove();
}
public RoutePlanningEngine(IGarbageCollector collector, IEnumerable<IGarbageLocalization> cans, IEnumerable<ADump> dumps)
{
this.Collector = collector;
this.Cans = cans;
this.Dumps = dumps;
this.CurrentState = State.Wait;
}
private bool PerformMove()
{
switch (CurrentState)
{
case State.TravelToDump:
if (Destination == Collector.Coords)
{
var dump = (DestinationObject as ADump);
var step = new SpillStep(Collector, dump, dump.TypeOfGarbage);
step.Invoke();
this.CurrentState = State.Wait;
}
else
{
var dif = Destination - Collector.Coords;
Direction nextDirection = (dif.X == 0) ?
((dif.Y > 0) ? Direction.Up : Direction.Down) :
((dif.X > 0) ? Direction.Right : Direction.Left);
var step = new MoveStep(nextDirection, Collector);
step.Invoke();
}
break;
case State.TravelToCan:
if (Destination == Collector.Coords)
{
var garbage = (DestinationObject as IGarbageLocalization);
foreach (var item in garbage.TrashCans)
{
var step = new CollectStep(Collector, garbage, item.TypeOfGarbage);
step.Invoke();
}
this.CurrentState = State.Wait;
}
else
{
var dif = Destination - Collector.Coords;
Direction nextDirection = (dif.X == 0) ?
((dif.Y > 0) ? Direction.Up : Direction.Down) :
((dif.X > 0) ? Direction.Right : Direction.Left);
var step = new MoveStep(nextDirection, Collector);
step.Invoke();
}
break;
case State.Wait:
var notEmpty = Collector.TrashContainers.Where(i => i.FillPercent > 0);
if (notEmpty.Any())
{
var destDump = Dumps.First(i => i.TypeOfGarbage == notEmpty.First().TypeOfGarbage);
this.Destination = destDump.Coords;
this.CurrentState = State.TravelToDump;
}
else
{
var notEmptyCans = Cans.Where(i => i.TrashCans.Any(j => j.FillPercent > 0));
if (notEmptyCans.Any())
{
this.Destination = notEmptyCans.First().Coords;
this.CurrentState = State.TravelToCan;
}
else
{
this.CurrentState = State.Finish;
}
}
break;
case State.Finish:
return false;
}
return true;
}
}
}

View File

@ -8,5 +8,8 @@ namespace CzokoŚmieciarka.DataModels.GeneralModels.Models
public TrashCan(ITypeOfGarbage typeOfGarbage, int maxVolume) : base(typeOfGarbage, maxVolume)
{
}
public TrashCan(ITypeOfGarbage typeOfGarbage, int maxVolume, Garbage garbage) : base(typeOfGarbage, maxVolume, garbage)
{
}
}
}

View File

@ -1,17 +1,18 @@
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.Interfaces;
namespace CzokoŚmieciarka.DataModels.GeneralModels.Models
{
public class TypeOfGarbage : ITypeOfGarbage
{
public TypeOfGarbage(string garbageType, int density, int processingTimePerUnit = 0)
public TypeOfGarbage(GarbageType garbageType, int density, int processingTimePerUnit = 0)
{
this.GarbageType = garbageType;
this.Density = density;
this.ProcessingTimePerUnit = processingTimePerUnit;
}
public string GarbageType { get; }
public GarbageType GarbageType { get; }
public int ProcessingTimePerUnit { get; }
public int Density { get; }
}

View File

@ -12,29 +12,29 @@ namespace CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector
{
public AGarbageCollector(Coords startPosition, IEnumerable<AGarbageCollectorContainer> trashContainers)
{
this.Position = startPosition;
this.Coords = startPosition;
this.TrashContainers = trashContainers;
}
public Coords Position { get; set; }
public Coords Coords { get; set; }
public Coords MoveUp()
{
return new Coords(Position.X,Position.Y+1);
return new Coords(Coords.X,Coords.Y+1);
}
public Coords MoveDown()
{
return new Coords(Position.X, Position.Y - 1);
return new Coords(Coords.X, Coords.Y - 1);
}
public Coords MoveLeft()
{
return new Coords(Position.X-1, Position.Y);
return new Coords(Coords.X-1, Coords.Y);
}
public Coords MoveRight()
{
return new Coords(Position.X+1, Position.Y);
return new Coords(Coords.X+1, Coords.Y);
}
public object Clone()

View File

@ -10,7 +10,7 @@ namespace CzokoŚmieciarka.DataModels.Interfaces
{
public interface IGarbageCollector : ICloneable
{
Coords Position { get; }
Coords Coords { get; }
Coords MoveUp();
Coords MoveDown();
Coords MoveLeft();

View File

@ -3,12 +3,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CzokoŚmieciarka.DataModels.Enums;
namespace CzokoŚmieciarka.DataModels.Interfaces
{
public interface ITypeOfGarbage
{
string GarbageType { get; }
GarbageType GarbageType { get; }
int ProcessingTimePerUnit { get; }

View File

@ -8,7 +8,7 @@ using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
namespace CzokoŚmieciarka.DataModels.Interfaces.RoutePlanningEngine
{
public interface IRoutePlanningEngine
{
IEnumerable<IStep> CalculateStep();
{
void PerformStep();
}
}
}

View File

@ -6,9 +6,9 @@ namespace CzokoŚmieciarka.DataModels.Interfaces.TrashCans
{
protected ADump(ITypeOfGarbage typeOfGarbage, int maxVolume, Coords localization) : base(typeOfGarbage, maxVolume)
{
this.Localization = localization;
this.Coords = localization;
}
public Coords Localization { get; }
public Coords Coords { get; set; }
}
}

View File

@ -9,6 +9,12 @@ namespace CzokoŚmieciarka.DataModels.Interfaces.TrashCans
this.MaxVolume = maxVolume;
this.TypeOfGarbage = typeOfGarbage;
}
protected ATrashCan(ITypeOfGarbage typeOfGarbage, int maxVolume, AGarbage garbage)
{
this.MaxVolume = maxVolume;
this.TypeOfGarbage = typeOfGarbage;
this.Garbage = garbage;
}
public ITypeOfGarbage TypeOfGarbage { get; }

View File

@ -27,13 +27,13 @@ namespace CzokoŚmieciarka.DataModels.Models
return !(a == b);
}
public static Coords operator + (Coords a, Coords b)
{
return new Coords(a.X + b.X, a.Y + b.Y);
public static Coords operator + (Coords a, Coords b)
{
return new Coords(a.X + b.X, a.Y + b.Y);
}
public static Coords operator -(Coords a, Coords b)
{
return new Coords(a.X - b.X, a.Y - b.Y);
public static Coords operator -(Coords a, Coords b)
{
return new Coords(a.X - b.X, a.Y - b.Y);
}
}
}

View File

@ -23,7 +23,7 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps
public void Invoke()
{
if(_garbageCollector.Position != _garbageLocalization.Coords)
if(_garbageCollector.Coords != _garbageLocalization.Coords)
throw new WrongPositionException("Śmieciarka nie jest w miejscu oderbania śmieci");
var trashCans = _garbageLocalization.TrashCans.Where(t => t.TypeOfGarbage == _typeOfGarbage);

View File

@ -23,7 +23,7 @@ namespace CzokoŚmieciarka.DataModels.Models.Steps
public void Invoke()
{
if(_garbageCollector.Position != _dump.Localization)
if(_garbageCollector.Coords != _dump.Coords)
throw new WrongPositionException("Śmieciarka nie na terenie podanego wyspiska");
if(_dump.TypeOfGarbage != _typeOfGarbage)

View File

@ -1,11 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Components\CzokoŚmieciarka.DataModels\CzokoŚmieciarka.DataModels.csproj" />
</ItemGroup>
</Project>

View File

@ -7,11 +7,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmieciarka.DataModels
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmieciarka.DataModels.GeneralModels", "Components\CzokoŚmieciarka.DataModels.GeneralModels\CzokoŚmieciarka.DataModels.GeneralModels.csproj", "{A3D5DA96-69D7-463F-B1EE-6FC70716E3B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmieciarka.WPF", "Interface\CzokoŚmieciarka.WPF\CzokoŚmieciarka.WPF.csproj", "{06937DFB-242D-46BD-9A4B-486D156B62A9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmieciarka.WPFv2", "Interface\CzokoŚmieciarka.WPFv2\CzokoŚmieciarka.WPFv2.csproj", "{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Czoko_Smieciarka.AI_Naive", "Czoko_Smieciarka.AI_Naive\Czoko_Smieciarka.AI_Naive.csproj", "{A1F1D99A-4E5B-4389-B776-321D8A5976EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmierciarka.WPF2.0", "Interface\CzokoŚmierciarka.WPF2.0\CzokoŚmierciarka.WPF2.0.csproj", "{6EE3CBC0-CD10-41D8-9282-FF91DCFB9D67}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CzokoŚmieciarka.AI_Naive", "Components\CzokoŚmieciarka.AI_Naive\CzokoŚmieciarka.AI_Naive.csproj", "{10E77BBE-55E1-483D-A456-0E94EAC9B24A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -27,18 +25,14 @@ Global
{A3D5DA96-69D7-463F-B1EE-6FC70716E3B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3D5DA96-69D7-463F-B1EE-6FC70716E3B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3D5DA96-69D7-463F-B1EE-6FC70716E3B2}.Release|Any CPU.Build.0 = Release|Any CPU
{06937DFB-242D-46BD-9A4B-486D156B62A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06937DFB-242D-46BD-9A4B-486D156B62A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06937DFB-242D-46BD-9A4B-486D156B62A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06937DFB-242D-46BD-9A4B-486D156B62A9}.Release|Any CPU.Build.0 = Release|Any CPU
{A1F1D99A-4E5B-4389-B776-321D8A5976EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1F1D99A-4E5B-4389-B776-321D8A5976EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1F1D99A-4E5B-4389-B776-321D8A5976EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1F1D99A-4E5B-4389-B776-321D8A5976EE}.Release|Any CPU.Build.0 = Release|Any CPU
{6EE3CBC0-CD10-41D8-9282-FF91DCFB9D67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6EE3CBC0-CD10-41D8-9282-FF91DCFB9D67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6EE3CBC0-CD10-41D8-9282-FF91DCFB9D67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6EE3CBC0-CD10-41D8-9282-FF91DCFB9D67}.Release|Any CPU.Build.0 = Release|Any CPU
{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}.Release|Any CPU.Build.0 = Release|Any CPU
{10E77BBE-55E1-483D-A456-0E94EAC9B24A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10E77BBE-55E1-483D-A456-0E94EAC9B24A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10E77BBE-55E1-483D-A456-0E94EAC9B24A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10E77BBE-55E1-483D-A456-0E94EAC9B24A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -1,2 +1,3 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Czoko_015Amieciarka_002EWPFv2_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Czoko_015Amieciarka_002EWPF_002EAnnotations/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -1,25 +0,0 @@
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;
using CzokoŚmieciarka.WPF.Models;
namespace CzokoŚmieciarka.WPF.Interfaces
{
public abstract class AObject : IObject
{
public Coords Location { get; set; }
public string ImagePath { get; set; }
public string Data { get; set; }
public ImageBrush Image { get; set; }
public void RefreshImage()
{
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
}
}
}

View File

@ -1,17 +0,0 @@
using CzokoŚmieciarka.DataModels.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace CzokoŚmieciarka.WPF.Models
{
public interface IObject
{
string ImagePath { get; set; }
string Data { get; set; }
ImageBrush Image { get; set; }
}
}

View File

@ -1,26 +0,0 @@
<Window x:Class="CzokoŚmieciarka.WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CzokoŚmieciarka.WPF"
xmlns:models="clr-namespace:CzokoŚmieciarka.WPF.Models"
mc:Ignorable="d"
Title="MainWindow" Height="800" Width="1000"
KeyDown="MainWindow_OnKeyDown">
<ItemsControl ItemsSource="{Binding Tiles}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type models:Tile}">
<Grid Background="{Binding Object.Image}">
<TextBlock Text="{Binding Object.Data}" Foreground="White"></TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="{Binding Rows}" Columns="{Binding Columns}"></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Window>

View File

@ -1,107 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using CzokoŚmieciarka.DataModels.Enums;
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.Interfaces;
using CzokoŚmieciarka.WPF.Models;
namespace CzokoŚmieciarka.WPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
//public Board board;
private static int rows = 9;
private static int columns = 9;
private GarbageCollectorWPF garbageCollector = new GarbageCollectorWPF(columns, rows, new Coords(0, 0), AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\garbageCollector.png", new List<AGarbageCollectorContainer>());
private List<AObject> Objects = new List<AObject>();
public MainWindow()
{
InitializeComponent();
for (int y = 0; y < rows; y++)
{
for (int x = 0; x < columns; x++)
{
Road road = new Road(columns, new Coords(x, y), AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\intersection.png");
Objects.Add(road);
}
}
List<Trash> trashes = new List<Trash>();
Trash glass = new Trash(GarbageType.Glass, 100);
Trash plasticMetal = new Trash(GarbageType.PlasticMetal, 100);
Trash organic = new Trash(GarbageType.Organic, 100);
Trash paper = new Trash(GarbageType.Paper, 100);
trashes.Add(glass);
trashes.Add(plasticMetal);
trashes.Add(organic);
trashes.Add(paper);
House house = new House(columns, new Coords(0, 0), trashes);
Objects[house.Location.X + house.Location.Y] = house;
house = new House(columns, new Coords(1, 0), trashes);
Objects[house.Location.X + house.Location.Y] = house;
house = new House(columns, new Coords(2, 0), trashes);
Objects[house.Location.X + house.Location.Y] = house;
DumpWPF dump = new DumpWPF(columns, new Coords(2, 4), glass);
Objects[dump.Location.X + dump.Location.Y] = dump;
dump = new DumpWPF(columns, new Coords(2, 5), paper);
Objects[dump.Location.X + dump.Location.Y] = dump;
dump = new DumpWPF(columns, new Coords(3, 4), organic);
Objects[dump.Location.X + dump.Location.Y] = dump;
dump = new DumpWPF(columns, new Coords(3, 5), plasticMetal);
Objects[dump.Location.X + dump.Location.Y] = dump;
Board board = new Board(Objects, garbageCollector);
this.DataContext = board;
}
private void MainWindow_OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up)
{
garbageCollector.Move(Direction.Up);
}
if (e.Key == Key.Down)
{
garbageCollector.Move(Direction.Down);
}
if (e.Key == Key.Left)
{
garbageCollector.Move(Direction.Left);
}
if (e.Key == Key.Right)
{
garbageCollector.Move(Direction.Right);
}
Board board = new Board(Objects, garbageCollector);
board.BoardRefresh(Objects, garbageCollector);
this.DataContext = board;
}
}
}

View File

@ -1,87 +0,0 @@
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;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
public class Board
{
static int _rows = 9;
static int _columns = 9;
List<Tile> _tiles = new List<Tile>();
public Board(List<AObject> objects, GarbageCollectorWPF garbageCollector)
{
foreach (var item in objects)
{
Tile tile = new Tile()
{
Data = item.Data,
Object = item
};
_tiles.Add(tile);
}
_tiles[garbageCollector.Location.X + garbageCollector.Location.Y].Object.Image = MergedBitmaps(
new Bitmap(_tiles[garbageCollector.Location.X + garbageCollector.Location.Y].Object.ImagePath),
new Bitmap(garbageCollector.ImagePath));
}
public void BoardRefresh(List<AObject> objects, GarbageCollectorWPF garbageCollector)
{
foreach (var item in objects)
{
_tiles[item.Location.X + item.Location.Y].Object = item;
_tiles[item.Location.X + item.Location.Y].Object.RefreshImage();
}
_tiles[garbageCollector.Location.X + garbageCollector.Location.Y].Object.Image = MergedBitmaps(
new Bitmap(_tiles[garbageCollector.Location.X + garbageCollector.Location.Y].Object.ImagePath),
new Bitmap(garbageCollector.ImagePath));
}
public int Rows
{
get { return _rows; }
set { _rows = value; }
}
public int Columns
{
get { return _columns; }
set { _columns = value; }
}
public List<Tile> Tiles
{
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;
}
}
}

View File

@ -1,49 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
class DumpWPF : AObject, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Trash Trash;
public DumpWPF(int columns, Coords location, Trash trash)
{
Location = new Coords(location.X, location.Y * columns);
Trash = trash;
switch (Trash.Type)
{
case GarbageType.Glass:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\glass.png";
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
Data = String.Format("House\n{0}: {1}", Trash.Type.ToString(), Trash.Weight);
break;
case GarbageType.PlasticMetal:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\plasticmetal.png";
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
Data = String.Format("House\n{0}: {1}", Trash.Type.ToString(), Trash.Weight);
break;
case GarbageType.Organic:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\organic.png";
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
Data = String.Format("House\n{0}: {1}", Trash.Type.ToString(), Trash.Weight);
break;
case GarbageType.Paper:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\paper.png";
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
Data = String.Format("House\n{0}: {1}", Trash.Type.ToString(), Trash.Weight);
break;
}
}
}
}

View File

@ -1,73 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Enums;
using CzokoŚmieciarka.DataModels.GeneralModels.Models;
using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPF.Annotations;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
public class GarbageCollectorWPF : AGarbageCollector, IObject, INotifyPropertyChanged
{
public Coords Location { get; set; }
public string ImagePath { get; set; }
public string Data { get; set; }
public ImageBrush Image { get; set; }
public int _columns { get; set; }
public int _rows { get; set; }
public void Move(Direction direction)
{
switch (direction)
{
case (Direction.Up):
Location.Y = Location.Y + (-1 * _columns);
Position = this.MoveUp();
break;
case (Direction.Down):
Location.Y = Location.Y + (1 * _columns);
Position = this.MoveDown();
break;
case (Direction.Left):
Location.X = Location.X + (-1);
Position = this.MoveLeft();
break;
case (Direction.Right):
Location.X = Location.X + (1);
Position = this.MoveRight();
break;
}
}
public GarbageCollectorWPF(int columns, int rows, Coords location, string imagePath, IEnumerable<AGarbageCollectorContainer> trashContainers) : base(location, trashContainers)
{
_columns = columns;
_rows = rows;
Location = new Coords(location.X, location.Y * columns);
ImagePath = imagePath;
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}

View File

@ -1,25 +0,0 @@
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;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
public class House : AObject
{
public List<Trash> Trashes = new List<Trash>();
public House(int columns, Coords location, List<Trash> trashes)
{
Trashes = trashes;
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png";
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
Location = new Coords(location.X, location.Y*columns);
Data = String.Format("House\n{0}: {1}\n{2}: {3}\n{4}: {5}\n{6}: {7}", Trashes[0].Type.ToString(), Trashes[0].Weight, Trashes[1].Type.ToString(), Trashes[1].Weight, Trashes[2].Type.ToString(), Trashes[2].Weight, Trashes[3].Type.ToString(), Trashes[3].Weight);
}
}
}

View File

@ -1,22 +0,0 @@
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;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
public class Road: AObject
{
public Road(int columns, Coords location, string imagePath)
{
Location = new Coords(location.X, location.Y * columns);
ImagePath = imagePath;
Image = new ImageBrush(new BitmapImage(new Uri(ImagePath)));
}
}
}

View File

@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using CzokoŚmieciarka.WPF.Interfaces;
namespace CzokoŚmieciarka.WPF.Models
{
public class Tile
{
public string Data { get; set; }
public AObject Object { get; set; }
}
}

View File

@ -1,21 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CzokoŚmieciarka.DataModels.Enums;
namespace CzokoŚmieciarka.WPF.Models
{
public class Trash
{
public GarbageType Type { get; set; }
public int Weight { get; set; }
public Trash(GarbageType type, int weight)
{
Type = type;
Weight = weight;
}
}
}

View File

@ -1,7 +1,7 @@
<Application x:Class="CzokoŚmieciarka.WPF.App"
<Application x:Class="CzokoŚmieciarka.WPFv2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CzokoŚmieciarka.WPF"
xmlns:local="clr-namespace:CzokoŚmieciarka.WPFv2"
StartupUri="MainWindow.xaml">
<Application.Resources>

View File

@ -6,13 +6,12 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace CzokoŚmieciarka.WPF
namespace CzokoŚmieciarka.WPFv2
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

View File

@ -4,10 +4,10 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{06937DFB-242D-46BD-9A4B-486D156B62A9}</ProjectGuid>
<ProjectGuid>{2BADDDA9-A77C-4FB2-9F28-4DAE712E8947}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>CzokoŚmieciarka.WPF</RootNamespace>
<AssemblyName>CzokoŚmieciarka.WPF</AssemblyName>
<RootNamespace>CzokoŚmieciarka.WPFv2</RootNamespace>
<AssemblyName>CzokoŚmieciarka.WPFv2</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
@ -37,7 +37,6 @@
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
@ -64,21 +63,18 @@
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Interfaces\AObject.cs" />
<Compile Include="Interfaces\IWPFObject.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Models\Board.cs" />
<Compile Include="Interfaces\IObject.cs" />
<Compile Include="Models\DumpWPF.cs" />
<Compile Include="Models\GarbageCollectorWPF.cs" />
<Compile Include="Models\Dump.cs" />
<Compile Include="Models\GarbageCollector.cs" />
<Compile Include="Models\House.cs" />
<Compile Include="Models\Road.cs" />
<Compile Include="Models\Tile.cs" />
<Compile Include="Models\Trash.cs" />
<Compile Include="Models\Road2.cs" />
<Compile Include="Properties\Annotations.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
@ -106,6 +102,10 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Components\CzokoŚmieciarka.AI_Naive\CzokoŚmieciarka.AI_Naive.csproj">
<Project>{10e77bbe-55e1-483d-a456-0e94eac9b24a}</Project>
<Name>CzokoŚmieciarka.AI_Naive</Name>
</ProjectReference>
<ProjectReference Include="..\..\Components\CzokoŚmieciarka.DataModels.GeneralModels\CzokoŚmieciarka.DataModels.GeneralModels.csproj">
<Project>{a3d5da96-69d7-463f-b1ee-6fc70716e3b2}</Project>
<Name>CzokoŚmieciarka.DataModels.GeneralModels</Name>
@ -115,5 +115,6 @@
<Name>CzokoŚmieciarka.DataModels</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using CzokoŚmieciarka.DataModels.Models;
namespace CzokoŚmieciarka.WPFv2.Interfaces
{
public interface IWPFObject
{
string ImagePath { get; set; }
Image Image { get; set; }
Coords Coords { get; set; }
}
}

View File

@ -0,0 +1,16 @@
<Window x:Class="CzokoŚmieciarka.WPFv2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CzokoŚmieciarka.WPFv2"
mc:Ignorable="d"
Title="MainWindow" Height="800" Width="1000"
KeyDown="MainWindow_OnKeyDown">
<Grid>
<Grid Name="Board" Margin="0,0,200,0"/>
<DataGrid Name="CollectorInfo" HorizontalAlignment="Right" Width="192"/>
<Grid Name="CollectorBoard" Margin="0,0,200,0"/>
</Grid>
</Window>

View File

@ -0,0 +1,151 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Czoko_Smieciarka.AI_Naive;
using CzokoŚmieciarka.DataModels.Enums;
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.WPFv2.Interfaces;
using CzokoŚmieciarka.WPFv2.Models;
namespace CzokoŚmieciarka.WPFv2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static int Columns = 9;
public static int Rows = 9;
IWPFObject[,] Objects = new IWPFObject[Columns,Rows];
private IEnumerable<AGarbageCollectorContainer> GarbageCollectorContainers;
private WPFGarbageCollector garbageCollector;
private RoutePlanningEngine routePlanningEngine;
public MainWindow()
{
InitializeComponent();
BoardInitialize();
}
private void MainWindow_OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
routePlanningEngine.PerformStep();
}
CollectorBoard.Children.Clear();
Grid.SetColumn(garbageCollector.Image, garbageCollector.Coords.X);
Grid.SetRow(garbageCollector.Image, garbageCollector.Coords.Y);
CollectorBoard.Children.Add(garbageCollector.Image);
Board.Children.Clear();
foreach (var item in Objects)
{
Grid.SetColumn(item.Image, item.Coords.X);
Grid.SetRow(item.Image, item.Coords.Y);
Board.Children.Add(item.Image);
}
}
private void BoardInitialize()
{
ColumnDefinition column;
RowDefinition row;
for (int i = 0; i < Rows; i++)
{
column = new ColumnDefinition();
row = new RowDefinition();
Board.ColumnDefinitions.Add(column);
Board.RowDefinitions.Add(row);
column = new ColumnDefinition();
row = new RowDefinition();
CollectorBoard.ColumnDefinitions.Add(column);
CollectorBoard.RowDefinitions.Add(row);
for (int j = 0; j < Columns; j++)
{
Road road = new Road();
Objects[i, j] = road;
Grid.SetRow(Objects[i, j].Image, i);
Grid.SetColumn(Objects[i, j].Image, j);
Board.Children.Add(Objects[i, j].Image);
}
}
Objects[2,7] = new WPFDump(new TypeOfGarbage(GarbageType.Glass,1,1), 10000,new Coords(2,7));
Grid.SetColumn(Objects[2, 7].Image, 2);
Grid.SetRow(Objects[2, 7].Image, 7);
Board.Children.Add(Objects[2, 7].Image);
Objects[3,7] = new WPFDump(new TypeOfGarbage(GarbageType.Organic,1,1),10000, new Coords(3,7));
Grid.SetColumn(Objects[3, 7].Image, 3);
Grid.SetRow(Objects[3, 7].Image, 7);
Board.Children.Add(Objects[3, 7].Image);
Objects[2,8] = new WPFDump(new TypeOfGarbage(GarbageType.Paper,1,1), 10000, new Coords(2,8));
Grid.SetColumn(Objects[2, 8].Image, 2);
Grid.SetRow(Objects[2, 8].Image, 8);
Board.Children.Add(Objects[2, 8].Image);
Objects[3,8] = new WPFDump(new TypeOfGarbage(GarbageType.PlasticMetal, 1,1), 10000, new Coords(3,8));
Grid.SetColumn(Objects[3, 8].Image, 3);
Grid.SetRow(Objects[3, 8].Image, 8);
Board.Children.Add(Objects[3, 8].Image);
GarbageCollectorContainers = new List<AGarbageCollectorContainer>()
{
new GarbageCollectorContainer(new TypeOfGarbage(GarbageType.Glass,1,1), 500),
new GarbageCollectorContainer(new TypeOfGarbage(GarbageType.Organic,1,1), 500),
new GarbageCollectorContainer(new TypeOfGarbage(GarbageType.PlasticMetal, 1,1),500),
new GarbageCollectorContainer(new TypeOfGarbage(GarbageType.Paper, 1,1), 500)
};
garbageCollector = new WPFGarbageCollector(new Coords(2, 1), GarbageCollectorContainers);
Grid.SetRow(garbageCollector.Image, garbageCollector.Coords.Y);
Grid.SetColumn(garbageCollector.Image, garbageCollector.Coords.X);
CollectorBoard.Children.Add(garbageCollector.Image);
CollectorBoard.ShowGridLines = true;
//CollectorInfo.ItemsSource = garbageCollector.TrashContainers;
//CollectorInfo.Items.Add(garbageCollector);
//CollectorInfo.Columns.Add(new DataGridTextColumn {Header="X", Binding = new Binding("Coords.X")});
//CollectorInfo.Columns.Add(new DataGridTextColumn { Header = "Y", Binding = new Binding("Coords.Y") });
IEnumerable<TrashCan> trashCans = new List<TrashCan>()
{
new TrashCan(new TypeOfGarbage(GarbageType.Glass,1,1), 500, new Garbage(new TypeOfGarbage(GarbageType.Glass,1,1), 100)),
new TrashCan(new TypeOfGarbage(GarbageType.Organic,1,1), 500, new Garbage(new TypeOfGarbage(GarbageType.Organic,1,1), 100)),
new TrashCan(new TypeOfGarbage(GarbageType.Paper,1,1), 500, new Garbage(new TypeOfGarbage(GarbageType.Paper,1,1), 100)),
new TrashCan(new TypeOfGarbage(GarbageType.PlasticMetal,1,1), 500, new Garbage(new TypeOfGarbage(GarbageType.PlasticMetal,1,1), 100))
};
WPFHouse house = new WPFHouse(new Coords(1, 3), trashCans);
Objects[1, 3] = house;
Grid.SetRow(Objects[1, 3].Image, 1);
Grid.SetColumn(Objects[1, 3].Image, 3);
Board.Children.Add(Objects[1, 3].Image);
routePlanningEngine = new RoutePlanningEngine(garbageCollector,
new List<IGarbageLocalization>()
{
new GarbageLocalization(house.Coords,house.TrashCans)
},
new List<ADump>()
{
});
}
}
}

View File

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Enums;
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.WPFv2.Interfaces;
namespace CzokoŚmieciarka.WPFv2.Models
{
class WPFDump : ADump, IWPFObject
{
public string ImagePath { get; set; }
public Image Image { get; set; }
public WPFDump(ITypeOfGarbage typeofGarbage, int maxVolume, Coords localization) : base ( typeofGarbage, maxVolume, localization)
{
Image = new Image();
switch (typeofGarbage.GarbageType)
{
case GarbageType.Glass:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\glass.png";
Image.Source = new BitmapImage(new Uri(ImagePath));
break;
case GarbageType.PlasticMetal:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\plasticmetal.png";
Image.Source = new BitmapImage(new Uri(ImagePath));
break;
case GarbageType.Organic:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\organic.png";
Image.Source = new BitmapImage(new Uri(ImagePath));
break;
case GarbageType.Paper:
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\Dumps\paper.png";
Image.Source = new BitmapImage(new Uri(ImagePath));
break;
}
}
}
}

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Interfaces.GarbageCollector;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPFv2.Annotations;
using CzokoŚmieciarka.WPFv2.Interfaces;
namespace CzokoŚmieciarka.WPFv2.Models
{
class WPFGarbageCollector : AGarbageCollector, IWPFObject, INotifyPropertyChanged
{
public string ImagePath { get; set; }
public Image Image { get; set; }
public WPFGarbageCollector(Coords startPosition, IEnumerable<AGarbageCollectorContainer> trashContainers) : base(startPosition, trashContainers)
{
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\garbageCollector.png";
Image = new Image
{
Source = new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory +
@"..\..\Images\garbageCollector.png"))
};
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}

View File

@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Interfaces;
using CzokoŚmieciarka.DataModels.Interfaces.TrashCans;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPFv2.Interfaces;
namespace CzokoŚmieciarka.WPFv2.Models
{
class WPFHouse : IGarbageLocalization, IWPFObject
{
public Coords Coords { get; set; }
public IEnumerable<ATrashCan> TrashCans { get; set; }
public string ImagePath { get; set; }
public Image Image { get; set; }
public WPFHouse(Coords coords, IEnumerable<ATrashCan> trashCans)
{
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\house.png";
Image = new Image
{
Source = new BitmapImage(new Uri(ImagePath))
};
TrashCans = trashCans;
Coords = coords;
}
}
}

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPFv2.Interfaces;
namespace CzokoŚmieciarka.WPFv2.Models
{
class Road : IWPFObject
{
public string ImagePath { get; set; }
public Image Image { get; set; }
public Coords Coords { get; set; }
public Road()
{
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\intersection.png";
Image = new Image
{
Source = new BitmapImage(new Uri(ImagePath))
};
}
}
}

View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using CzokoŚmieciarka.DataModels.Models;
using CzokoŚmieciarka.WPFv2.Interfaces;
namespace CzokoŚmieciarka.WPFv2.Models
{
class Road2 : IWPFObject
{
public string ImagePath { get; set; }
public Image Image { get; set; }
public Coords Coords { get; set; }
public Road2()
{
ImagePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Images\intersectionRED.png";
Image = new Image
{
Source = new BitmapImage(new Uri(ImagePath))
};
}
}
}

View File

@ -30,7 +30,7 @@ using System;
// ReSharper disable MemberCanBeProtected.Global
// ReSharper disable InconsistentNaming
namespace CzokoŚmieciarka.WPF.Annotations
namespace CzokoŚmieciarka.WPFv2.Annotations
{
/// <summary>
/// Indicates that the value of the marked element could be <c>null</c> sometimes,

View File

@ -7,11 +7,11 @@ using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CzokoŚmieciarka.WPF")]
[assembly: AssemblyTitle("CzokoŚmieciarka.WPFv2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CzokoŚmieciarka.WPF")]
[assembly: AssemblyProduct("CzokoŚmieciarka.WPFv2")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

View File

@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace CzokoŚmieciarka.WPF.Properties
namespace CzokoŚmieciarka.WPFv2.Properties
{
@ -44,7 +44,7 @@ namespace CzokoŚmieciarka.WPF.Properties
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CzokoŚmieciarka.WPF.Properties.Resources", typeof(Resources).Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CzokoŚmieciarka.WPFv2.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;

View File

@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace CzokoŚmieciarka.WPF.Properties
namespace CzokoŚmieciarka.WPFv2.Properties
{