hedgewars/uSound.pas
author nemo
Tue, 08 Sep 2009 19:44:49 +0000
changeset 2357 babe1a55e284
parent 2328 e74f2db28b21
child 2390 57fb33ab04a4
permissions -rw-r--r--
Add an empty weapon to avoid selection of weapons which aren't yet ready. Might all be useful to switch to amNothing in certain situations, like after using up all ropes, instead of bazooka.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 611
diff changeset
     2
 * Hedgewars, a free turn based strategy game
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
     3
 * Copyright (c) 2005, 2007, 2009 Andrey Korotaev <unC0Rr@gmail.com>
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    12
 * GNU General Public License for more details.
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 181
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    17
 *)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    18
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    19
unit uSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    20
interface
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    21
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2194
diff changeset
    22
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    23
{$IFDEF DARWIN}
2200
8192be6e3aef koda/Smaxx changes to openal for crossplatform building
nemo
parents: 2194
diff changeset
    24
	{$linklib openalbridge}
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    25
	{$linkframework OpenAL}
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    26
	{$linkframework Ogg}
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    27
	{$linkframework Vorbis}
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    28
{$ELSE}
2234
17f7a5882aca typo :(
nemo
parents: 2233
diff changeset
    29
{$IFNDEF WIN32}
2233
7bd3c94cc806 don't link for windows, for now
nemo
parents: 2232
diff changeset
    30
    {$linklib openal}
7bd3c94cc806 don't link for windows, for now
nemo
parents: 2232
diff changeset
    31
    {$linklib ogg}
7bd3c94cc806 don't link for windows, for now
nemo
parents: 2232
diff changeset
    32
    {$linklib vorbis}
7bd3c94cc806 don't link for windows, for now
nemo
parents: 2232
diff changeset
    33
    {$linklib vorbisfile}
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    34
{$ENDIF}
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
    35
{$ENDIF}
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    36
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    37
uses uConsts;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    38
{$INCLUDE options.inc}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    39
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    40
type PVoicepack = ^TVoicepack;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    41
	TVoicepack = record
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    42
		name: shortstring;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    43
		chunks: array [TSound] of LongInt;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    44
		end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    45
2230
d6963f72d21a once again, trying to restore windows compatibility from nemo's experiments
koda
parents: 2222
diff changeset
    46
const OpenALBridge = 'libopenalbridge';
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    47
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    48
procedure InitSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    49
procedure ReleaseSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    50
procedure SoundLoad;
1669
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
    51
procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    52
procedure PlayMusic;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    53
procedure PauseMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    54
procedure ResumeMusic;
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 183
diff changeset
    55
procedure StopSound(snd: TSound);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 355
diff changeset
    56
function  ChangeVolume(voldelta: LongInt): LongInt;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    57
function  AskForVoicepack(name: shortstring): Pointer;
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
    58
function  soundFadeOut(snd: TSound; qt: LongInt; voicepack: PVoicepack): LongInt;
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
    59
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    60
2216
82e7da49c26a -Smaxx' patch: checks for initialized openal + disables sound options if openal init fails
koda
parents: 2213
diff changeset
    61
{*remember: LongInt = 32bit; integer = 16bit; byte = 8bit*}
2258
3dd028604cfd corrects a wrong binding
koda
parents: 2257
diff changeset
    62
function openal_init		(memsize: LongInt)                      : boolean; cdecl; external OpenALBridge;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    63
function openal_close							: boolean; cdecl; external OpenALBridge;
2257
7eb31efcfb9b updates licence and fix a memory leak (which was consuming iphone memory)
koda
parents: 2234
diff changeset
    64
function openal_loadfile	(const filename: PChar)			: LongInt; cdecl; external OpenALBridge;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    65
function openal_toggleloop	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
2216
82e7da49c26a -Smaxx' patch: checks for initialized openal + disables sound options if openal init fails
koda
parents: 2213
diff changeset
    66
function openal_setvolume	(index: LongInt; percentage: byte)	: boolean; cdecl; external OpenALBridge;
82e7da49c26a -Smaxx' patch: checks for initialized openal + disables sound options if openal init fails
koda
parents: 2213
diff changeset
    67
function openal_setglobalvolume	(percentage: byte)			: boolean; cdecl; external OpenALBridge;
82e7da49c26a -Smaxx' patch: checks for initialized openal + disables sound options if openal init fails
koda
parents: 2213
diff changeset
    68
function openal_fadeout		(index: LongInt; quantity: integer)	: boolean; cdecl; external OpenALBridge;
82e7da49c26a -Smaxx' patch: checks for initialized openal + disables sound options if openal init fails
koda
parents: 2213
diff changeset
    69
function openal_fadein		(index: LongInt; quantity: integer)	: boolean; cdecl; external OpenALBridge;
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
    70
function openal_fade		(index: LongInt; quantity: integer; direction: boolean)	: boolean; cdecl; external OpenALBridge;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    71
function openal_playsound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    72
function openal_pausesound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    73
function openal_stopsound	(index: LongInt)			: boolean; cdecl; external OpenALBridge;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    74
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
    75
var MusicFN: shortstring = '';
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
    76
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    77
implementation
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    78
2230
d6963f72d21a once again, trying to restore windows compatibility from nemo's experiments
koda
parents: 2222
diff changeset
    79
uses uMisc, uConsole;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
    80
13
7a5db822fd3f - Show no crosshair when using mine
unc0rr
parents: 11
diff changeset
    81
const chanTPU = 12;
2327
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
    82
var	Volume: LongInt;
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
    83
	lastChan: array [TSound] of LongInt;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    84
	voicepacks: array[0..cMaxTeams] of TVoicepack;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    85
	defVoicepack: PVoicepack;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
    86
	Mus: LongInt = 0;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    87
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    88
function  AskForVoicepack(name: shortstring): Pointer;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    89
var i: Longword;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    90
begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    91
i:= 0;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    92
while (voicepacks[i].name <> name) and (voicepacks[i].name <> '') do
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    93
	begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    94
	inc(i);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    95
	TryDo(i <= cMaxTeams, 'Engine bug: AskForVoicepack i > cMaxTeams', true)
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    96
	end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    97
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    98
voicepacks[i].name:= name;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    99
AskForVoicepack:= @voicepacks[i]
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   100
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   101
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   102
procedure InitSound;
2211
288360b78f30 - fade in/out functions merged, but kept binary compatibility
koda
parents: 2210
diff changeset
   103
const numSounds = 80;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   104
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   105
if not isSoundEnabled then exit;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   106
WriteToConsole('Init OpenAL sound...');
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   107
isSoundEnabled:= openal_init(numSounds);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   108
if isSoundEnabled then WriteLnToConsole(msgOK)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   109
                  else WriteLnToConsole(msgFailed);
2327
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   110
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   111
Volume:=0;
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   112
ChangeVolume(cInitVolume);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   113
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   114
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   115
procedure ReleaseSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   116
begin
2210
1cb7118a77dd initial bugfix for volume setup
koda
parents: 2200
diff changeset
   117
if isMusicEnabled then openal_fadeout(Mus, 30);
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   118
openal_close();
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   119
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   120
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   121
procedure SoundLoad;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   122
var i: TSound;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   123
	s: shortstring;
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   124
	t: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   125
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   126
if not isSoundEnabled then exit;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   127
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   128
defVoicepack:= AskForVoicepack('Default');
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   129
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   130
for i:= Low(TSound) to High(TSound) do
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   131
	if Soundz[i].Path <> ptVoices then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   132
		begin
1657
dde8f60d3e07 Fix small bug in voicepacks support in engine. It's complete and tested now.
unc0rr
parents: 1656
diff changeset
   133
		s:= Pathz[Soundz[i].Path] + '/' + Soundz[i].FileName;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   134
		WriteToConsole(msgLoading + s + ' ');
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   135
		defVoicepack^.chunks[i]:= openal_loadfile (Str2PChar(s));
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   136
		TryDo(defVoicepack^.chunks[i] >= 0, msgFailed, true);
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   137
		WriteLnToConsole(msgOK);
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   138
		end;
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   139
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   140
for t:= 0 to cMaxTeams do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   141
	if voicepacks[t].name <> '' then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   142
		for i:= Low(TSound) to High(TSound) do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   143
			if Soundz[i].Path = ptVoices then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   144
				begin
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   145
				s:= Pathz[Soundz[i].Path] + '/' + voicepacks[t].name + '/' + Soundz[i].FileName;
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   146
				WriteToConsole(msgLoading + s + ' ');
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   147
				voicepacks[t].chunks[i]:= openal_loadfile (Str2PChar(s));
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   148
				if voicepacks[t].chunks[i] < 0 then
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   149
					WriteLnToConsole(msgFailed)
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   150
				else
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   151
					WriteLnToConsole(msgOK)
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   152
				end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   153
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   154
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   155
function soundFadeOut(snd: TSound; qt: LongInt; voicepack: PVoicepack): LongInt;
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   156
begin
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   157
if not isSoundEnabled then exit(0);
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   158
if (voicepack <> nil) and (voicepack^.chunks[snd] >= 0) then openal_fadeout(defVoicepack^.chunks[snd], qt)
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   159
else if (defVoicepack^.chunks[snd] >= 0) then openal_fadeout(defVoicepack^.chunks[snd], qt);
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   160
end;
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   161
1669
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
   162
procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   163
begin
1562
c0eea030347b Don't play sounds when quick replaying in spectate mode
unc0rr
parents: 1225
diff changeset
   164
if (not isSoundEnabled) or fastUntilLag then exit;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   165
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   166
if (voicepack <> nil) then
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   167
begin
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   168
if voicepack^.chunks[snd] >= 0 then
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   169
	begin
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   170
	if infinite then openal_toggleloop(voicepack^.chunks[snd]);
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   171
	openal_playsound(voicepack^.chunks[snd]);
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   172
	lastChan[snd]:=voicepack^.chunks[snd];
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   173
	end
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   174
end
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   175
else
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   176
begin
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   177
if (defVoicepack^.chunks[snd] >= 0) then
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   178
	begin
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   179
	if infinite then openal_toggleloop(defVoicepack^.chunks[snd]);
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   180
	openal_playsound(defVoicepack^.chunks[snd]);
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   181
	lastChan[snd]:=defVoicepack^.chunks[snd];
2262
0dc94341bf42 sound for mortar
koda
parents: 2258
diff changeset
   182
	end
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   183
end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   184
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   185
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 183
diff changeset
   186
procedure StopSound(snd: TSound);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   187
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   188
if not isSoundEnabled then exit;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   189
	openal_stopsound(lastChan[snd])
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   190
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   191
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   192
procedure PlayMusic;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   193
var s: string;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   194
begin
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
   195
if (not isSoundEnabled)
1128
9b3f42bf4eef Add an option to engine for turning music off
unc0rr
parents: 1127
diff changeset
   196
	or (MusicFN = '')
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   197
	or (not isMusicEnabled) then exit;
565
092cb8deffc5 Fix some bug, finish playlist implementation
unc0rr
parents: 564
diff changeset
   198
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
   199
s:= PathPrefix + '/Music/' + MusicFN;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   200
WriteToConsole(msgLoading + s + ' ');
565
092cb8deffc5 Fix some bug, finish playlist implementation
unc0rr
parents: 564
diff changeset
   201
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   202
Mus:= openal_loadfile(Str2PChar(s));
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   203
TryDo(Mus >= 0, msgFailed, false);
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   204
WriteLnToConsole(msgOK);
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   205
2213
bd51bbf06033 -Smaxx's porting of the library to MSVC compilers
koda
parents: 2212
diff changeset
   206
openal_fadein(Mus, 20);
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   207
openal_toggleloop(Mus);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   208
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   209
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 355
diff changeset
   210
function ChangeVolume(voldelta: LongInt): LongInt;
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   211
begin
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   212
if not isSoundEnabled then exit(0);
2327
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   213
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   214
inc(Volume, voldelta);
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   215
if Volume < 0 then Volume:= 0;
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   216
if Volume > 100 then Volume:= 100;
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   217
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   218
openal_setglobalvolume(Volume);
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   219
if isMusicEnabled then openal_setvolume(Mus, Volume shr 1);
4832b77ec958 restored volumen control (hoorray)
koda
parents: 2303
diff changeset
   220
ChangeVolume:= Volume;
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   221
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   222
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   223
procedure PauseMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   224
begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   225
if (MusicFN = '') or (not isMusicEnabled) then exit;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   226
openal_pausesound(Mus);
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   227
end;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   228
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   229
procedure ResumeMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   230
begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   231
if (MusicFN = '') or (not isMusicEnabled) then exit;
2191
20c62f787a4d koda's OpenAL conversion:
unc0rr
parents: 2171
diff changeset
   232
openal_playsound(Mus);
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   233
end;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   234
2192
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   235
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   236
var i: LongInt;
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   237
	c: TSound;
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   238
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   239
initialization
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   240
for i:= 0 to cMaxTeams do
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   241
	for c:= Low(TSound) to High(TSound) do
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   242
		voicepacks[i].chunks[c]:= -1
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   243
4763a778c033 - Fix quickplay sound bug triggered by two faults: ttsmj's (passing voicepack with empty name in team config) and koda's (he changed fallback to default scheme condition)
unc0rr
parents: 2191
diff changeset
   244
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   245
end.