mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-26 03:52:01 +02:00
Restores attacking and shooting sounds.
This commit is contained in:
parent
c2cb7be227
commit
17a795015a
@ -765,38 +765,12 @@ void CBattleAttack::nextFrame()
|
||||
if(owner->creAnims[stackID]->getType() != group)
|
||||
owner->creAnims[stackID]->setType(group);
|
||||
|
||||
if(owner->creAnims[stackID]->getFrame() == 0)
|
||||
if(owner->creAnims[stackID]->onFirstFrameInGroup())
|
||||
{
|
||||
if(shooting)
|
||||
{
|
||||
// TODO: I see that we enter this function twice with
|
||||
// attackingInfo->frame==0, so all the inits are done
|
||||
// twice. The following is just a workaround until
|
||||
// that is fixed. Once done, we can get rid of
|
||||
// sh
|
||||
if (sh == -1) {
|
||||
sh = CGI->soundh->playSound(battle_sound(attackingStack->creature, shoot));
|
||||
}
|
||||
owner->creAnims[stackID]->setType(group);
|
||||
}
|
||||
CGI->soundh->playSound(battle_sound(attackingStack->creature, shoot));
|
||||
else
|
||||
{
|
||||
// TODO: see comment above
|
||||
if (sh == -1)
|
||||
sh = CGI->soundh->playSound(battle_sound(attackingStack->creature, attack));
|
||||
|
||||
static std::map<int, int> dirToType = boost::assign::map_list_of (0, 11)(1, 11)(2, 12)(3, 13)(4, 13)(5, 12);
|
||||
int type; //dependent on attack direction
|
||||
if(attackingStack->hasFeatureOfType(StackFeature::DOUBLE_WIDE))
|
||||
{
|
||||
type = dirToType[ BattleInfo::mutualPosition(attackingStackPosBeforeReturn + posShiftDueToDist, dest) ]; //attack direction
|
||||
}
|
||||
else //else for if(aStack->hasFeatureOfType(StackFeature::DOUBLE_WIDE))
|
||||
{
|
||||
type = BattleInfo::mutualPosition(attackingStackPosBeforeReturn, dest);
|
||||
}
|
||||
owner->creAnims[stackID]->setType(type);
|
||||
}
|
||||
CGI->soundh->playSound(battle_sound(attackingStack->creature, attack));
|
||||
}
|
||||
else if(owner->creAnims[stackID]->onLastFrameInGroup())
|
||||
{
|
||||
@ -812,7 +786,7 @@ bool CBattleAttack::checkInitialConditions()
|
||||
}
|
||||
|
||||
CBattleAttack::CBattleAttack(CBattleInterface * _owner, int _stackID, int _dest)
|
||||
: CBattleStackAnimation(_owner, _stackID), sh(-1), dest(_dest)
|
||||
: CBattleStackAnimation(_owner, _stackID), dest(_dest)
|
||||
{
|
||||
attackedStack = LOCPLINT->cb->battleGetStackByPos(_dest, false);
|
||||
attackingStack = LOCPLINT->cb->battleGetStackByID(_stackID, false);
|
||||
|
@ -179,7 +179,6 @@ protected:
|
||||
int posShiftDueToDist;
|
||||
bool shooting;
|
||||
int group; //if shooting is true, print this animation group
|
||||
int sh; // temporary sound handler
|
||||
const CStack * attackedStack;
|
||||
const CStack * attackingStack;
|
||||
int attackingStackPosBeforeReturn; //for stacks with return_after_strike feature
|
||||
|
@ -153,6 +153,11 @@ int CCreatureAnimation::getFrame() const
|
||||
return curFrame;
|
||||
}
|
||||
|
||||
bool CCreatureAnimation::onFirstFrameInGroup()
|
||||
{
|
||||
return internalFrame == 0;
|
||||
}
|
||||
|
||||
bool CCreatureAnimation::onLastFrameInGroup()
|
||||
{
|
||||
if(internalFrame == frameGroups[type].size() - 1)
|
||||
|
@ -59,6 +59,7 @@ public:
|
||||
int nextFrameMiddle(SDL_Surface * dest, int x, int y, bool attacker, unsigned char animCount, bool IncrementFrame = true, bool yellowBorder = false, bool blueBorder = false, SDL_Rect * destRect = NULL); //0 - success, any other - error //print next
|
||||
void incrementFrame();
|
||||
int getFrame() const;
|
||||
bool onFirstFrameInGroup();
|
||||
bool onLastFrameInGroup();
|
||||
|
||||
bool once;
|
||||
|
Loading…
x
Reference in New Issue
Block a user