aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/facade/SoundContext.h
blob: e02977e92ae7a7222b56c17b52e0ee6ffc0ccef0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once

#include <soloud/soloud.h>

#include "../api/Config.h"

#include "Sound.h"

namespace crepe {

/**
 * \brief Sound engine facade
 *
 * This class is a wrapper around a \c SoLoud::Soloud instance, which provides
 * the methods for playing \c Sound instances. It is part of the sound facade.
 */
class SoundContext {
public:
	SoundContext();
	virtual ~SoundContext();

	SoundContext(const SoundContext &) = delete;
	SoundContext(SoundContext &&) = delete;
	SoundContext & operator=(const SoundContext &) = delete;
	SoundContext & operator=(SoundContext &&) = delete;

	Sound::Handle play(Sound & resource);
	void stop(Sound::Handle &);
	void set_volume(Sound &, Sound::Handle &, float);
	void set_loop(Sound &, Sound::Handle &, bool);
	bool get_playing(Sound::Handle &);

private:
	SoLoud::Soloud engine;
	float default_volume = 1.0f;

	Config & config = Config::get_instance();
};

} // namespace crepe