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:
parent
a81378617f
commit
992ce92ae5
@ -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;
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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__
|
||||
|
@ -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) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user