hedgewars/uSound.pas
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 1777 88674c291331
child 2171 8208946331ba
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
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
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    21
uses SDLh, uConsts;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    22
{$INCLUDE options.inc}
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    23
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    24
type PVoicepack = ^TVoicepack;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    25
	TVoicepack = record
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    26
		name: shortstring;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    27
		chunks: array [TSound] of PMixChunk;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    28
		end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    29
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    30
procedure InitSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    31
procedure ReleaseSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    32
procedure SoundLoad;
1669
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
    33
procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    34
procedure PlayMusic;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    35
procedure PauseMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    36
procedure ResumeMusic;
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 183
diff changeset
    37
procedure StopSound(snd: TSound);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 355
diff changeset
    38
function  ChangeVolume(voldelta: LongInt): LongInt;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    39
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    40
function  AskForVoicepack(name: shortstring): Pointer;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    41
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
    42
var MusicFN: shortstring = '';
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
    43
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    44
implementation
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    45
uses uMisc, uConsole;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
    46
13
7a5db822fd3f - Show no crosshair when using mine
unc0rr
parents: 11
diff changeset
    47
const chanTPU = 12;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    48
var Volume: LongInt;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    49
	lastChan: array [TSound] of LongInt;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    50
	voicepacks: array[0..cMaxTeams] of TVoicepack;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    51
	defVoicepack: PVoicepack;
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
    52
	Mus: PMixMusic = nil;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    53
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    54
function  AskForVoicepack(name: shortstring): Pointer;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    55
var i: Longword;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    56
begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    57
i:= 0;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    58
while (voicepacks[i].name <> name) and (voicepacks[i].name <> '') do
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    59
	begin
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    60
	inc(i);
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    61
	TryDo(i <= cMaxTeams, 'Engine bug: AskForVoicepack i > cMaxTeams', true)
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    62
	end;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    63
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    64
voicepacks[i].name:= name;
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    65
AskForVoicepack:= @voicepacks[i]
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
    66
end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    67
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    68
procedure InitSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    69
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    70
if not isSoundEnabled then exit;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    71
WriteToConsole('Init sound...');
11
b64d67d222b9 Fix some issues with sound
unc0rr
parents: 4
diff changeset
    72
isSoundEnabled:= SDL_Init(SDL_INIT_AUDIO) >= 0;
b64d67d222b9 Fix some issues with sound
unc0rr
parents: 4
diff changeset
    73
if isSoundEnabled then
b64d67d222b9 Fix some issues with sound
unc0rr
parents: 4
diff changeset
    74
   isSoundEnabled:= Mix_OpenAudio(22050, $8010, 2, 512) = 0;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    75
if isSoundEnabled then WriteLnToConsole(msgOK)
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    76
                  else WriteLnToConsole(msgFailed);
13
7a5db822fd3f - Show no crosshair when using mine
unc0rr
parents: 11
diff changeset
    77
Mix_AllocateChannels(Succ(chanTPU));
1137
58cd4277382e Fix previous commit
unc0rr
parents: 1128
diff changeset
    78
if isMusicEnabled then Mix_VolumeMusic(50);
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
    79
1777
88674c291331 Implement initial sound volume option
unc0rr
parents: 1712
diff changeset
    80
Volume:= 0;
88674c291331 Implement initial sound volume option
unc0rr
parents: 1712
diff changeset
    81
ChangeVolume(cInitVolume)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    82
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    83
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    84
procedure ReleaseSound;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    85
var i: TSound;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    86
	t: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    87
begin
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    88
for t:= 0 to cMaxTeams do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    89
	if voicepacks[t].name <> '' then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    90
		for i:= Low(TSound) to High(TSound) do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    91
			if voicepacks[t].chunks[i] <> nil then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
    92
				Mix_FreeChunk(voicepacks[t].chunks[i]);
1098
5b599137aaa1 Remove deprecated function
unc0rr
parents: 1097
diff changeset
    93
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    94
Mix_FreeMusic(Mus);
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    95
Mix_CloseAudio
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    96
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    97
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    98
procedure SoundLoad;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    99
var i: TSound;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   100
	s: shortstring;
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   101
	t: Longword;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   102
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   103
if not isSoundEnabled then exit;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   104
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   105
defVoicepack:= AskForVoicepack('Default');
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   106
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   107
for i:= Low(TSound) to High(TSound) do
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   108
	if Soundz[i].Path <> ptVoices then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   109
		begin
1657
dde8f60d3e07 Fix small bug in voicepacks support in engine. It's complete and tested now.
unc0rr
parents: 1656
diff changeset
   110
		s:= Pathz[Soundz[i].Path] + '/' + Soundz[i].FileName;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   111
		WriteToConsole(msgLoading + s + ' ');
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   112
		defVoicepack^.chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   113
		TryDo(defVoicepack^.chunks[i] <> nil, msgFailed, true);
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   114
		WriteLnToConsole(msgOK);
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   115
		end;
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   116
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   117
for t:= 0 to cMaxTeams do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   118
	if voicepacks[t].name <> '' then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   119
		for i:= Low(TSound) to High(TSound) do
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   120
			if Soundz[i].Path = ptVoices then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   121
				begin
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   122
				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
   123
				WriteToConsole(msgLoading + s + ' ');
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   124
				voicepacks[t].chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   125
				if voicepacks[t].chunks[i] = nil then
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   126
					WriteLnToConsole(msgFailed)
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   127
				else
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   128
					WriteLnToConsole(msgOK)
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   129
				end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   130
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   131
1669
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
   132
procedure PlaySound(snd: TSound; infinite: boolean; voicepack: PVoicepack);
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 355
diff changeset
   133
var loops: LongInt;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   134
begin
1562
c0eea030347b Don't play sounds when quick replaying in spectate mode
unc0rr
parents: 1225
diff changeset
   135
if (not isSoundEnabled) or fastUntilLag then exit;
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 183
diff changeset
   136
if infinite then loops:= -1 else loops:= 0;
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   137
1669
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
   138
if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then
b709e061577e Mostly fix voicepack usage
unc0rr
parents: 1657
diff changeset
   139
	lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], loops, -1)
1656
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   140
else
209cf0e2fc36 Finish voicepacks support in engine (not tested though)
unc0rr
parents: 1654
diff changeset
   141
	lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], loops, -1)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   142
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   143
282
b1e3387389b6 - Pickhammer sound
unc0rr
parents: 183
diff changeset
   144
procedure StopSound(snd: TSound);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   145
begin
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   146
if not isSoundEnabled then exit;
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   147
if Mix_Playing(lastChan[snd]) <> 0 then
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   148
	Mix_HaltChannel(lastChan[snd])
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   149
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   150
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   151
procedure PlayMusic;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   152
var s: string;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   153
begin
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
   154
if (not isSoundEnabled)
1128
9b3f42bf4eef Add an option to engine for turning music off
unc0rr
parents: 1127
diff changeset
   155
	or (MusicFN = '')
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   156
	or (not isMusicEnabled) then exit;
565
092cb8deffc5 Fix some bug, finish playlist implementation
unc0rr
parents: 564
diff changeset
   157
1097
06b15817b8a0 Enable music dependance on current land theme
unc0rr
parents: 1066
diff changeset
   158
s:= PathPrefix + '/Music/' + MusicFN;
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   159
WriteToConsole(msgLoading + s + ' ');
565
092cb8deffc5 Fix some bug, finish playlist implementation
unc0rr
parents: 564
diff changeset
   160
564
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   161
Mus:= Mix_LoadMUS(Str2PChar(s));
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   162
TryDo(Mus <> nil, msgFailed, false);
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   163
WriteLnToConsole(msgOK);
17fb45c670c1 Finalize basic playlists implementation
unc0rr
parents: 449
diff changeset
   164
1225
f882a92ef872 Play music in menu also, with fading effects when run game
unc0rr
parents: 1137
diff changeset
   165
SDLTry(Mix_FadeInMusic(Mus, -1, 3000) <> -1, false)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   166
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   167
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 355
diff changeset
   168
function ChangeVolume(voldelta: LongInt): LongInt;
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   169
begin
181
7dfffbf0c7f6 - Fixed crash with sound turned off
unc0rr
parents: 175
diff changeset
   170
if not isSoundEnabled then
1654
9cfa6f23e767 Start voicepacks implementation
unc0rr
parents: 1562
diff changeset
   171
	exit(0);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 287
diff changeset
   172
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   173
inc(Volume, voldelta);
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   174
if Volume < 0 then Volume:= 0;
175
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   175
Mix_Volume(-1, Volume);
d226d976d836 - Some improvements to volume control
unc0rr
parents: 174
diff changeset
   176
Volume:= Mix_Volume(-1, -1);
1137
58cd4277382e Fix previous commit
unc0rr
parents: 1128
diff changeset
   177
if isMusicEnabled then Mix_VolumeMusic(Volume * 4 div 8);
351
29bc9c36ad5f Fixed-point arithmetics in engine.
unc0rr
parents: 287
diff changeset
   178
ChangeVolume:= Volume * 100 div MIX_MAX_VOLUME
174
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   179
end;
0b2c5b22f644 Changeable volume
unc0rr
parents: 97
diff changeset
   180
1712
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   181
procedure PauseMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   182
begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   183
if (MusicFN = '') or (not isMusicEnabled) then exit;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   184
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   185
Mix_PauseMusic(Mus);
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   186
end;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   187
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   188
procedure ResumeMusic;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   189
begin
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   190
if (MusicFN = '') or (not isMusicEnabled) then exit;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   191
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   192
Mix_ResumeMusic(Mus);
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   193
end;
f5b916de40f0 Patch by nemo (polished by me)
unc0rr
parents: 1669
diff changeset
   194
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   195
end.