45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using System;
|
|
|
|
namespace CzokoŚmieciarka.DataModels.Interfaces.TrashCans
|
|
{
|
|
public abstract class ATrashCan
|
|
{
|
|
protected ATrashCan(ITypeOfGarbage typeOfGarbage, int maxVolume)
|
|
{
|
|
this.MaxVolume = maxVolume;
|
|
this._typeOfGarbage = typeOfGarbage;
|
|
}
|
|
|
|
protected ITypeOfGarbage _typeOfGarbage;
|
|
|
|
public int MaxVolume { get;}
|
|
|
|
public AGarbage Garbage { get; private set; }
|
|
|
|
public int FillPercent
|
|
{
|
|
get { return Garbage.Volume / this.MaxVolume; }
|
|
}
|
|
|
|
public virtual bool AddGarbage(AGarbage garbage)
|
|
{
|
|
if (this._typeOfGarbage != garbage.TypeOfGarbage)
|
|
throw new Exception("You cannot add up different type garbage!");
|
|
|
|
var newGarbage = this.Garbage + Garbage;
|
|
if (newGarbage.Volume > this.MaxVolume)
|
|
return false;
|
|
|
|
this.Garbage = newGarbage;
|
|
return true;
|
|
}
|
|
|
|
public virtual AGarbage TakeGarbage()
|
|
{
|
|
var result = (AGarbage)this.Garbage.Clone();
|
|
this.Garbage.Weight = 0;
|
|
return result;
|
|
}
|
|
}
|
|
}
|