#pragma once

#include <vector>

#include "Runtime/RetroTypes.hpp"
#include "Runtime/World/CEnergyDrainSource.hpp"

namespace metaforce {
class CStateManager;
class CPlayerEnergyDrain {
  std::vector<CEnergyDrainSource> x0_sources;
  float x10_energyDrainTime = 0.0f;

public:
  explicit CPlayerEnergyDrain(u32 numSources);
  const std::vector<CEnergyDrainSource>& GetEnergyDrainSources() const { return x0_sources; }
  void AddEnergyDrainSource(TUniqueId, float);
  void RemoveEnergyDrainSource(TUniqueId id);
  float GetEnergyDrainIntensity() const;
  float GetEnergyDrainTime() const { return x10_energyDrainTime; }
  void ProcessEnergyDrain(const CStateManager&, float);
};
} // namespace metaforce