diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-09-30 05:46:00 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-10-08 02:38:44 +0800 |
commit | cb078ec3a2ac7f8292c3b9c80b492ee54aa0a9a3 (patch) | |
tree | 26e378ff4d1d6e72394c0e8c6fd1b731ec83831d /src | |
parent | 2a7205dec677c98d087cb8ba191370de464c8bf0 (diff) |
battle_anim_sound_tasks
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_anim_sound_tasks.c | 313 |
1 files changed, 313 insertions, 0 deletions
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c new file mode 100644 index 000000000..e67c91bfa --- /dev/null +++ b/src/battle_anim_sound_tasks.c @@ -0,0 +1,313 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "sound.h" +#include "task.h" +#include "constants/battle_anim.h" +#include "constants/species.h" + +static void sub_80DCE78(u8 taskId); +static void sub_80DCEE4(u8 taskId); +static void sub_80DCFE8(u8 taskId); +static void sub_80DD270(u8 taskId); +static void sub_80DD390(u8 taskId); +static void sub_80DD4D4(u8 taskId); + +void sub_80DCE10(u8 taskId) +{ + s8 pan1, pan2, panIncrement; + + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + panIncrement = CalculatePanIncrement(pan1, pan2, 2); + gTasks[taskId].data[2] = pan1; + gTasks[taskId].data[3] = pan2; + gTasks[taskId].data[4] = panIncrement; + gTasks[taskId].data[10] = 10; + gTasks[taskId].func = sub_80DCE78; +} + +static void sub_80DCE78(u8 taskId) +{ + s16 pan = gTasks[taskId].data[2]; + s8 panIncrement = gTasks[taskId].data[4]; + + if (++gTasks[taskId].data[11] == 111) + { + gTasks[taskId].data[10] = 5; + gTasks[taskId].data[11] = 0; + gTasks[taskId].func = sub_80DCEE4; + } + else + { + if (++gTasks[taskId].data[10] == 11) + { + gTasks[taskId].data[10] = 0; + PlaySE12WithPanning(gTasks[taskId].data[0], pan); + } + pan += panIncrement; + gTasks[taskId].data[2] = KeepPanInRange(pan, panIncrement); + } +} + +static void sub_80DCEE4(u8 taskId) +{ + if (++gTasks[taskId].data[10] == 6) + { + s8 pan; + + gTasks[taskId].data[10] = 0; + pan = BattleAnimAdjustPanning(SOUND_PAN_TARGET); + PlaySE12WithPanning(gTasks[taskId].data[1], pan); + if (++gTasks[taskId].data[11] == 2) + DestroyAnimSoundTask(taskId); + } +} + +void mas_80DCF38(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 targetPan = gBattleAnimArgs[2]; + s8 panIncrement = gBattleAnimArgs[3]; + u8 r10 = gBattleAnimArgs[4]; + u8 r7 = gBattleAnimArgs[5]; + u8 r9 = gBattleAnimArgs[6]; + s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + targetPan = BattleAnimAdjustPanning(targetPan); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + gTasks[taskId].data[0] = songId; + gTasks[taskId].data[1] = sourcePan; + gTasks[taskId].data[2] = targetPan; + gTasks[taskId].data[3] = panIncrement; + gTasks[taskId].data[4] = r10; + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r9; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = sourcePan; + gTasks[taskId].data[12] = r9; + gTasks[taskId].func = sub_80DCFE8; + sub_80DCFE8(taskId); +} + +static void sub_80DCFE8(u8 taskId) +{ + if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6]) + { + gTasks[taskId].data[12] = 0; + PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[11]); + if (--gTasks[taskId].data[4] == 0) + { + DestroyAnimSoundTask(taskId); + return; + } + } + if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5]) + { + u16 dPan, oldPan; + + gTasks[taskId].data[10] = 0; + dPan = gTasks[taskId].data[3]; + oldPan = gTasks[taskId].data[11] ; + gTasks[taskId].data[11] = dPan + oldPan; + gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); + } +} + +void sub_80DD06C(u8 taskId) +{ + u16 species = SPECIES_NONE; + u8 battlerId; + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + + // Get wanted battler. + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battlerId = gBattleAnimAttacker; + else if (gBattleAnimArgs[0] == ANIM_TARGET) + battlerId = gBattleAnimTarget; + else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER) + battlerId = BATTLE_PARTNER(gBattleAnimAttacker); + else + battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. + if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) + && !IsBattlerSpriteVisible(battlerId)) + { + DestroyAnimVisualTask(taskId); + return; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + if (species != SPECIES_NONE) + PlayCry3(species, pan, 3); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD148(u8 taskId) +{ + u16 species = SPECIES_NONE; + u8 battlerId; + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + + // Get wanted battler. + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + battlerId = gBattleAnimAttacker; + else if (gBattleAnimArgs[0] == ANIM_TARGET) + battlerId = gBattleAnimTarget; + else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER) + battlerId = BATTLE_PARTNER(gBattleAnimAttacker); + else + battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. + if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) + && !IsBattlerSpriteVisible(battlerId)) + { + DestroyAnimVisualTask(taskId); + return; + } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[1] = species; + gTasks[taskId].data[2] = pan; + if (species != SPECIES_NONE) + { + if (gBattleAnimArgs[1] == TASK_NONE) + PlayCry3(species, pan, 9); + else + PlayCry3(species, pan, 7); + gTasks[taskId].func = sub_80DD270; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80DD270(u8 taskId) +{ + u16 species = gTasks[taskId].data[1]; + s8 pan = gTasks[taskId].data[2]; + + if (gTasks[taskId].data[9] < 2) + { + ++gTasks[taskId].data[9]; + } + else if (gTasks[taskId].data[0] == TASK_NONE) + { + if (!IsCryPlaying()) + { + PlayCry3(species, pan, 10); + DestroyAnimVisualTask(taskId); + } + } + else if (!IsCryPlaying()) + { + PlayCry3(species, pan, 8); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DD2F4(u8 taskId) +{ + if (gTasks[taskId].data[9] < 2) + ++gTasks[taskId].data[9]; + else if (!IsCryPlaying()) + DestroyAnimVisualTask(taskId); +} + +void sub_80DD334(u8 taskId) +{ + u16 species; + s8 pan; + + pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + species = gAnimBattlerSpecies[gBattleAnimAttacker]; + gTasks[taskId].data[1] = species; + gTasks[taskId].data[2] = pan; + if (species != SPECIES_NONE) + { + PlayCry3(species, pan, 4); + gTasks[taskId].func = sub_80DD390; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_80DD390(u8 taskId) +{ + + if (gTasks[taskId].data[9] < 2) + { + ++gTasks[taskId].data[9]; + } + else if (!IsCryPlaying()) + { + u16 species = gTasks[taskId].data[1]; + s8 pan = gTasks[taskId].data[2]; + + PlayCry3(species, pan, 6); + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DD3DC(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + PlaySE1WithPanning(songId, pan); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD410(u8 taskId) +{ + u16 songId = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + + PlaySE2WithPanning(songId, pan); + DestroyAnimVisualTask(taskId); +} + +void sub_80DD444(u8 taskId) +{ + s8 targetPan = gBattleAnimArgs[1]; + s8 panIncrement = gBattleAnimArgs[2]; + u16 r9 = gBattleAnimArgs[3]; + s8 sourcePan = BattleAnimAdjustPanning(gBattleAnimArgs[0]); + + targetPan = BattleAnimAdjustPanning(targetPan); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + gTasks[taskId].data[1] = sourcePan; + gTasks[taskId].data[2] = targetPan; + gTasks[taskId].data[3] = panIncrement; + gTasks[taskId].data[5] = r9; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11] = sourcePan; + gTasks[taskId].func = sub_80DD4D4; + sub_80DD4D4(taskId); +} + +static void sub_80DD4D4(u8 taskId) +{ + u16 oldPan, panIncrement = gTasks[taskId].data[3]; + + if (gTasks[taskId].data[10]++ == gTasks[taskId].data[5]) + { + gTasks[taskId].data[10] = 0; + oldPan = gTasks[taskId].data[11]; + gTasks[taskId].data[11] = panIncrement + oldPan; + gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); + } + gUnknown_2037F24 = gTasks[taskId].data[11]; + if (gTasks[taskId].data[11] == gTasks[taskId].data[2]) + DestroyAnimVisualTask(taskId); +} |