Skyscraper 2.0
soundmanager.cpp
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 Alpha - Sound Manager Dialog
3 Copyright (C)2003-2024 Ryan Thoryk
4 https://www.skyscrapersim.net
5 https://sourceforge.net/projects/skyscraper/
6 Contact - ryan@skyscrapersim.net
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*/
22
23//(*InternalHeaders(SoundManager)
24#include <wx/intl.h>
25#include <wx/string.h>
26//*)
27
28#include "globals.h"
29#include "sbs.h"
30#include "debugpanel.h"
31#include "enginecontext.h"
32#include "vm.h"
33#include "soundsystem.h"
34#include "sound.h"
35#include "moveobject.h"
36#include "soundmanager.h"
37
38namespace Skyscraper {
39
40//(*IdInit(SoundManager)
41const wxWindowID SoundManager::ID_STATICTEXT1 = wxNewId();
42const wxWindowID SoundManager::ID_SoundList = wxNewId();
43const wxWindowID SoundManager::ID_STATICTEXT2 = wxNewId();
44const wxWindowID SoundManager::ID_HandleList = wxNewId();
45const wxWindowID SoundManager::ID_lblStats = wxNewId();
46const wxWindowID SoundManager::ID_STATICTEXT4 = wxNewId();
47const wxWindowID SoundManager::ID_tName = wxNewId();
48const wxWindowID SoundManager::ID_STATICTEXT3 = wxNewId();
49const wxWindowID SoundManager::ID_tParent = wxNewId();
50const wxWindowID SoundManager::ID_STATICTEXT5 = wxNewId();
51const wxWindowID SoundManager::ID_tLength = wxNewId();
52const wxWindowID SoundManager::ID_STATICTEXT6 = wxNewId();
53const wxWindowID SoundManager::ID_tPlaying = wxNewId();
54const wxWindowID SoundManager::ID_STATICTEXT7 = wxNewId();
55const wxWindowID SoundManager::ID_tPosition = wxNewId();
56const wxWindowID SoundManager::ID_bMove = wxNewId();
57const wxWindowID SoundManager::ID_STATICTEXT8 = wxNewId();
58const wxWindowID SoundManager::ID_tVolume = wxNewId();
59const wxWindowID SoundManager::ID_bSetVolume = wxNewId();
60const wxWindowID SoundManager::ID_STATICTEXT9 = wxNewId();
61const wxWindowID SoundManager::ID_tLoop = wxNewId();
62const wxWindowID SoundManager::ID_bSetLoop = wxNewId();
63const wxWindowID SoundManager::ID_STATICTEXT10 = wxNewId();
64const wxWindowID SoundManager::ID_tPaused = wxNewId();
65const wxWindowID SoundManager::ID_bSetPause = wxNewId();
66const wxWindowID SoundManager::ID_STATICTEXT13 = wxNewId();
67const wxWindowID SoundManager::ID_tEnabled = wxNewId();
68const wxWindowID SoundManager::ID_bEnabled = wxNewId();
69const wxWindowID SoundManager::ID_STATICTEXT11 = wxNewId();
70const wxWindowID SoundManager::ID_tSpeed = wxNewId();
71const wxWindowID SoundManager::ID_bSetSpeed = wxNewId();
72const wxWindowID SoundManager::ID_STATICTEXT12 = wxNewId();
73const wxWindowID SoundManager::ID_tPlayPosition = wxNewId();
74const wxWindowID SoundManager::ID_bPlay = wxNewId();
75const wxWindowID SoundManager::ID_bStop = wxNewId();
76const wxWindowID SoundManager::ID_bReset = wxNewId();
77const wxWindowID SoundManager::ID_bUnload = wxNewId();
78const wxWindowID SoundManager::ID_bCleanup = wxNewId();
79const wxWindowID SoundManager::ID_bOK = wxNewId();
80const wxWindowID SoundManager::ID_bListPlaying = wxNewId();
81const wxWindowID SoundManager::ID_bListPlayingAll = wxNewId();
82//*)
83
84BEGIN_EVENT_TABLE(SoundManager,wxDialog)
85 //(*EventTable(SoundManager)
86 //*)
87END_EVENT_TABLE()
88
89SoundManager::SoundManager(DebugPanel* parent,wxWindowID id,const wxPoint& pos,const wxSize& size)
90{
91 //(*Initialize(SoundManager)
92 wxBoxSizer* BoxSizer1;
93 wxBoxSizer* BoxSizer2;
94 wxBoxSizer* BoxSizer3;
95 wxBoxSizer* BoxSizer4;
96 wxFlexGridSizer* FlexGridSizer1;
97 wxFlexGridSizer* FlexGridSizer2;
98 wxFlexGridSizer* FlexGridSizer3;
99 wxFlexGridSizer* FlexGridSizer4;
100 wxFlexGridSizer* FlexGridSizer5;
101 wxFlexGridSizer* FlexGridSizer6;
102 wxFlexGridSizer* FlexGridSizer7;
103
104 Create(parent, wxID_ANY, _("Sound Manager"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("wxID_ANY"));
105 FlexGridSizer1 = new wxFlexGridSizer(0, 1, 0, 0);
106 FlexGridSizer2 = new wxFlexGridSizer(0, 3, 0, 0);
107 FlexGridSizer7 = new wxFlexGridSizer(0, 2, 0, 0);
108 FlexGridSizer5 = new wxFlexGridSizer(0, 1, 0, 0);
109 StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("Filename"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
110 FlexGridSizer5->Add(StaticText1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
111 SoundList = new wxListBox(this, ID_SoundList, wxDefaultPosition, wxSize(200,300), 0, 0, 0, wxDefaultValidator, _T("ID_SoundList"));
112 FlexGridSizer5->Add(SoundList, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
113 FlexGridSizer7->Add(FlexGridSizer5, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
114 FlexGridSizer6 = new wxFlexGridSizer(0, 1, 0, 0);
115 StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("Sound Objects (handles)"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
116 FlexGridSizer6->Add(StaticText2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
117 HandleList = new wxListBox(this, ID_HandleList, wxDefaultPosition, wxSize(250,300), 0, 0, 0, wxDefaultValidator, _T("ID_HandleList"));
118 FlexGridSizer6->Add(HandleList, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
119 FlexGridSizer7->Add(FlexGridSizer6, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
120 FlexGridSizer7->Add(-1,-1,1, wxALL|wxEXPAND, 5);
121 lblStats = new wxStaticText(this, ID_lblStats, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_lblStats"));
122 FlexGridSizer7->Add(lblStats, 1, wxALL|wxEXPAND, 5);
123 FlexGridSizer2->Add(FlexGridSizer7, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
124 FlexGridSizer3 = new wxFlexGridSizer(0, 1, 0, 0);
125 FlexGridSizer4 = new wxFlexGridSizer(0, 3, 0, 0);
126 StaticText4 = new wxStaticText(this, ID_STATICTEXT4, _("Name:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
127 FlexGridSizer4->Add(StaticText4, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
128 tName = new wxTextCtrl(this, ID_tName, wxEmptyString, wxDefaultPosition, wxSize(200,-1), wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tName"));
129 FlexGridSizer4->Add(tName, 1, wxEXPAND, 5);
130 FlexGridSizer4->Add(-1,-1,1, wxALL|wxEXPAND, 5);
131 StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("Parent:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
132 FlexGridSizer4->Add(StaticText3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
133 tParent = new wxTextCtrl(this, ID_tParent, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tParent"));
134 FlexGridSizer4->Add(tParent, 1, wxEXPAND, 5);
135 FlexGridSizer4->Add(-1,-1,1, wxALL|wxEXPAND, 5);
136 StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("Length:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
137 FlexGridSizer4->Add(StaticText5, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
138 tLength = new wxTextCtrl(this, ID_tLength, wxEmptyString, wxDefaultPosition, wxSize(100,-1), wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tLength"));
139 FlexGridSizer4->Add(tLength, 1, wxEXPAND, 5);
140 FlexGridSizer4->Add(-1,-1,1, wxALL|wxEXPAND, 5);
141 StaticText6 = new wxStaticText(this, ID_STATICTEXT6, _("Is Playing:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
142 FlexGridSizer4->Add(StaticText6, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
143 tPlaying = new wxTextCtrl(this, ID_tPlaying, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tPlaying"));
144 FlexGridSizer4->Add(tPlaying, 1, wxEXPAND, 5);
145 FlexGridSizer4->Add(-1,-1,1, wxALL|wxEXPAND, 5);
146 StaticText7 = new wxStaticText(this, ID_STATICTEXT7, _("Position:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
147 FlexGridSizer4->Add(StaticText7, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
148 tPosition = new wxTextCtrl(this, ID_tPosition, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tPosition"));
149 FlexGridSizer4->Add(tPosition, 1, wxEXPAND, 5);
150 bMove = new wxButton(this, ID_bMove, _("Move"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bMove"));
151 FlexGridSizer4->Add(bMove, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
152 StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("Volume:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
153 FlexGridSizer4->Add(StaticText8, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
154 tVolume = new wxTextCtrl(this, ID_tVolume, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE, wxDefaultValidator, _T("ID_tVolume"));
155 FlexGridSizer4->Add(tVolume, 1, wxEXPAND, 5);
156 bSetVolume = new wxButton(this, ID_bSetVolume, _("Set"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bSetVolume"));
157 FlexGridSizer4->Add(bSetVolume, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
158 StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("Loop:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
159 FlexGridSizer4->Add(StaticText9, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
160 tLoop = new wxTextCtrl(this, ID_tLoop, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE, wxDefaultValidator, _T("ID_tLoop"));
161 FlexGridSizer4->Add(tLoop, 1, wxEXPAND, 5);
162 bSetLoop = new wxButton(this, ID_bSetLoop, _("Set"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bSetLoop"));
163 FlexGridSizer4->Add(bSetLoop, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
164 StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("Paused:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
165 FlexGridSizer4->Add(StaticText10, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
166 tPaused = new wxTextCtrl(this, ID_tPaused, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE, wxDefaultValidator, _T("ID_tPaused"));
167 FlexGridSizer4->Add(tPaused, 1, wxEXPAND, 5);
168 bSetPause = new wxButton(this, ID_bSetPause, _("Set"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bSetPause"));
169 FlexGridSizer4->Add(bSetPause, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
170 StaticText13 = new wxStaticText(this, ID_STATICTEXT13, _("Enabled:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT13"));
171 FlexGridSizer4->Add(StaticText13, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
172 tEnabled = new wxTextCtrl(this, ID_tEnabled, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE, wxDefaultValidator, _T("ID_tEnabled"));
173 FlexGridSizer4->Add(tEnabled, 1, wxEXPAND, 5);
174 bEnabled = new wxButton(this, ID_bEnabled, _("Set"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bEnabled"));
175 FlexGridSizer4->Add(bEnabled, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
176 StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("Speed:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
177 FlexGridSizer4->Add(StaticText11, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
178 tSpeed = new wxTextCtrl(this, ID_tSpeed, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CENTRE, wxDefaultValidator, _T("ID_tSpeed"));
179 FlexGridSizer4->Add(tSpeed, 1, wxEXPAND, 5);
180 bSetSpeed = new wxButton(this, ID_bSetSpeed, _("Set"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_bSetSpeed"));
181 FlexGridSizer4->Add(bSetSpeed, 1, wxLEFT, 5);
182 StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("Play Position:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12"));
183 FlexGridSizer4->Add(StaticText12, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
184 tPlayPosition = new wxTextCtrl(this, ID_tPlayPosition, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tPlayPosition"));
185 FlexGridSizer4->Add(tPlayPosition, 1, wxEXPAND, 5);
186 FlexGridSizer4->Add(-1,-1,1, wxALL|wxEXPAND, 5);
187 FlexGridSizer3->Add(FlexGridSizer4, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
188 BoxSizer3 = new wxBoxSizer(wxVERTICAL);
189 BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
190 bPlay = new wxButton(this, ID_bPlay, _("Play"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bPlay"));
191 BoxSizer2->Add(bPlay, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
192 bStop = new wxButton(this, ID_bStop, _("Stop"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStop"));
193 BoxSizer2->Add(bStop, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
194 bReset = new wxButton(this, ID_bReset, _("Reset"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bReset"));
195 BoxSizer2->Add(bReset, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
196 BoxSizer3->Add(BoxSizer2, 1, wxTOP|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
197 BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
198 bUnload = new wxButton(this, ID_bUnload, _("Unload"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bUnload"));
199 BoxSizer4->Add(bUnload, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
200 bCleanup = new wxButton(this, ID_bCleanup, _("Cleanup"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bCleanup"));
201 BoxSizer4->Add(bCleanup, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
202 BoxSizer3->Add(BoxSizer4, 1, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
203 FlexGridSizer3->Add(BoxSizer3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
204 FlexGridSizer2->Add(FlexGridSizer3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
205 FlexGridSizer1->Add(FlexGridSizer2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
206 BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
207 bOK = new wxButton(this, ID_bOK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOK"));
208 BoxSizer1->Add(bOK, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
209 bListPlaying = new wxButton(this, ID_bListPlaying, _("List Playing Sounds"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bListPlaying"));
210 BoxSizer1->Add(bListPlaying, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
211 bListPlayingAll = new wxButton(this, ID_bListPlayingAll, _("List Playing (All Engines)"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bListPlayingAll"));
212 BoxSizer1->Add(bListPlayingAll, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
213 FlexGridSizer1->Add(BoxSizer1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
214 SetSizer(FlexGridSizer1);
215 FlexGridSizer1->SetSizeHints(this);
216
217 Connect(ID_bMove, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bMove_Click);
218 Connect(ID_bSetVolume, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bSetVolume_Click);
219 Connect(ID_bSetLoop, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bSetLoop_Click);
220 Connect(ID_bSetPause, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bSetPause_Click);
221 Connect(ID_bEnabled, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bEnabled_Click);
222 Connect(ID_bSetSpeed, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bSetSpeed_Click);
223 Connect(ID_bPlay, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bPlay_Click);
224 Connect(ID_bStop, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bStop_Click);
225 Connect(ID_bReset, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bReset_Click);
226 Connect(ID_bUnload, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bUnload_Click);
227 Connect(ID_bCleanup, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bCleanup_Click);
228 Connect(ID_bOK, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bOK_Click);
229 Connect(ID_bListPlaying, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bListPlaying_Click);
230 Connect(ID_bListPlayingAll, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&SoundManager::On_bListPlayingAll_Click);
231 //*)
232 panel = parent;
233 Simcore = 0;
234 sound = 0;
235 handle = 0;
236 lastcount = 0;
237 lasthandlecount = 0;
238 volume = 0;
239 speed = 0;
240 moveobject = 0;
241}
242
244{
245 //(*Destroy(SoundManager)
246 //*)
247
248 if (moveobject)
249 moveobject->Destroy();
250 moveobject = 0;
251}
252
254{
255 if (Simcore != panel->GetSystem())
256 {
257 //if active engine has changed, refresh values
259 }
260
261 if (!Simcore)
262 return;
263
266
267 int selection = SoundList->GetSelection();
268
269 if (selection >= 0)
270 {
271 SBS::SoundData *newsound = Simcore->GetSoundSystem()->GetSoundData(selection);
272
273 //if a new sound has been selected, update values
274 if (newsound && sound != newsound)
275 {
276 sound = newsound;
277 handle = 0;
278 HandleList->Clear();
279 }
280 }
281 else
282 {
283 sound = 0;
284 handle = 0;
285 }
286
287 if (!sound)
288 return;
289
290 int handleselect = HandleList->GetSelection();
291
292 if (handleselect >= 0)
293 {
294 SBS::Sound *newhandle = sound->handles[handleselect];
295
296 //if a new handle has been selected, update values
297 if (newhandle && handle != newhandle)
298 {
299 handle = sound->handles[handleselect];
300
301 tName->SetValue(handle->GetName());
302 tParent->SetValue(handle->GetParent()->GetName());
303 tVolume->SetValue(TruncateNumber(handle->GetVolume(), 2));
304 tSpeed->SetValue(SBS::ToString(handle->GetSpeed()));
306 tLength->SetValue(TruncateNumber(length / 1000, 2));
307 }
308 }
309 else
310 handle = 0;
311
312 //set dynamic values
313
314 if (!handle)
315 return;
316
317 if (handle->IsPlaying() == true)
318 tPlaying->SetValue("True");
319 else
320 tPlaying->SetValue("False");
321
322 tPosition->SetValue(TruncateNumber(handle->GetPosition().x, 2) + wxT(", ") + TruncateNumber(handle->GetPosition().y, 2) + wxT(", ") + TruncateNumber(handle->GetPosition().z, 2));
323
324 if (handle->GetLoopState() == true)
325 tLoop->SetValue("True");
326 else
327 tLoop->SetValue("False");
328
329 if (handle->IsPaused() == true)
330 tPaused->SetValue("True");
331 else
332 tPaused->SetValue("False");
333
334 if (handle->IsEnabled() == true)
335 tEnabled->SetValue("True");
336 else
337 tEnabled->SetValue("False");
338
340
341 lblStats->SetLabelText("Channels: " + SBS::ToString(sound->GetChannelCount()) + " - Playing Sounds: " + SBS::ToString(Simcore->GetSoundSystem()->GetPlayingCount()));
342
343 if (moveobject)
344 moveobject->Loop();
345}
346
347void SoundManager::On_bOK_Click(wxCommandEvent& event)
348{
349 this->Close();
350}
351
353{
354 int count = Simcore->GetSoundSystem()->GetSoundCount();
355
356 if (count != lastcount)
357 {
358 lastcount = count;
359 int old_selection = SoundList->GetSelection();
360 SoundList->Clear();
361
362 for (int i = 0; i < count; i++)
363 SoundList->Append(SBS::ToString(i + 1) + wxT(": ") + Simcore->GetSoundSystem()->GetSoundData(i)->filename);
364
365 if (count > 0)
366 {
367 if (old_selection < SoundList->GetCount())
368 SoundList->SetSelection(old_selection);
369 else
370 SoundList->SetSelection(0);
371 }
372 else
373 {
374 //clear values
375 tLength->Clear();
376 tName->Clear();
377 tParent->Clear();
378 tPlaying->Clear();
379 tPosition->Clear();
380 tVolume->Clear();
381 tLoop->Clear();
382 tPaused->Clear();
383 tEnabled->Clear();
384 tSpeed->Clear();
385 tPlayPosition->Clear();
386 }
387 }
388}
389
391{
392 if (!sound)
393 return;
394
395 int count = sound->GetHandleCount();
396
397 if (count != lasthandlecount || handle == 0)
398 {
399 lasthandlecount = count;
400 int old_selection = HandleList->GetSelection();
401 HandleList->Clear();
402
403 for (int i = 0; i < count; i++)
404 HandleList->Append(SBS::ToString(i + 1) + wxT(": ") + sound->handles[i]->GetName());
405
406 if (count > 0)
407 {
408 if (old_selection < HandleList->GetCount())
409 HandleList->SetSelection(old_selection);
410 else
411 HandleList->SetSelection(0);
412 }
413 else
414 {
415 //clear values
416 tName->Clear();
417 tParent->Clear();
418 tPlaying->Clear();
419 tPosition->Clear();
420 tVolume->Clear();
421 tLoop->Clear();
422 tPaused->Clear();
423 tEnabled->Clear();
424 tSpeed->Clear();
425 tPlayPosition->Clear();
426 tLength->Clear();
427 }
428 }
429}
430
431void SoundManager::On_bListPlaying_Click(wxCommandEvent& event)
432{
433 if (Simcore)
435}
436
437void SoundManager::On_bSetVolume_Click(wxCommandEvent& event)
438{
439 if (handle)
440 handle->SetVolume(atof(tVolume->GetValue()));
441}
442
443void SoundManager::On_bSetLoop_Click(wxCommandEvent& event)
444{
445 if (!handle)
446 return;
447
448 bool loop = handle->GetLoopState();
449 handle->SetLoopState(!loop);
450}
451
452void SoundManager::On_bSetPause_Click(wxCommandEvent& event)
453{
454 if (!handle)
455 return;
456
457 bool pause = handle->IsPaused();
458 handle->Pause(!pause);
459}
460
461void SoundManager::On_bSetSpeed_Click(wxCommandEvent& event)
462{
463 if (handle)
464 handle->SetSpeed(atoi(tSpeed->GetValue()));
465}
466
467void SoundManager::On_bPlay_Click(wxCommandEvent& event)
468{
469 if (handle)
470 handle->Play();
471}
472
473void SoundManager::On_bStop_Click(wxCommandEvent& event)
474{
475 if (handle)
476 handle->Stop();
477}
478
479void SoundManager::On_bReset_Click(wxCommandEvent& event)
480{
481 if (handle)
482 handle->Reset();
483}
484
485void SoundManager::On_bUnload_Click(wxCommandEvent& event)
486{
487 if (handle)
488 {
489 handle->Unload();
490 return;
491 }
492
493 if (sound && Simcore)
494 Simcore->GetSoundSystem()->Cleanup(SoundList->GetSelection());
495}
496
497void SoundManager::On_bCleanup_Click(wxCommandEvent& event)
498{
499 if (Simcore)
501}
502
503void SoundManager::On_bMove_Click(wxCommandEvent& event)
504{
505 if (handle)
506 {
507 if (moveobject)
508 delete moveobject;
509 moveobject = 0;
510
512 moveobject->Show();
513 }
514}
515
516void SoundManager::On_bEnabled_Click(wxCommandEvent& event)
517{
518 if (!handle)
519 return;
520
521 bool enabled = handle->IsEnabled();
522 handle->Enabled(!enabled);
523}
524
525void SoundManager::On_bListPlayingAll_Click(wxCommandEvent& event)
526{
528}
529
530}
const std::string & GetName()
Definition object.cpp:53
Object * GetParent()
Definition object.cpp:42
virtual Vector3 GetPosition(bool relative=false)
Definition object.cpp:321
int GetNumber()
Definition object.cpp:183
SoundSystem * GetSoundSystem()
Definition sbs.cpp:4518
void Cleanup(int index=-1)
void ShowPlayingSounds(bool verbose=true)
SoundData * GetSoundData(std::string filename)
unsigned int GetLength(SoundData *data)
void Pause(bool value=true)
Definition sound.cpp:223
void Reset()
Definition sound.cpp:378
void Unload()
Definition sound.cpp:540
void Stop()
Definition sound.cpp:292
bool Play(bool reset=true)
Definition sound.cpp:321
void SetSpeed(int percent)
Definition sound.cpp:273
void SetLoopState(bool value)
Definition sound.cpp:204
int GetSpeed()
Definition sound.cpp:287
bool IsPaused()
Definition sound.cpp:242
void Enabled(bool value)
Definition sound.cpp:620
void SetVolume(Real value)
Definition sound.cpp:138
bool GetLoopState()
Definition sound.cpp:218
bool IsEnabled()
Definition sound.cpp:630
Real GetPlayPosition()
Definition sound.cpp:414
bool IsPlaying()
Definition sound.cpp:254
Real GetVolume()
Definition sound.cpp:152
SBS::SBS * GetSystem()
Definition debugpanel.h:131
static const wxWindowID ID_STATICTEXT2
static const wxWindowID ID_bEnabled
void On_bSetSpeed_Click(wxCommandEvent &event)
static const wxWindowID ID_bSetPause
static const wxWindowID ID_tPlayPosition
static const wxWindowID ID_STATICTEXT6
static const wxWindowID ID_tPosition
static const wxWindowID ID_tName
void On_bSetLoop_Click(wxCommandEvent &event)
static const wxWindowID ID_STATICTEXT10
static const wxWindowID ID_bSetLoop
static const wxWindowID ID_bListPlayingAll
static const wxWindowID ID_SoundList
static const wxWindowID ID_lblStats
static const wxWindowID ID_bMove
static const wxWindowID ID_STATICTEXT13
static const wxWindowID ID_tPaused
static const wxWindowID ID_HandleList
static const wxWindowID ID_bPlay
static const wxWindowID ID_STATICTEXT1
static const wxWindowID ID_bListPlaying
void On_bStop_Click(wxCommandEvent &event)
void On_bOK_Click(wxCommandEvent &event)
static const wxWindowID ID_bReset
static const wxWindowID ID_tPlaying
static const wxWindowID ID_bCleanup
void On_bListPlayingAll_Click(wxCommandEvent &event)
wxStaticText * lblStats
void On_bSetPause_Click(wxCommandEvent &event)
static const wxWindowID ID_bSetVolume
static const wxWindowID ID_STATICTEXT9
void On_bPlay_Click(wxCommandEvent &event)
void On_bUnload_Click(wxCommandEvent &event)
SBS::SoundData * sound
void On_bMove_Click(wxCommandEvent &event)
void On_bCleanup_Click(wxCommandEvent &event)
static const wxWindowID ID_tLoop
static const wxWindowID ID_STATICTEXT3
void On_bReset_Click(wxCommandEvent &event)
static const wxWindowID ID_STATICTEXT8
static const wxWindowID ID_STATICTEXT4
static const wxWindowID ID_STATICTEXT11
void On_bListPlaying_Click(wxCommandEvent &event)
static const wxWindowID ID_tEnabled
static const wxWindowID ID_bStop
static const wxWindowID ID_STATICTEXT5
static const wxWindowID ID_STATICTEXT7
static const wxWindowID ID_bUnload
static const wxWindowID ID_bSetSpeed
static const wxWindowID ID_bOK
void On_bSetVolume_Click(wxCommandEvent &event)
static const wxWindowID ID_STATICTEXT12
static const wxWindowID ID_tVolume
void On_bEnabled_Click(wxCommandEvent &event)
static const wxWindowID ID_tParent
static const wxWindowID ID_tSpeed
static const wxWindowID ID_tLength
void ListPlayingSounds()
Definition vm.cpp:993
EngineContext * GetActiveEngine()
Definition vm.h:81
Ogre::Real Real
Definition globals.h:57
std::string ToString(int number)
Definition globals.cpp:279
wxString TruncateNumber(float value, int decimals)
std::string filename
int GetChannelCount()
std::vector< Sound * > handles