Disambiguate cry functions

This commit is contained in:
GriffinR
2021-11-07 13:54:44 -05:00
parent 54b254a829
commit c4169cfd29
31 changed files with 125 additions and 102 deletions
+29 -18
View File
@@ -168,7 +168,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
}
if (species != SPECIES_NONE)
PlayCry3(species, pan, CRY_MODE_HIGH_PITCH);
PlayCry_ByMode(species, pan, CRY_MODE_HIGH_PITCH);
DestroyAnimVisualTask(taskId);
}
@@ -220,9 +220,9 @@ void SoundTask_PlayDoubleCry(u8 taskId)
if (species != SPECIES_NONE)
{
if (gBattleAnimArgs[1] == DOUBLE_CRY_GROWL)
PlayCry3(species, pan, CRY_MODE_GROWL_1);
PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1);
else // DOUBLE_CRY_ROAR
PlayCry3(species, pan, CRY_MODE_ROAR_1);
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1);
gTasks[taskId].func = SoundTask_PlayDoubleCry_Step;
}
@@ -247,7 +247,7 @@ static void SoundTask_PlayDoubleCry_Step(u8 taskId)
{
if (!IsCryPlaying())
{
PlayCry3(species, pan, CRY_MODE_GROWL_2);
PlayCry_ByMode(species, pan, CRY_MODE_GROWL_2);
DestroyAnimVisualTask(taskId);
}
}
@@ -255,7 +255,7 @@ static void SoundTask_PlayDoubleCry_Step(u8 taskId)
{
if (!IsCryPlaying())
{
PlayCry3(species, pan, CRY_MODE_ROAR_2);
PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2);
DestroyAnimVisualTask(taskId);
}
}
@@ -275,12 +275,18 @@ void SoundTask_WaitForCry(u8 taskId)
}
}
#define tSpecies data[1]
#define tPan data[2]
#define tState data[9]
#define tLastCry data[10] // If it's not the last cry, don't try to restore the BGM, because another is coming
void SoundTask_PlayCryWithEcho(u8 taskId)
{
u16 species;
s8 pan;
gTasks[taskId].data[10] = gBattleAnimArgs[0];
gTasks[taskId].tLastCry = gBattleAnimArgs[0];
pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
if (IsContest())
@@ -288,8 +294,8 @@ void SoundTask_PlayCryWithEcho(u8 taskId)
else
species = gAnimBattlerSpecies[gBattleAnimAttacker];
gTasks[taskId].data[1] = species;
gTasks[taskId].data[2] = pan;
gTasks[taskId].tSpecies = species;
gTasks[taskId].tPan = pan;
if (species != SPECIES_NONE)
gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step;
@@ -299,39 +305,44 @@ void SoundTask_PlayCryWithEcho(u8 taskId)
static void SoundTask_PlayCryWithEcho_Step(u8 taskId)
{
u16 species = gTasks[taskId].data[1];
s8 pan = gTasks[taskId].data[2];
u16 species = gTasks[taskId].tSpecies;
s8 pan = gTasks[taskId].tPan;
// Note the cases are not in order of execution
switch (gTasks[taskId].data[9])
switch (gTasks[taskId].tState)
{
case 2:
PlayCry6(species, pan, CRY_MODE_ECHO_END);
gTasks[taskId].data[9]++;
PlayCry_DuckNoRestore(species, pan, CRY_MODE_ECHO_END);
gTasks[taskId].tState++;
break;
case 1:
case 3:
case 4:
gTasks[taskId].data[9]++;
gTasks[taskId].tState++;
break;
case 5:
if (IsCryPlaying())
break;
case 0:
StopCryAndClearCrySongs();
gTasks[taskId].data[9]++;
gTasks[taskId].tState++;
break;
default:
if (gTasks[taskId].data[10] == 0)
PlayCry6(species, pan, CRY_MODE_ECHO_START);
if (!gTasks[taskId].tLastCry)
PlayCry_DuckNoRestore(species, pan, CRY_MODE_ECHO_START);
else
PlayCry3(species, pan, CRY_MODE_ECHO_START);
PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START);
DestroyAnimVisualTask(taskId);
break;
}
}
#undef tSpecies
#undef tPan
#undef tState
#undef tLastCry
void SoundTask_PlaySE1WithPanning(u8 taskId)
{
u16 songId = gBattleAnimArgs[0];