#ifndef _CSCRIPTSTREAMEDAUDIO
#define _CSCRIPTSTREAMEDAUDIO

#include "MetroidPrime/CEntity.hpp"

class CScriptStreamedMusic : public CEntity {
public:
  CScriptStreamedMusic(TUniqueId id, const CEntityInfo& info, const rstl::string& name, bool active,
                       const rstl::string& fileName, bool noStopOnDeactivate, float fadeIn,
                       float fadeOut, uint volume, bool loop, bool music);
  ~CScriptStreamedMusic() {}

  void Stop(CStateManager& mgr);
  void Play(CStateManager& mgr);
  void Accept(IVisitor& visitor) override;
  void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId, CStateManager& stateMgr) override;

private:
  rstl::string x34_fileName;
  bool x44_noStopOnDeactivate;
  bool x45_fileIsDsp; // As opposed to .adp for DTK streaming
  bool x46_loop;
  bool x47_music;
  float x48_fadeIn;
  float x4c_fadeOut;
  uint x50_volume;

  static bool IsDSPFile(const rstl::string& fileName);
  static int IsOneShot(bool);
  void StopStream(CStateManager& mgr);
  void StartStream(CStateManager& mgr);
  void TweakOverride(CStateManager& mgr);

  void sub_8020c3f0(CStateManager& mgr);
  void sub_8020c414(CStateManager& mgr);
  void sub_8020be90();
};

#endif // _CSCRIPTSTREAMEDAUDIO
