/** * @file Instrument.h * @author sriram * * */ #ifndef CANADIANEXPERIENCE_MACHINELIB_INSTRUMENT_H #define CANADIANEXPERIENCE_MACHINELIB_INSTRUMENT_H #include "Shape.h" #include "AirSink.h" #include struct ma_engine; /** * base class for instruments */ class Instrument: public Shape { private: ///is instrument hit bool mHit = false; ///name std::wstring mName; ///position wxPoint mPosition; /// The miniaudio engine ma_engine* mAudioEngine; /// The miniaudio sound ma_sound mSound; public: Instrument(std::wstring resourcesDir, ma_engine* audioEngine,std::wstring sound); /// Default constructor Instrument()=delete; /// Copy constructor (disabled) Instrument(const Instrument &) = delete; /// Assignment operator void operator=(const Instrument &) = delete; /// destructor ~Instrument(); /** * play sound */ void PlaySound(); virtual void Draw(std::shared_ptr graphics,double x, double y); /** * setter for sink * @param sink */ virtual void SetSink(AirSink sink){} }; #endif //CANADIANEXPERIENCE_MACHINELIB_INSTRUMENT_H