author  unc0rr 
Sat, 06 Mar 2010 10:59:20 +0000  
changeset 2948  3f21a9dc93d0 
parent 2531  c7f841eb91fb 
child 3236  4ab3917d7d44 
permissions  rwrr 
555  1 
/* 
1066  2 
* Hedgewars, a free turn based strategy game 
555  3 
* Copyright (c) 2007 Andrey Korotaev <unC0Rr@gmail.com> 
4 
* 

5 
* This program is free software; you can redistribute it and/or modify 

6 
* it under the terms of the GNU General Public License as published by 

7 
* the Free Software Foundation; version 2 of the License 

8 
* 

9 
* This program is distributed in the hope that it will be useful, 

10 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 

11 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

12 
* GNU General Public License for more details. 

13 
* 

14 
* You should have received a copy of the GNU General Public License 

15 
* along with this program; if not, write to the Free Software 

16 
* Foundation, Inc., 59 Temple Place  Suite 330, Boston, MA 021111307, USA 

17 
*/ 

18 

19 
#include "SDLs.h" 

20 

21 
#include "SDL.h" 

2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

22 
#include "SDL_mixer.h" 
1223
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

23 
#include "hwconsts.h" 
555  24 

2428  25 
#include <QApplication> 
26 

2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

27 

2428  28 
extern char sdlkeys[1024][2][128]; 
29 
extern char xb360buttons[][128]; 

30 
extern char xb360dpad[128]; 

31 
extern char xbox360axes[][128]; 

32 

2402
edd12b259e7c
revert to manual startup of frontend's OpenAL session (keeping voices' bug fixed)
koda
parents:
2399
diff
changeset

33 

2428  34 
SDLInteraction::SDLInteraction() 
555  35 
{ 
2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

36 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

37 
SDL_Init(SDL_INIT_VIDEO  SDL_INIT_JOYSTICK); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

38 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

39 
musicInitialized = 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

40 
music = NULL; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

41 
if(SDL_NumJoysticks()) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

42 
addGameControllerKeys(); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

43 
SDL_QuitSubSystem(SDL_INIT_JOYSTICK); 
555  44 
} 
45 

46 
SDLInteraction::~SDLInteraction() 

47 
{ 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

48 
if (musicInitialized == 1) { 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

49 
if (music != NULL) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

50 
Mix_FreeMusic(music); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

51 
Mix_CloseAudio(); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

52 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

53 
SDL_Quit(); 
555  54 
} 
55 

56 
QStringList SDLInteraction::getResolutions() const 

57 
{ 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

58 
QStringList result; 
555  59 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

60 
SDL_Rect **modes; 
555  61 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

62 
modes = SDL_ListModes(NULL, SDL_FULLSCREEN); 
555  63 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

64 
if((modes == (SDL_Rect **)0)  (modes == (SDL_Rect **)1)) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

65 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

66 
result << "640x480"; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

67 
} else 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

68 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

69 
for(int i = 0; modes[i]; ++i) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

70 
if ((modes[i]>w >= 640) && (modes[i]>h >= 480)) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

71 
result << QString("%1x%2").arg(modes[i]>w).arg(modes[i]>h); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

72 
} 
555  73 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

74 
return result; 
555  75 
} 
2191  76 

2428  77 
void SDLInteraction::addGameControllerKeys() const 
78 
{ 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

79 
QStringList result; 
2428  80 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

81 
int i = 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

82 
while(i < 1024 && sdlkeys[i][1][0] != '\0') 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

83 
i++; 
2428  84 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

85 
// Iterate through all game controllers 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

86 
for(int jid = 0; jid < SDL_NumJoysticks(); jid++) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

87 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

88 
SDL_Joystick* joy = SDL_JoystickOpen(jid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

89 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

90 
// Retrieve the game controller's name and strip "Controller (...)" that's added by some drivers (English only) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

91 
QString joyname = QString(SDL_JoystickName(jid)).replace(QRegExp("^Controller \\((.*)\\)$"), "\\1"); 
2428  92 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

93 
// Connected Xbox 360 controller? Use specific button names then 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

94 
// Might be interesting to add 'named' buttons for the most often used gamepads 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

95 
bool isxb = joyname.contains("Xbox 360"); 
2428  96 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

97 
// This part of the string won't change for multiple keys/hats, so keep it 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

98 
QString prefix = QString("%1 (%2): ").arg(joyname).arg(jid + 1); 
2428  99 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

100 
// Register entries for missing axes not assigned to sticks of this joystick/gamepad 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

101 
for(int aid = 0; aid < SDL_JoystickNumAxes(joy) && i < 1021; aid++) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

102 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

103 
// Again store the part of the string not changing for multiple uses 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

104 
QString axis = prefix + QApplication::translate("binds (keys)", "Axis") + QString(" %1 ").arg(aid + 1); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

105 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

106 
// Entry for "Axis Up" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

107 
sprintf(sdlkeys[i][0], "j%da%du", jid, aid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

108 
sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2])) : axis + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str()); 
2428  109 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

110 
// Entry for "Axis Down" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

111 
sprintf(sdlkeys[i][0], "j%da%dd", jid, aid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

112 
sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2 + 1])) : axis + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str()); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

113 
} 
2428  114 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

115 
// Register entries for all coolie hats of this joystick/gamepad 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

116 
for(int hid = 0; hid < SDL_JoystickNumHats(joy) && i < 1019; hid++) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

117 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

118 
// Again store the part of the string not changing for multiple uses 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

119 
QString hat = prefix + (isxb ? (QApplication::translate("binds (keys)", xb360dpad) + QString(" ")) : QApplication::translate("binds (keys)", "Hat") + QString(" %1 ").arg(hid + 1)); 
2428  120 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

121 
// Entry for "Hat Up" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

122 
sprintf(sdlkeys[i][0], "j%dh%du", jid, hid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

123 
sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str()); 
2428  124 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

125 
// Entry for "Hat Down" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

126 
sprintf(sdlkeys[i][0], "j%dh%dd", jid, hid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

127 
sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str()); 
2428  128 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

129 
// Entry for "Hat Left" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

130 
sprintf(sdlkeys[i][0], "j%dh%dl", jid, hid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

131 
sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Left)")).toStdString().c_str()); 
2428  132 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

133 
// Entry for "Hat Right" 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

134 
sprintf(sdlkeys[i][0], "j%dh%dr", jid, hid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

135 
sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Right)")).toStdString().c_str()); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

136 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

137 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

138 
// Register entries for all buttons of this joystick/gamepad 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

139 
for(int bid = 0; bid < SDL_JoystickNumButtons(joy) && i < 1022; bid++) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

140 
{ 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

141 
// Buttons 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

142 
sprintf(sdlkeys[i][0], "j%db%d", jid, bid); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

143 
sprintf(sdlkeys[i++][1], "%s", (prefix + ((isxb && bid < 10) ? (QApplication::translate("binds (keys)", xb360buttons[bid]) + QString(" ")) : QApplication::translate("binds (keys)", "Button") + QString(" %1").arg(bid + 1))).toStdString().c_str()); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

144 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

145 
// Close the game controller as we no longer need it 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

146 
SDL_JoystickClose(joy); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

147 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

148 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

149 
// Terminate the list 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

150 
sdlkeys[i][0][0] = '\0'; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

151 
sdlkeys[i][1][0] = '\0'; 
2428  152 
} 
153 

2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

154 
void SDLInteraction::SDLMusicInit() 
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

155 
{ 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

156 
if (musicInitialized == 0) { 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

157 
SDL_Init(SDL_INIT_AUDIO); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

158 
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

159 
musicInitialized = 1; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

160 
} 
2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

161 
} 
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

162 

51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

163 

2399
ddde0ac1472b
fix a bug that prevented from hearing team voicepacks if frontend started with music disabled
koda
parents:
2392
diff
changeset

164 
void SDLInteraction::StartMusic() 
1223
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

165 
{ 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

166 
SDLMusicInit(); 
2515
51d3f4b6293a
revert audio to use SDL_mixer  also frontend uses it, so it needs sdlmixer sources
koda
parents:
2494
diff
changeset

167 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

168 
if (music == NULL) { 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

169 
music = Mix_LoadMUS((datadir>absolutePath() + "/Music/main theme.ogg").toLocal8Bit().constData()); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

170 

3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

171 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

172 
Mix_VolumeMusic(MIX_MAX_VOLUME  28); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

173 
Mix_FadeInMusic(music, 1, 1750); 
1223
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

174 
} 
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

175 

41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

176 
void SDLInteraction::StopMusic() 
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

177 
{ 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

178 
if (music != NULL) { 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

179 
// fade out music to finish 0,5 seconds from now 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

180 
while(!Mix_FadeOutMusic(1000) && Mix_PlayingMusic()) { 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

181 
SDL_Delay(100); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

182 
} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2531
diff
changeset

183 
} 
1223
41d7283934c1
Hackish way to play music in frontend... to be fixed
unc0rr
parents:
1191
diff
changeset

184 
} 
2402
edd12b259e7c
revert to manual startup of frontend's OpenAL session (keeping voices' bug fixed)
koda
parents:
2399
diff
changeset

185 