You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AgPerformanceSensor.cs 1.2KB

12345678910111213141516171819202122232425262728293031323334
  1. using uqac_ia_aspirobot.Agent.Interfaces.Sensors;
  2. using uqac_ia_aspirobot.Extensions;
  3. using uqac_ia_aspirobot.Interfaces;
  4. namespace uqac_ia_aspirobot.Agent.Sensors
  5. {
  6. public class AgPerformanceSensor : IAgPerformanceSensor
  7. {
  8. private readonly IAgBatterySensor _agBatterySensor;
  9. private readonly IAgPickedSensor _agPickedSensor;
  10. private readonly IAgVaccumSensor _agVaccumSensor;
  11. private readonly IEnvironment _environment;
  12. public float Performance { get; protected set; }
  13. public AgPerformanceSensor(IAgBatterySensor agBatterySensor, IAgPickedSensor agPickedSensor,
  14. IAgVaccumSensor agVaccumSensor, IEnvironment environment)
  15. {
  16. _agBatterySensor = agBatterySensor;
  17. _agPickedSensor = agPickedSensor;
  18. _agVaccumSensor = agVaccumSensor;
  19. _environment = environment;
  20. }
  21. public void Update()
  22. {
  23. var dustyCount = _environment.FindDustyRooms().Count;
  24. var sum = _agPickedSensor.Picked + _agVaccumSensor.Vaccumed;
  25. Performance = (_agBatterySensor.Spent == 0 ? 0 : (float)sum / _agBatterySensor.Spent) - dustyCount;
  26. }
  27. }
  28. }