Skip to content

Commit 6a8c66e

Browse files
committed
Merge branch 'master' into feature/InputManager
This time fixing merge problems on GitHub and any build jobs.
2 parents 9e5ad2c + d40d425 commit 6a8c66e

50 files changed

Lines changed: 1358 additions & 67 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BloomFramework.sln

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1-
1+
22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27703.2018
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.28315.86
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BloomFramework", "BloomFramework\BloomFramework.vcxproj", "{C640C874-D67E-4B31-AF02-378FE5C4D3A3}"
77
EndProject
88
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test Bench", "Test Bench\Test Bench.vcxproj", "{69BCBA61-1EF9-4E33-92FB-DC40D2F2319C}"
99
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D20B0FF1-C538-4E21-8AAF-785C13282F52}"
11+
ProjectSection(SolutionItems) = preProject
12+
README.md = README.md
13+
EndProjectSection
14+
EndProject
1015
Global
1116
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1217
Debug|x64 = Debug|x64

BloomFramework/BloomFramework.vcxproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,14 +163,29 @@
163163
<None Include="packages.config" />
164164
</ItemGroup>
165165
<ItemGroup>
166+
<ClInclude Include="include\Audio\Audio.h" />
167+
<ClInclude Include="include\Audio\AudioDefine.h" />
168+
<ClInclude Include="include\Audio\SoundChannel.h" />
169+
<ClInclude Include="include\Audio\SoundPlayer.h" />
170+
<ClInclude Include="include\Audio\SoundStore.h" />
171+
<ClInclude Include="include\Audio\MusicTrack.h" />
172+
<ClInclude Include="include\Audio\MusicQueue.h" />
173+
<ClInclude Include="include\Audio\MusicStore.h" />
174+
<ClInclude Include="include\Components\Animation.h" />
175+
<ClInclude Include="include\Components\AnimationSet.h" />
166176
<ClInclude Include="include\Components\Components.h" />
167177
<ClInclude Include="include\Components\Position.h" />
168178
<ClInclude Include="include\Components\Size.h" />
169179
<ClInclude Include="include\Components\Sprite.h" />
180+
<ClInclude Include="include\Graphics\AnimationSet.h" />
181+
<ClInclude Include="include\Graphics\Sprite.h" />
170182
<ClInclude Include="include\Exception.h" />
171183
<ClInclude Include="include\Framework.h" />
172184
<ClInclude Include="include\Game.h" />
185+
<ClInclude Include="include\Audio\SoundChunk.h" />
173186
<ClInclude Include="include\GameObject.h" />
187+
<ClInclude Include="include\Graphics\Animation.h" />
188+
<ClInclude Include="include\Systems\AnimationSystem.h" />
174189
<ClInclude Include="include\Input\InputDefinitions.h" />
175190
<ClInclude Include="include\Input\InputManager.h" />
176191
<ClInclude Include="include\Systems\DefaultSystem.h" />
@@ -182,9 +197,18 @@
182197
<ClInclude Include="include\Timer.h" />
183198
</ItemGroup>
184199
<ItemGroup>
200+
<ClCompile Include="src\Audio\SoundChannel.cpp" />
185201
<ClCompile Include="src\Exception.cpp" />
202+
<ClCompile Include="src\Audio\SoundPlayer.cpp" />
203+
<ClCompile Include="src\Audio\SoundStore.cpp" />
204+
<ClCompile Include="src\Audio\MusicTrack.cpp" />
205+
<ClCompile Include="src\Audio\MusicQueue.cpp" />
206+
<ClCompile Include="src\Audio\MusicStore.cpp" />
186207
<ClCompile Include="src\Game.cpp" />
208+
<ClCompile Include="src\Audio\SoundChunk.cpp" />
187209
<ClCompile Include="src\GameObject.cpp" />
210+
<ClCompile Include="src\Graphics\Animation.cpp" />
211+
<ClCompile Include="src\Graphics\AnimationSet.cpp" />
188212
<ClCompile Include="src\Graphics\Texture.cpp" />
189213
<ClCompile Include="src\Graphics\TextureStore.cpp" />
190214
<ClCompile Include="src\Input\InputManager.cpp" />

BloomFramework/BloomFramework.vcxproj.filters

Lines changed: 89 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,46 @@
3131
<Filter Include="Source Files\Input">
3232
<UniqueIdentifier>{1f775a83-4d98-4f93-bf11-b69ad3949381}</UniqueIdentifier>
3333
</Filter>
34+
<Filter Include="Header Files\Audio">
35+
<UniqueIdentifier>{91153568-16e8-4684-82a5-dce4be5c6640}</UniqueIdentifier>
36+
</Filter>
37+
<Filter Include="Source Files\Audio">
38+
<UniqueIdentifier>{61128b5c-6d91-44f6-b147-79f56ad42451}</UniqueIdentifier>
39+
</Filter>
3440
</ItemGroup>
3541
<ItemGroup>
42+
<ClCompile Include="src\Timer.cpp">
43+
<Filter>Source Files</Filter>
44+
</ClCompile>
3645
<ClCompile Include="src\Exception.cpp">
3746
<Filter>Source Files</Filter>
3847
</ClCompile>
48+
<ClCompile Include="src\Audio\MusicQueue.cpp">
49+
<Filter>Source Files\Audio</Filter>
50+
</ClCompile>
51+
<ClCompile Include="src\Audio\MusicStore.cpp">
52+
<Filter>Source Files\Audio</Filter>
53+
</ClCompile>
54+
<ClCompile Include="src\Audio\SoundChunk.cpp">
55+
<Filter>Source Files\Audio</Filter>
56+
</ClCompile>
57+
<ClCompile Include="src\Audio\SoundPlayer.cpp">
58+
<Filter>Source Files\Audio</Filter>
59+
</ClCompile>
60+
<ClCompile Include="src\Audio\SoundStore.cpp">
61+
<Filter>Source Files\Audio</Filter>
62+
</ClCompile>
3963
<ClCompile Include="src\Game.cpp">
4064
<Filter>Source Files</Filter>
4165
</ClCompile>
4266
<ClCompile Include="src\GameObject.cpp">
4367
<Filter>Source Files</Filter>
4468
</ClCompile>
45-
<ClCompile Include="src\Timer.cpp">
46-
<Filter>Source Files</Filter>
69+
<ClCompile Include="src\Audio\MusicTrack.cpp">
70+
<Filter>Source Files\Audio</Filter>
71+
</ClCompile>
72+
<ClCompile Include="src\Audio\SoundChannel.cpp">
73+
<Filter>Source Files\Audio</Filter>
4774
</ClCompile>
4875
<ClCompile Include="src\Graphics\Texture.cpp">
4976
<Filter>Source Files\Graphics</Filter>
@@ -54,14 +81,17 @@
5481
<ClCompile Include="src\Input\InputManager.cpp">
5582
<Filter>Source Files\Input</Filter>
5683
</ClCompile>
84+
<ClCompile Include="src\Graphics\Animation.cpp">
85+
<Filter>Source Files\Graphics</Filter>
86+
</ClCompile>
87+
<ClCompile Include="src\Graphics\AnimationSet.cpp">
88+
<Filter>Source Files\Graphics</Filter>
89+
</ClCompile>
5790
</ItemGroup>
5891
<ItemGroup>
5992
<ClInclude Include="include\Framework.h">
6093
<Filter>Header Files</Filter>
6194
</ClInclude>
62-
<ClInclude Include="include\Game.h">
63-
<Filter>Header Files</Filter>
64-
</ClInclude>
6595
<ClInclude Include="include\stdIncludes.h">
6696
<Filter>Header Files</Filter>
6797
</ClInclude>
@@ -77,9 +107,6 @@
77107
<ClInclude Include="include\Components\Components.h">
78108
<Filter>Header Files\Components</Filter>
79109
</ClInclude>
80-
<ClInclude Include="include\Components\Sprite.h">
81-
<Filter>Header Files\Components</Filter>
82-
</ClInclude>
83110
<ClInclude Include="include\Components\Position.h">
84111
<Filter>Header Files\Components</Filter>
85112
</ClInclude>
@@ -95,6 +122,39 @@
95122
<ClInclude Include="include\Systems\Systems.h">
96123
<Filter>Header Files\Systems</Filter>
97124
</ClInclude>
125+
<ClInclude Include="include\Audio\Audio.h">
126+
<Filter>Header Files\Audio</Filter>
127+
</ClInclude>
128+
<ClInclude Include="include\Audio\AudioDefine.h">
129+
<Filter>Header Files\Audio</Filter>
130+
</ClInclude>
131+
<ClInclude Include="include\Audio\MusicQueue.h">
132+
<Filter>Header Files\Audio</Filter>
133+
</ClInclude>
134+
<ClInclude Include="include\Audio\MusicStore.h">
135+
<Filter>Header Files\Audio</Filter>
136+
</ClInclude>
137+
<ClInclude Include="include\Audio\SoundChunk.h">
138+
<Filter>Header Files\Audio</Filter>
139+
</ClInclude>
140+
<ClInclude Include="include\Audio\SoundPlayer.h">
141+
<Filter>Header Files\Audio</Filter>
142+
</ClInclude>
143+
<ClInclude Include="include\Audio\SoundStore.h">
144+
<Filter>Header Files\Audio</Filter>
145+
</ClInclude>
146+
<ClInclude Include="include\GameObject.h">
147+
<Filter>Header Files</Filter>
148+
</ClInclude>
149+
<ClInclude Include="include\Game.h">
150+
<Filter>Header Files</Filter>
151+
</ClInclude>
152+
<ClInclude Include="include\Audio\MusicTrack.h">
153+
<Filter>Header Files\Audio</Filter>
154+
</ClInclude>
155+
<ClInclude Include="include\Audio\SoundChannel.h">
156+
<Filter>Header Files\Audio</Filter>
157+
</ClInclude>
98158
<ClInclude Include="include\Graphics\Texture.h">
99159
<Filter>Header Files\Graphics</Filter>
100160
</ClInclude>
@@ -107,6 +167,27 @@
107167
<ClInclude Include="include\Input\InputDefinitions.h">
108168
<Filter>Header Files\Input</Filter>
109169
</ClInclude>
170+
<ClInclude Include="include\Components\Animation.h">
171+
<Filter>Header Files\Components</Filter>
172+
</ClInclude>
173+
<ClInclude Include="include\Graphics\Animation.h">
174+
<Filter>Header Files\Graphics</Filter>
175+
</ClInclude>
176+
<ClInclude Include="include\Graphics\AnimationSet.h">
177+
<Filter>Header Files\Graphics</Filter>
178+
</ClInclude>
179+
<ClInclude Include="include\Systems\AnimationSystem.h">
180+
<Filter>Header Files\Systems</Filter>
181+
</ClInclude>
182+
<ClInclude Include="include\Components\AnimationSet.h">
183+
<Filter>Header Files\Components</Filter>
184+
</ClInclude>
185+
<ClInclude Include="include\Graphics\Sprite.h">
186+
<Filter>Header Files\Graphics</Filter>
187+
</ClInclude>
188+
<ClInclude Include="include\Components\Sprite.h">
189+
<Filter>Header Files\Components</Filter>
190+
</ClInclude>
110191
</ItemGroup>
111192
<ItemGroup>
112193
<None Include="packages.config" />
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#pragma once
2+
3+
#include "Exception.h"
4+
#include "MusicStore.h"
5+
#include "MusicQueue.h"
6+
#include "SoundChunk.h"
7+
#include "SoundStore.h"
8+
#include "SoundPlayer.h"
9+
#include "SoundChannel.h"
10+
#include "AudioDefine.h"
11+
12+
namespace bloom::audio {
13+
class Music {
14+
public:
15+
static Music & instance();
16+
17+
void push(const std::filesystem::path & filePath, int plays = 1, bool ignoreInfinitePlayback = false, int fadeInMs = 0) {
18+
queue.add(store.load(filePath), plays, ignoreInfinitePlayback, fadeInMs);
19+
}
20+
21+
void clear() {
22+
queue.clear(true);
23+
store.unloadAll();
24+
}
25+
26+
static bool isPlaying() {
27+
return MusicTrack::isPlaying();
28+
}
29+
30+
static bool isPaused() {
31+
return MusicTrack::isPaused();
32+
}
33+
34+
MusicStore store;
35+
MusicQueue queue;
36+
37+
private:
38+
Music() = default;
39+
~Music() = default;
40+
Music(const Music &) = delete;
41+
Music(Music &&) = delete;
42+
Music& operator=(const Music &) = delete;
43+
};
44+
45+
Music & Music::instance() {
46+
static Music music_instance;
47+
return music_instance;
48+
}
49+
50+
51+
class Sounds {
52+
public:
53+
static Sounds & instance();
54+
55+
int add(const std::filesystem::path & filePath) {
56+
players.emplace_back(std::make_unique<SoundPlayer>(store.load(filePath)));
57+
return (static_cast<int>(players.size()) - 1);
58+
}
59+
60+
void stopAll() {
61+
for (auto & p : players) {
62+
p->stop();
63+
}
64+
}
65+
66+
void pauseAll() {
67+
for (auto & p : players) {
68+
p->pause();
69+
}
70+
}
71+
72+
void resumeAll() {
73+
for (auto & p : players) {
74+
p->resume();
75+
}
76+
}
77+
78+
void clear() {
79+
players.clear();
80+
store.unloadAll();
81+
SoundChannel::optimize();
82+
}
83+
84+
void optimize() {
85+
SoundChannel::optimize();
86+
}
87+
88+
SoundPlayerPtr & operator[](size_t off) {
89+
return players[off];
90+
}
91+
92+
SoundStore store;
93+
std::vector<SoundPlayerPtr> players;
94+
95+
private:
96+
Sounds() = default;
97+
~Sounds() = default;
98+
Sounds(const Sounds &) = delete;
99+
Sounds(Sounds &&) = delete;
100+
Sounds& operator=(const Sounds &) = delete;
101+
};
102+
103+
Sounds & Sounds::instance() {
104+
static Sounds sounds_instance;
105+
return sounds_instance;
106+
}
107+
108+
Music & music = Music::instance();
109+
Sounds & sounds = Sounds::instance();
110+
111+
using MusicFull = Music;
112+
using SoundFull = Sounds;
113+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#pragma once
2+
3+
#define BLOOM_AUDIO_INFINITE_REPEAT -1
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#pragma once
2+
3+
#include <queue>
4+
#include "MusicTrack.h"
5+
6+
namespace bloom::audio {
7+
class BLOOMFRAMEWORK_API MusicQueue {
8+
public:
9+
MusicQueue();
10+
~MusicQueue();
11+
12+
bool tryActivate();
13+
void activate();
14+
void add(TrackPtr track, int plays = 1, bool bypassInfinitePlayback = false, int fadeInMs = 0);
15+
void add(TrackExt track);
16+
void play(bool bypassFade = false);
17+
void pause();
18+
void resume();
19+
void rewind();
20+
void skip(int fadeOutMs = 0);
21+
void eject(int fadeOutMs = 0);
22+
void clear(int fadeOutMs = 0);
23+
void deactivate();
24+
25+
void setVolume(double volumePercent);
26+
double getVolume();
27+
28+
void setRawVolume(int rawVolume);
29+
int getRawVolume();
30+
31+
void setInfinitePlayback(bool value);
32+
bool isInfinitePlayback();
33+
34+
private:
35+
std::queue<TrackExt> m_queue;
36+
bool m_infinitePlayback = true;
37+
38+
static void next_track();
39+
static MusicQueue * s_currentQueuePtr;
40+
};
41+
}

0 commit comments

Comments
 (0)