OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
gamemusic.h
Go to the documentation of this file.
1#pragma once
2
3#include <zenkit/addon/daedalus.hh>
4
5#include <Tempest/SoundDevice>
6#include <Tempest/SoundEffect>
7
8class GameMusic final {
9 public:
10 GameMusic();
11 GameMusic(const GameMusic&)=delete;
12 ~GameMusic();
13
14 static GameMusic& inst();
15
16 enum Music : uint8_t {
18 };
19
20 enum Tags : uint8_t {
21 Day = 0,
22 Ngt = 1<<0,
23
24 Std = 0,
25 Fgt = 1<<1,
26 Thr = 1<<2
27 };
28
29 static Tags mkTags(Tags daytime,Tags mode);
30
31 void setEnabled(bool e);
32 bool isEnabled() const;
33 void setMusic(Music m);
34 void setMusic(const zenkit::IMusicTheme &theme, Tags t);
35 void stopMusic();
36
37 private:
38 struct MusicProvider;
39 struct OpenGothicMusicProvider;
40 struct GothicKitMusicProvider;
41
42 void setupSettings();
43
44 static GameMusic* instance;
45
46 struct {
47 zenkit::IMusicTheme theme = {};
49 } currentMusic;
50
51 int provider = -1;
52 Tempest::SoundDevice device;
53 Tempest::SoundEffect sound;
54 MusicProvider* impl = nullptr;
55 };
void setEnabled(bool e)
static Tags mkTags(Tags daytime, Tags mode)
static GameMusic & inst()
zenkit::IMusicTheme theme
Definition gamemusic.h:47
void setMusic(Music m)
GameMusic(const GameMusic &)=delete
bool isEnabled() const
void stopMusic()
Tags tags
Definition gamemusic.h:48
static CommandLine * instance