Initialized all classes.

Completed Tile.cs
Completed TilePattern.cs
Completed CalcPiecesPerHour method in Company.cs
This commit is contained in:
MarcUs7i 2024-11-07 21:15:39 +01:00
parent 343d21afc8
commit e6b4276661
3 changed files with 124 additions and 4 deletions

View file

@ -22,7 +22,11 @@ public sealed class Company
public Company(string name, decimal m2Price, decimal hourlyWage,
int profitMarginPercent, Worker[] workers)
{
// TODO
Name = name;
_m2Price = m2Price;
_hourlyWage = hourlyWage;
_profitMargin = profitMarginPercent;
_workers = workers;
}
/// <summary>
@ -39,6 +43,7 @@ public sealed class Company
public decimal GetCostEstimate(TilePattern pattern)
{
// TODO
return 0;
}
/// <summary>
@ -50,6 +55,30 @@ public sealed class Company
/// <returns>Number of tiles this company is able to place per hour</returns>
private double CalcPiecesPerHour(PatternStyle patternStyle)
{
// TODO
double piecesPerHour = 0;
for (int i = 0; i < _workers.Length; i++)
{
double pieces = DefaultPiecesPerHour;
// pieces based on worker's speed
if (_workers[i].WorkSpeed == WorkSpeed.Fast)
{
pieces += 5;
}
else if (_workers[i].WorkSpeed == WorkSpeed.Slow)
{
pieces -= 5;
}
// pieces based on pattern complexity
if (patternStyle == PatternStyle.Complex)
{
pieces /= 2;
}
piecesPerHour += pieces;
}
return piecesPerHour;
}
}

View file

@ -5,5 +5,62 @@
/// </summary>
public sealed class Tile
{
// TODO
private readonly TileStyle _style;
private readonly int _width;
private readonly int _height;
public readonly int Area;
public Tile(TileStyle style, int width, int height)
{
_style = style;
_width = width;
_height = height;
Area = width * height;
}
public decimal CalcProductionCost()
{
decimal pricePerCm = 0.016M;
decimal sizeFactor = 1;
switch (Area)
{
case < 100:
sizeFactor = 1.5M;
break;
case < 400:
sizeFactor = 1.2M;
break;
case > 2500:
if (Area > 8100)
{
sizeFactor = 1.8M;
break;
}
sizeFactor = 1.6M;
break;
}
decimal styleFactor = 1;
switch (_style)
{
case TileStyle.Raw:
styleFactor = 0.8M;
break;
case TileStyle.FancyColor:
styleFactor = 1.1M;
break;
case TileStyle.SimplePattern:
styleFactor = 1.25M;
break;
case TileStyle.Ornate:
styleFactor= 2.3M;
break;
}
decimal areaInCm = Area / 100M;
decimal cost = areaInCm * pricePerCm * sizeFactor * styleFactor;
return cost;
}
}

View file

@ -5,5 +5,39 @@
/// </summary>
public class TilePattern
{
// TODO
private readonly Tile[] _tiles;
public readonly PatternStyle Style;
public double Area
{
get
{
double area = 0;
foreach (var tile in _tiles)
{
area += tile.Area;
}
return area / 1000000;
}
}
public int Pieces => _tiles.Length;
public TilePattern(PatternStyle style, Tile[] tiles)
{
Style = style;
_tiles = tiles;
}
public decimal CalcProductionCost()
{
decimal productionCost = 0;
foreach (var tile in _tiles)
{
productionCost += tile.CalcProductionCost();
}
return productionCost;
}
}