создание 2 классов сортировки
This commit is contained in:
parent
165d0d1392
commit
d74a447e56
58
Stormtrooper/Stormtrooper/StormtrooperCompareByColor.cs
Normal file
58
Stormtrooper/Stormtrooper/StormtrooperCompareByColor.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Stormtrooper
|
||||
{
|
||||
internal class StormtrooperCompareByColor : IComparer<IDrawningObject>
|
||||
{
|
||||
public int Compare(IDrawningObject? x, IDrawningObject? y)
|
||||
{
|
||||
if (x == null && y == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x == null && y != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (x != null && y == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
var xStorm = x as DrawningObjectStorm;
|
||||
var yStorm = y as DrawningObjectStorm;
|
||||
if (xStorm == null && yStorm == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (xStorm == null && yStorm != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (xStorm != null && yStorm == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
var baseColorCompare = xStorm.GetStormtrooper.Storm.BodyColor.ToString().CompareTo(yStorm.GetStormtrooper.Storm.BodyColor.ToString());
|
||||
if (baseColorCompare != 0)
|
||||
{
|
||||
return baseColorCompare;
|
||||
}
|
||||
|
||||
if (xStorm.GetStormtrooper.Storm is EntityMilitaryStormtrooper xDDB && yStorm.GetStormtrooper.Storm is EntityMilitaryStormtrooper yDDB)
|
||||
{
|
||||
var extraColorCompare = xDDB.BodyColor.ToString().CompareTo(yDDB.BodyColor.ToString());
|
||||
if (extraColorCompare != 0)
|
||||
{
|
||||
return extraColorCompare;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
55
Stormtrooper/Stormtrooper/StormtrooperCompareByType.cs
Normal file
55
Stormtrooper/Stormtrooper/StormtrooperCompareByType.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Stormtrooper
|
||||
{
|
||||
internal class StormtrooperCompareByType : IComparer<IDrawningObject>
|
||||
{
|
||||
public int Compare(IDrawningObject? x, IDrawningObject? y)
|
||||
{
|
||||
if (x == null && y == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x == null && y != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (x != null && y == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
var xStorm = x as DrawningObjectStorm;
|
||||
var yStorm = y as DrawningObjectStorm;
|
||||
if (xStorm == null && yStorm == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (xStorm == null && yStorm != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (xStorm != null && yStorm == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (xStorm.GetStormtrooper.GetType().Name != yStorm.GetStormtrooper.GetType().Name)
|
||||
{
|
||||
if (xStorm.GetStormtrooper.GetType().Name == "Drawning")
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
var speedCompare = xStorm.GetStormtrooper.Storm.Speed.CompareTo(yStorm.GetStormtrooper.Storm.Speed);
|
||||
if (speedCompare != 0)
|
||||
{
|
||||
return speedCompare;
|
||||
}
|
||||
return xStorm.GetStormtrooper.Storm.Weight.CompareTo(yStorm.GetStormtrooper.Storm.Weight);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user