1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-29 21:56:54 +02:00

Sound patch from Ubuntux #4 - sounds for hero movement

(vcmi_sound_hero_moving.diff)
This commit is contained in:
Michał W. Urbańczyk 2009-04-23 19:50:27 +00:00
parent a81378617f
commit 992ce92ae5
4 changed files with 50 additions and 14 deletions

View File

@ -2593,8 +2593,32 @@ bool CPlayerInterface::moveHero( const CGHeroInstance *h, CPath path )
boost::unique_lock<boost::mutex> un(stillMoveHero.mx);
stillMoveHero.data = CONTINUE_MOVE;
enum EterrainType currentTerrain = border; // not init yet
enum EterrainType newTerrain;
int sh = -1;
for(int i=path.nodes.size()-1; i>0 && stillMoveHero.data == CONTINUE_MOVE; i--)
{
// Start a new sound for the hero movement or let the existing one carry on.
#if 0
// TODO
if (hero is flying && sh == -1)
sh = CGI->mush->playSound(soundBase::horseFlying, -1);
}
else if (hero is in a boat && sh = -1) {
sh = CGI->mush->playSound(soundBase::sound_todo, -1);
} else
#endif
{
newTerrain = CGI->mh->map->terrain[path.nodes[i].coord.x][path.nodes[i].coord.y][path.nodes[i].coord.z].tertype;
if (newTerrain != currentTerrain) {
CGI->mush->stopSound(sh);
sh = CGI->mush->playSound(CGI->mush->horseSounds[newTerrain], -1);
currentTerrain = newTerrain;
}
}
stillMoveHero.data = WAITING_MOVE;
int3 endpos(path.nodes[i-1].coord.x, path.nodes[i-1].coord.y, h->pos.z);
@ -2602,6 +2626,9 @@ bool CPlayerInterface::moveHero( const CGHeroInstance *h, CPath path )
while(stillMoveHero.data != STOP_MOVE && stillMoveHero.data != CONTINUE_MOVE)
stillMoveHero.cond.wait(un);
}
CGI->mush->stopSound(sh);
//stillMoveHero = false;
return result;
}

View File

@ -40,6 +40,11 @@ void CMusicHandler::initMusics()
// Vectors for helper(s)
pickup_sounds += soundBase::pickup01, soundBase::pickup02, soundBase::pickup03,
soundBase::pickup04, soundBase::pickup05, soundBase::pickup06, soundBase::pickup07;
horseSounds += // must be the same order as terrains (see EtrrainType);
soundBase::horseDirt, soundBase::horseSand, soundBase::horseGrass,
soundBase::horseSnow, soundBase::horseSwamp, soundBase::horseRough,
soundBase::horseSubterranean, soundBase::horseLava,
soundBase::horseWater, soundBase::horseRock;
//AITheme0 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITheme0.mp3");
//AITheme1 = Mix_LoadMUS(DATA_DIR "MP3" PATHSEPARATOR "AITHEME1.mp3");
@ -110,7 +115,7 @@ Mix_Chunk *CMusicHandler::GetSoundChunk(std::string srcName)
}
// Plays a sound, and return its channel so we can fade it out later
int CMusicHandler::playSound(soundBase::soundNames soundID)
int CMusicHandler::playSound(soundBase::soundNames soundID, int repeats)
{
int channel;
@ -131,7 +136,7 @@ int CMusicHandler::playSound(soundBase::soundNames soundID)
if (sound.chunk)
{
channel = Mix_PlayChannel(-1, sound.chunk, 0);
channel = Mix_PlayChannel(-1, sound.chunk, repeats);
if(channel == -1)
{
fprintf(stderr, "Unable to play WAV file("DATA_DIR "Data" PATHSEPARATOR "Heroes3.wav::%s): %s\n",

View File

@ -1,6 +1,8 @@
#ifndef __CMUSICHANDLER_H__
#define __CMUSICHANDLER_H__
#include <SDL_mixer.h>
#include "CSoundBase.h"
/*
@ -41,11 +43,13 @@ public:
void initMusics();
// Sounds
int playSound(soundBase::soundNames soundID); // plays sound wavs from Heroes3.snd
int playSound(soundBase::soundNames soundID, int repeats=0);
int playSoundFromSet(std::vector<soundBase::soundNames> &sound_vec);
void stopSound(int handler) { Mix_HaltChannel(handler); };
// Sets
std::vector<soundBase::soundNames> pickup_sounds;
std::vector<soundBase::soundNames> horseSounds;
};
#endif // __CMUSICHANDLER_H__

View File

@ -466,17 +466,17 @@ VCMI_SOUND_NAME(HHNDDefend) VCMI_SOUND_FILE(HHNDDFND.wav) \
VCMI_SOUND_NAME(HHNDKill) VCMI_SOUND_FILE(HHNDKILL.wav) \
VCMI_SOUND_NAME(HHNDMove) VCMI_SOUND_FILE(HHNDMOVE.wav) \
VCMI_SOUND_NAME(HHNDWNCE) VCMI_SOUND_FILE(HHNDWNCE.wav) \
VCMI_SOUND_NAME(horse00) VCMI_SOUND_FILE(HORSE00.wav) \
VCMI_SOUND_NAME(horse01) VCMI_SOUND_FILE(HORSE01.wav) \
VCMI_SOUND_NAME(horse02) VCMI_SOUND_FILE(HORSE02.wav) \
VCMI_SOUND_NAME(horse03) VCMI_SOUND_FILE(HORSE03.wav) \
VCMI_SOUND_NAME(horse04) VCMI_SOUND_FILE(HORSE04.wav) \
VCMI_SOUND_NAME(horse05) VCMI_SOUND_FILE(HORSE05.wav) \
VCMI_SOUND_NAME(horse06) VCMI_SOUND_FILE(HORSE06.wav) \
VCMI_SOUND_NAME(horse07) VCMI_SOUND_FILE(HORSE07.wav) \
VCMI_SOUND_NAME(horse08) VCMI_SOUND_FILE(HORSE08.wav) \
VCMI_SOUND_NAME(horse09) VCMI_SOUND_FILE(HORSE09.wav) \
VCMI_SOUND_NAME(horse10) VCMI_SOUND_FILE(HORSE10.wav) \
VCMI_SOUND_NAME(horseDirt) VCMI_SOUND_FILE(HORSE00.wav) \
VCMI_SOUND_NAME(horseSand) VCMI_SOUND_FILE(HORSE01.wav) \
VCMI_SOUND_NAME(horseGrass) VCMI_SOUND_FILE(HORSE02.wav) \
VCMI_SOUND_NAME(horseSnow) VCMI_SOUND_FILE(HORSE03.wav) \
VCMI_SOUND_NAME(horseSwamp) VCMI_SOUND_FILE(HORSE04.wav) \
VCMI_SOUND_NAME(horseRough) VCMI_SOUND_FILE(HORSE05.wav) \
VCMI_SOUND_NAME(horseSubterranean) VCMI_SOUND_FILE(HORSE06.wav) \
VCMI_SOUND_NAME(horseLava) VCMI_SOUND_FILE(HORSE07.wav) \
VCMI_SOUND_NAME(horseWater) VCMI_SOUND_FILE(HORSE08.wav) \
VCMI_SOUND_NAME(horseRock) VCMI_SOUND_FILE(HORSE09.wav) \
VCMI_SOUND_NAME(horseFly) VCMI_SOUND_FILE(HORSE10.wav) \
VCMI_SOUND_NAME(horse20) VCMI_SOUND_FILE(HORSE20.wav) \
VCMI_SOUND_NAME(horse21) VCMI_SOUND_FILE(HORSE21.wav) \
VCMI_SOUND_NAME(horse22) VCMI_SOUND_FILE(HORSE22.wav) \