mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-06 19:01:06 +03:00
Massive sound cleanup, fixing a lot of vehicle sounds
This commit is contained in:
parent
39a3e1f8c1
commit
3990bc51e8
45 changed files with 673 additions and 526 deletions
|
@ -577,7 +577,7 @@ void LaraControl(ItemInfo* item, CollisionInfo* coll)
|
|||
lara->Control.WaterStatus = WaterStatus::TreadWater;
|
||||
|
||||
UpdateItemRoom(item, -(STEPUP_HEIGHT - 3));
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -591,7 +591,7 @@ void LaraControl(ItemInfo* item, CollisionInfo* coll)
|
|||
lara->Control.WaterStatus = WaterStatus::TreadWater;
|
||||
|
||||
UpdateItemRoom(item, 0);
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -244,7 +244,7 @@ void DrawFlare(ItemInfo* laraItem)
|
|||
{
|
||||
if (armFrame == 72)
|
||||
{
|
||||
SoundEffect(SFX_TR4_OBJ_GEM_SMASH, &laraItem->Pose, TestEnvironment(ENV_FLAG_WATER, laraItem));
|
||||
SoundEffect(SFX_TR4_OBJ_GEM_SMASH, &laraItem->Pose, (SoundEnvironment)TestEnvironment(ENV_FLAG_WATER, laraItem));
|
||||
lara->Flare.Life = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -457,7 +457,12 @@ void UpdateLaraSubsuitAngles(ItemInfo* item)
|
|||
lara->Control.Subsuit.Velocity[1] = SECTOR(1.5f);
|
||||
|
||||
if (lara->Control.Subsuit.Velocity[0] != 0 || lara->Control.Subsuit.Velocity[1] != 0)
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_ENGINE, &item->Pose, (((lara->Control.Subsuit.Velocity[0] + lara->Control.Subsuit.Velocity[1]) * 4) & 0x1F00) + 10);
|
||||
{
|
||||
auto mul1 = (float)abs(lara->Control.Subsuit.Velocity[0]) / SECTOR(8);
|
||||
auto mul2 = (float)abs(lara->Control.Subsuit.Velocity[1]) / SECTOR(8);
|
||||
auto vol = ((mul1 + mul2) * 5.0f) + 0.5f;
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_ENGINE, &item->Pose, SoundEnvironment::Water, 1.0f + (mul1 + mul2), vol);
|
||||
}
|
||||
}
|
||||
|
||||
void ModulateLaraSubsuitSwimTurn(ItemInfo* item)
|
||||
|
|
|
@ -161,7 +161,7 @@ void AnimateShotgun(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &laraItem->Pose);
|
||||
}
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ void AnimateShotgun(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
SoundEffect(SFX_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->pos, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->pos, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_HK_FIRE, &laraItem->pos);
|
||||
}
|
||||
}*/
|
||||
|
@ -237,7 +237,7 @@ void AnimateShotgun(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &laraItem->Pose);
|
||||
}
|
||||
}
|
||||
|
@ -263,7 +263,7 @@ void AnimateShotgun(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
SoundEffect(SFX_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->pos, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->pos, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_HK_FIRE, &laraItem->pos);
|
||||
}
|
||||
}*/
|
||||
|
@ -352,7 +352,7 @@ void FireShotgun(ItemInfo* laraItem)
|
|||
|
||||
lara->RightArm.FlashGun = Weapons[(int)LaraWeaponType::Shotgun].FlashTime;
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, 20971524);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, (SoundEnvironment)TestEnvironment(ENV_FLAG_WATER, laraItem));
|
||||
SoundEffect(Weapons[(int)LaraWeaponType::Shotgun].SampleNum, &laraItem->Pose);
|
||||
|
||||
Statistics.Game.AmmoUsed++;
|
||||
|
@ -1116,7 +1116,7 @@ void GrenadeControl(short itemNumber)
|
|||
|
||||
AlertNearbyGuards(item);
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, ENV_FLAG_NONE, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
|
||||
// Setup the counter for spawned grenades in the case of flash and super grenades ammos
|
||||
|
@ -1412,7 +1412,7 @@ void RocketControl(short itemNumber)
|
|||
|
||||
AlertNearbyGuards(item);
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, ENV_FLAG_NONE, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
|
||||
ExplodeItemNode(item, 0, 0, EXPLODE_NORMAL);
|
||||
|
@ -1710,7 +1710,7 @@ void CrossbowBoltControl(short itemNumber)
|
|||
|
||||
AlertNearbyGuards(item);
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, ENV_FLAG_NONE, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
|
||||
ExplodeItemNode(item, 0, 0, EXPLODE_NORMAL);
|
||||
|
|
|
@ -124,7 +124,7 @@ void AnimatePistols(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
|
||||
lara->RightArm.FlashGun = weapon->FlashTime;
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, ENV_FLAG_NONE, 0.9f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, SoundEnvironment::Land, 0.9f, 0.5f);
|
||||
SoundEffect(weapon->SampleNum, &laraItem->Pose);
|
||||
soundPlayed = true;
|
||||
|
||||
|
@ -217,7 +217,7 @@ void AnimatePistols(ItemInfo* laraItem, LaraWeaponType weaponType)
|
|||
|
||||
if (!soundPlayed)
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, 0, 0.9f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &laraItem->Pose, SoundEnvironment::Land, 0.9f, 0.5f);
|
||||
SoundEffect(weapon->SampleNum, &laraItem->Pose);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,13 +106,17 @@ void AnimateLara(ItemInfo* item)
|
|||
cmd += 2;
|
||||
break;
|
||||
}
|
||||
|
||||
flags = cmd[1] & 0xC000;
|
||||
if (flags == (int)SOUND_PLAYCONDITION::LandAndWater ||
|
||||
(flags == (int)SOUND_PLAYCONDITION::Land && (lara->WaterSurfaceDist >= 0 || lara->WaterSurfaceDist == NO_HEIGHT)) ||
|
||||
(flags == (int)SOUND_PLAYCONDITION::Water && lara->WaterSurfaceDist < 0 && lara->WaterSurfaceDist != NO_HEIGHT && !TestEnvironment(ENV_FLAG_SWAMP, item)))
|
||||
else
|
||||
{
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SFX_ALWAYS);
|
||||
flags = cmd[1] & 0xC000;
|
||||
auto condition = flags ? (flags == (1 << 14) ? SoundEnvironment::Land : SoundEnvironment::Water) : SoundEnvironment::Always;
|
||||
|
||||
if (condition == SoundEnvironment::Always ||
|
||||
(condition == SoundEnvironment::Land && (lara->WaterSurfaceDist >= 0 || lara->WaterSurfaceDist == NO_HEIGHT)) ||
|
||||
(condition == SoundEnvironment::Water && lara->WaterSurfaceDist < -CLICK(0.5f) && lara->WaterSurfaceDist != NO_HEIGHT && !TestEnvironment(ENV_FLAG_SWAMP, item)))
|
||||
{
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
cmd += 2;
|
||||
|
@ -304,22 +308,19 @@ void AnimateItem(ItemInfo* item)
|
|||
item->Pose.Position.y = LaraItem->Pose.Position.y - 762;
|
||||
item->Pose.Position.z = LaraItem->Pose.Position.z;
|
||||
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
else if (TestEnvironment(ENV_FLAG_WATER, item))
|
||||
{
|
||||
if (!flags || flags == (int)SOUND_PLAYCONDITION::Water && (TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber) || Objects[item->ObjectNumber].intelligent))
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SFX_ALWAYS);
|
||||
if (!flags || flags == (int)SoundEnvironment::Water && (TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber) || Objects[item->ObjectNumber].intelligent))
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
else if (!flags || flags == (int)SOUND_PLAYCONDITION::Land && !TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber))
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SFX_ALWAYS);
|
||||
else if (!flags || flags == (int)SoundEnvironment::Land && !TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber))
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (TestEnvironment(ENV_FLAG_WATER, item))
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, ENV_FLAG_WATER);
|
||||
else
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose);
|
||||
SoundEffect(cmd[1] & 0x3FFF, &item->Pose, (SoundEnvironment)TestEnvironment(ENV_FLAG_WATER, item));
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -1196,7 +1196,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
if (BinocularRange < ANGLE(0.7f))
|
||||
BinocularRange = ANGLE(0.7f);
|
||||
else
|
||||
SoundEffect(SFX_TR4_BINOCULARS_ZOOM, nullptr, 0, 0.9f);
|
||||
SoundEffect(SFX_TR4_BINOCULARS_ZOOM, nullptr, SoundEnvironment::Land, 0.9f);
|
||||
}
|
||||
else if (InputBusy & IN_CROUCH)
|
||||
{
|
||||
|
@ -1204,7 +1204,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
if (BinocularRange > ANGLE(8.5f))
|
||||
BinocularRange = ANGLE(8.5f);
|
||||
else
|
||||
SoundEffect(SFX_TR4_BINOCULARS_ZOOM, nullptr, 0, 1.0f);
|
||||
SoundEffect(SFX_TR4_BINOCULARS_ZOOM, nullptr, SoundEnvironment::Land, 1.0f);
|
||||
}
|
||||
|
||||
auto src = Vector3Int(Camera.pos.x, Camera.pos.y, Camera.pos.z);
|
||||
|
@ -1253,7 +1253,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
//SoundEffect(SFX_TR4_LARA_HK_FIRE, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1274,7 +1274,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1286,7 +1286,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1299,7 +1299,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1312,7 +1312,7 @@ void BinocularCamera(ItemInfo* item)
|
|||
SoundEffect(SFX_TR4_LARA_HK_SILENCED, nullptr);
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, ENV_FLAG_NONE, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, nullptr, SoundEnvironment::Land, 1.0f, 0.4f);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1394,7 +1394,7 @@ void CalculateCamera()
|
|||
// Camera is in a water room, play water sound effect.
|
||||
if (TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber))
|
||||
{
|
||||
SoundEffect(SFX_TR4_UNDERWATER, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_UNDERWATER, nullptr, SoundEnvironment::Always);
|
||||
if (Camera.underwater == false)
|
||||
Camera.underwater = true;
|
||||
}
|
||||
|
@ -1931,7 +1931,7 @@ void ItemsCollideCamera()
|
|||
void RumbleScreen()
|
||||
{
|
||||
if (!(GlobalCounter & 0x1FF))
|
||||
SoundEffect(SFX_TR5_KLAXON, nullptr, 4104);
|
||||
SoundEffect(SFX_TR5_KLAXON, nullptr, SoundEnvironment::Land, 0.25f);
|
||||
|
||||
if (RumbleTimer >= 0)
|
||||
RumbleTimer++;
|
||||
|
|
|
@ -614,7 +614,7 @@ GameStatus DoLevel(int index, std::string const& ambient, bool loadFromSavegame)
|
|||
}
|
||||
|
||||
// Play default background music
|
||||
PlaySoundTrack(ambient, SOUNDTRACK_PLAYTYPE::BGM);
|
||||
PlaySoundTrack(ambient, SoundTrackType::BGM);
|
||||
|
||||
// Restore the game?
|
||||
if (loadFromSavegame)
|
||||
|
|
|
@ -1040,7 +1040,7 @@ void LaraBubbles(ItemInfo* item)
|
|||
Vector3Int pos;
|
||||
int num, i;
|
||||
|
||||
SoundEffect(SFX_TR4_LARA_BUBBLES, &item->Pose, ENV_FLAG_WATER);
|
||||
SoundEffect(SFX_TR4_LARA_BUBBLES, &item->Pose, SoundEnvironment::Water);
|
||||
|
||||
pos.x = 0;
|
||||
|
||||
|
|
|
@ -636,7 +636,7 @@ InventoryResult GuiController::TitleOptions()
|
|||
else
|
||||
selected_option--;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDown)
|
||||
|
@ -646,14 +646,14 @@ InventoryResult GuiController::TitleOptions()
|
|||
else
|
||||
selected_option -= option_count;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDeselect && menu_to_display != Menu::Title)
|
||||
{
|
||||
menu_to_display = Menu::Title;
|
||||
selected_option = selected_option_bak;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -661,7 +661,7 @@ InventoryResult GuiController::TitleOptions()
|
|||
{
|
||||
if (menu_to_display == Menu::Title)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
|
||||
switch (selected_option)
|
||||
{
|
||||
|
@ -696,7 +696,7 @@ InventoryResult GuiController::TitleOptions()
|
|||
}
|
||||
else if (menu_to_display == Menu::SelectLevel)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
// Level 0 is the title level, so increment the option by 1 to offset it.
|
||||
g_GameFlow->SelectedLevelForNewGame = selected_option + 1;
|
||||
menu_to_display = Menu::Title;
|
||||
|
@ -709,7 +709,7 @@ InventoryResult GuiController::TitleOptions()
|
|||
SayNo();
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
g_GameFlow->SelectedSaveGame = selected_option;
|
||||
selected_option = 0;
|
||||
ret = InventoryResult::LoadGame;
|
||||
|
@ -847,7 +847,7 @@ void GuiController::HandleDisplaySettingsInput(bool pause)
|
|||
else
|
||||
selected_option--;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDown)
|
||||
|
@ -857,7 +857,7 @@ void GuiController::HandleDisplaySettingsInput(bool pause)
|
|||
else
|
||||
selected_option -= option_count;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goSelect)
|
||||
|
@ -970,7 +970,7 @@ void GuiController::HandleControlSettingsInput(bool pause)
|
|||
else
|
||||
selected_option--;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDown)
|
||||
|
@ -980,7 +980,7 @@ void GuiController::HandleControlSettingsInput(bool pause)
|
|||
else
|
||||
selected_option -= option_count;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goSelect)
|
||||
|
@ -1131,7 +1131,7 @@ void GuiController::HandleSoundSettingsInput(bool pause)
|
|||
else
|
||||
selected_option--;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDown)
|
||||
|
@ -1141,7 +1141,7 @@ void GuiController::HandleSoundSettingsInput(bool pause)
|
|||
else
|
||||
selected_option -= option_count;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goSelect)
|
||||
|
@ -1217,7 +1217,7 @@ InventoryResult GuiController::DoPauseMenu()
|
|||
else
|
||||
selected_option--;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDown)
|
||||
|
@ -1227,7 +1227,7 @@ InventoryResult GuiController::DoPauseMenu()
|
|||
else
|
||||
selected_option -= option_count;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1236,7 +1236,7 @@ InventoryResult GuiController::DoPauseMenu()
|
|||
if (menu_to_display == Menu::Pause)
|
||||
{
|
||||
invMode = InventoryMode::None;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
return InventoryResult::None;
|
||||
}
|
||||
|
||||
|
@ -1244,7 +1244,7 @@ InventoryResult GuiController::DoPauseMenu()
|
|||
{
|
||||
selected_option = menu_to_display == Menu::Statistics ? 0 : 1;
|
||||
menu_to_display = Menu::Pause;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2103,7 +2103,7 @@ void GuiController::UseCurrentItem()
|
|||
if (LaraItem->HitPoints > LARA_HEALTH_MAX)
|
||||
LaraItem->HitPoints = LARA_HEALTH_MAX;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SoundEnvironment::Always);
|
||||
Statistics.Game.HealthUsed++;
|
||||
}
|
||||
else
|
||||
|
@ -2127,7 +2127,7 @@ void GuiController::UseCurrentItem()
|
|||
Lara.PoisonPotency = 0;
|
||||
LaraItem->HitPoints = LARA_HEALTH_MAX;
|
||||
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SoundEnvironment::Always);
|
||||
Statistics.Game.HealthUsed++;
|
||||
}
|
||||
else
|
||||
|
@ -2279,7 +2279,7 @@ void GuiController::HandleInventoryMenu()
|
|||
combine_type_flag = 1;
|
||||
combine_obj1 = invItem;
|
||||
combine_obj2 = ammoItem;
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
else if (ammoItem >= INV_OBJECT_SMOL_WATERSKIN && ammoItem <= INV_OBJECT_SMOL_WATERSKIN3L && invItem >= INV_OBJECT_BIG_WATERSKIN && invItem <= INV_OBJECT_BIG_WATERSKIN5L)
|
||||
{
|
||||
|
@ -2287,7 +2287,7 @@ void GuiController::HandleInventoryMenu()
|
|||
{
|
||||
combine_type_flag = 2;
|
||||
combine_ring_fade_dir = 2;
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SoundEnvironment::Always);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2300,7 +2300,7 @@ void GuiController::HandleInventoryMenu()
|
|||
{
|
||||
combine_type_flag = 2;
|
||||
combine_ring_fade_dir = 2;
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_COMBINE, nullptr, SoundEnvironment::Always);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2316,7 +2316,7 @@ void GuiController::HandleInventoryMenu()
|
|||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
combine_ring_fade_dir = 2;
|
||||
goDeselect = 0;
|
||||
}
|
||||
|
@ -2468,12 +2468,12 @@ void GuiController::HandleInventoryMenu()
|
|||
if (goUp && current_selected_option > 0)
|
||||
{
|
||||
current_selected_option--;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
else if (goDown && current_selected_option < n - 1)
|
||||
{
|
||||
current_selected_option++;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (ammo_active)
|
||||
|
@ -2481,13 +2481,13 @@ void GuiController::HandleInventoryMenu()
|
|||
if (goLeft && current_selected_option > 0)
|
||||
{
|
||||
current_selected_option--;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goRight && current_selected_option < n - 1)
|
||||
{
|
||||
current_selected_option++;
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
*current_ammo_type = current_selected_option;
|
||||
|
@ -2496,7 +2496,7 @@ void GuiController::HandleInventoryMenu()
|
|||
if (goSelect)
|
||||
{
|
||||
if (current_options[current_selected_option].type != MenuType::Equip && current_options[current_selected_option].type != MenuType::Use)
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
|
||||
switch (current_options[current_selected_option].type)
|
||||
{
|
||||
|
@ -2570,7 +2570,7 @@ void GuiController::HandleInventoryMenu()
|
|||
|
||||
if (goDeselect && ammo_active)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
ammo_active = 0;
|
||||
rings[(int)RingTypes::Inventory]->ringactive = 1;
|
||||
|
@ -3106,7 +3106,7 @@ void GuiController::DrawCurrentObjectList(int ringnum)
|
|||
{
|
||||
if (!rings[ringnum]->objlistmovement)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_ROTATE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_ROTATE, nullptr, SoundEnvironment::Always);
|
||||
rings[ringnum]->objlistmovement += 8192;
|
||||
|
||||
if (ammo_selector_flag)
|
||||
|
@ -3118,7 +3118,7 @@ void GuiController::DrawCurrentObjectList(int ringnum)
|
|||
{
|
||||
if (!rings[ringnum]->objlistmovement)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_ROTATE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_ROTATE, nullptr, SoundEnvironment::Always);
|
||||
rings[ringnum]->objlistmovement -= 8192;
|
||||
|
||||
if (ammo_selector_flag)
|
||||
|
@ -3194,7 +3194,7 @@ int GuiController::CallInventory(bool reset_mode)
|
|||
|
||||
if (DbInput & IN_OPTION)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
val = 1;
|
||||
}
|
||||
|
||||
|
@ -3257,7 +3257,7 @@ void GuiController::DoStatisticsMode()
|
|||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
invMode = InventoryMode::None;
|
||||
}
|
||||
|
@ -3269,7 +3269,7 @@ void GuiController::DoExamineMode()
|
|||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
invMode = InventoryMode::None;
|
||||
}
|
||||
|
@ -3291,18 +3291,18 @@ void GuiController::DoDiary()
|
|||
if (goRight && Lara.Inventory.Diary.currentPage < Lara.Inventory.Diary.numPages)
|
||||
{
|
||||
Lara.Inventory.Diary.currentPage++;
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goLeft && Lara.Inventory.Diary.currentPage > 1)
|
||||
{
|
||||
Lara.Inventory.Diary.currentPage--;
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
invMode = InventoryMode::None;
|
||||
}
|
||||
|
@ -3319,7 +3319,7 @@ int GuiController::DoLoad()
|
|||
|
||||
if (goDown)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
|
||||
if (selected_slot == SAVEGAME_MAX - 1)
|
||||
selected_slot -= SAVEGAME_MAX - 1; //go back up
|
||||
|
@ -3329,7 +3329,7 @@ int GuiController::DoLoad()
|
|||
|
||||
if (goUp)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
|
||||
if (selected_slot== 0)
|
||||
selected_slot += SAVEGAME_MAX - 1; //go back down
|
||||
|
@ -3343,7 +3343,7 @@ int GuiController::DoLoad()
|
|||
SayNo();
|
||||
else
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
g_GameFlow->SelectedSaveGame = selected_slot;
|
||||
ExitInvLoop = 1;
|
||||
return 1;
|
||||
|
@ -3352,7 +3352,7 @@ int GuiController::DoLoad()
|
|||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
invMode = InventoryMode::InGame;
|
||||
}
|
||||
|
@ -3366,7 +3366,7 @@ void GuiController::DoSave()
|
|||
|
||||
if (goDown)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
|
||||
if (selected_slot == SAVEGAME_MAX - 1)
|
||||
selected_slot -= SAVEGAME_MAX - 1; //go back up
|
||||
|
@ -3376,7 +3376,7 @@ void GuiController::DoSave()
|
|||
|
||||
if (goUp)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
|
||||
if (selected_slot == 0)
|
||||
selected_slot += SAVEGAME_MAX - 1; //go back down
|
||||
|
@ -3386,14 +3386,14 @@ void GuiController::DoSave()
|
|||
|
||||
if (goSelect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_CHOOSE, nullptr, SoundEnvironment::Always);
|
||||
SaveGame::Save(selected_slot);
|
||||
ExitInvLoop = 1; //exit inv if the user has saved
|
||||
}
|
||||
|
||||
if (goDeselect)
|
||||
{
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always);
|
||||
goDeselect = 0;
|
||||
invMode = InventoryMode::InGame;
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ void ControlMissile(short fxNumber)
|
|||
// fx->frameNumber = -GetRandomControl()/11000;
|
||||
// fx->counter = 6;
|
||||
// fx->objectNumber = RICOCHET1;
|
||||
SoundEffect((fx->objectNumber == ID_SCUBA_HARPOON) ? 10 : 258, &fx->pos);
|
||||
SoundEffect((fx->objectNumber == ID_SCUBA_HARPOON) ? SFX_TR4_LARA_RICOCHET : SFX_TR2_CIRCLE_BLADE_HIT, &fx->pos);
|
||||
}
|
||||
/*else if (fx->objectNumber == DRAGON_FIRE)
|
||||
{
|
||||
|
|
|
@ -71,7 +71,6 @@ struct LIGHTINFO
|
|||
|
||||
enum RoomEnvFlags
|
||||
{
|
||||
ENV_FLAG_NONE = 0x0000,
|
||||
ENV_FLAG_WATER = 0x0001,
|
||||
ENV_FLAG_SWAMP = 0x0004,
|
||||
ENV_FLAG_OUTSIDE = 0x0008,
|
||||
|
|
|
@ -555,8 +555,8 @@ bool SaveGame::Save(int slot)
|
|||
auto serializedItemsOffset = fbb.CreateVector(serializedItems);
|
||||
|
||||
// Soundtrack playheads
|
||||
auto bgmTrackData = GetSoundTrackNameAndPosition(SOUNDTRACK_PLAYTYPE::BGM);
|
||||
auto oneshotTrackData = GetSoundTrackNameAndPosition(SOUNDTRACK_PLAYTYPE::OneShot);
|
||||
auto bgmTrackData = GetSoundTrackNameAndPosition(SoundTrackType::BGM);
|
||||
auto oneshotTrackData = GetSoundTrackNameAndPosition(SoundTrackType::OneShot);
|
||||
auto bgmTrackOffset = fbb.CreateString(bgmTrackData.first);
|
||||
auto oneshotTrackOffset = fbb.CreateString(oneshotTrackData.first);
|
||||
|
||||
|
@ -969,8 +969,8 @@ bool SaveGame::Load(int slot)
|
|||
//FlipTimer = s->flip_timer();
|
||||
|
||||
// Restore soundtracks
|
||||
PlaySoundTrack(s->ambient_track()->str(), SOUNDTRACK_PLAYTYPE::BGM, s->ambient_position());
|
||||
PlaySoundTrack(s->oneshot_track()->str(), SOUNDTRACK_PLAYTYPE::OneShot, s->oneshot_position());
|
||||
PlaySoundTrack(s->ambient_track()->str(), SoundTrackType::BGM, s->ambient_position());
|
||||
PlaySoundTrack(s->oneshot_track()->str(), SoundTrackType::OneShot, s->oneshot_position());
|
||||
|
||||
// Legacy soundtrack map
|
||||
for (int i = 0; i < s->cd_flags()->size(); i++)
|
||||
|
|
|
@ -185,7 +185,7 @@ namespace TEN::Entities::Switches
|
|||
laraItem->Animation.FrameNumber >= g_Level.Anims[LA_TURNSWITCH_PUSH_CLOCKWISE_START].frameBase + 58 &&
|
||||
laraItem->Animation.FrameNumber <= g_Level.Anims[LA_TURNSWITCH_PUSH_CLOCKWISE_START].frameBase + 115)
|
||||
{
|
||||
SoundEffect(SFX_TR4_PUSHABLE_SOUND, &switchItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_PUSHABLE_SOUND, &switchItem->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -211,7 +211,7 @@ namespace TEN::Entities::Switches
|
|||
laraItem->Animation.FrameNumber >= g_Level.Anims[LA_TURNSWITCH_PUSH_COUNTER_CLOCKWISE_START].frameBase + 58 &&
|
||||
laraItem->Animation.FrameNumber <= g_Level.Anims[LA_TURNSWITCH_PUSH_COUNTER_CLOCKWISE_START].frameBase + 115)
|
||||
{
|
||||
SoundEffect(SFX_TR4_PUSHABLE_SOUND, &switchItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_PUSHABLE_SOUND, &switchItem->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ void WreckingBallControl(short itemNumber)
|
|||
item->Pose.Position.y = item2->Pose.Position.y + 1644;
|
||||
if (item->Animation.VerticalVelocity < -32)
|
||||
{
|
||||
SoundEffect(SFX_TR5_BASE_CLAW_TOP_IMPACT, &item->Pose, 4104);
|
||||
SoundEffect(SFX_TR5_BASE_CLAW_TOP_IMPACT, &item->Pose, SoundEnvironment::Land, 1.0f, 0.5f);
|
||||
item->Animation.VerticalVelocity = -item->Animation.VerticalVelocity >> 3;
|
||||
BounceCamera(item, 16, 8192);
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ void SkidooManControl(short riderItemNumber)
|
|||
{
|
||||
creatureInfo->JointRotation[0] = (creatureInfo->JointRotation[0] == 1) ? 2 : 1;
|
||||
DoSnowEffect(item);
|
||||
SoundEffect(SFX_TR2_SNOWMOBILE_IDLE, &item->Pose, 4 + ((0x10000 - (100 - item->Animation.Velocity) * 100) << 8));
|
||||
SoundEffect(SFX_TR2_SNOWMOBILE_IDLE, &item->Pose, SoundEnvironment::Land, 0.5f + item->Animation.Velocity / 100.0f); // SKIDOO_MAX_VELOCITY. TODO: Check actual sound!
|
||||
}
|
||||
|
||||
CreatureAnimation(itemNumber, angle, 0);
|
||||
|
|
|
@ -1043,7 +1043,7 @@ void SpeedBoatControl(short itemNumber)
|
|||
sBoat->Pitch += (pitch - sBoat->Pitch) / 4;
|
||||
|
||||
int fx = (sBoatItem->Animation.Velocity > 8) ? SFX_TR2_SPEEDBOAT_MOVING : (drive ? SFX_TR2_SPEEDBOAT_IDLE : SFX_TR2_SPEEDBOAT_ACCELERATE);
|
||||
SoundEffect(fx, &sBoatItem->Pose, ENV_FLAG_NONE, sBoat->Pitch / (float)BOAT_MAX_VELOCITY);
|
||||
SoundEffect(fx, &sBoatItem->Pose, SoundEnvironment::Land, sBoat->Pitch / (float)BOAT_MAX_VELOCITY);
|
||||
|
||||
if (sBoatItem->Animation.Velocity && (water - 5) == sBoatItem->Pose.Position.y)
|
||||
DoBoatWakeEffect(sBoatItem);
|
||||
|
|
|
@ -523,7 +523,7 @@ bool SkidooControl(ItemInfo* laraItem, CollisionInfo* coll)
|
|||
skidoo->TrackMesh = ((skidoo->TrackMesh & 3) == 1) ? 2 : 1;
|
||||
|
||||
skidoo->Pitch += (pitch - skidoo->Pitch) / 4;
|
||||
SoundEffect(skidoo->Pitch ? SFX_TR2_SNOWMOBILE_MOVING : SFX_TR2_SNOWMOBILE_ACCELERATE, &skidooItem->Pose, 0, 0.5f + skidoo->Pitch / (float)SKIDOO_MAX_VELOCITY);
|
||||
SoundEffect(skidoo->Pitch ? SFX_TR2_SNOWMOBILE_MOVING : SFX_TR2_SNOWMOBILE_ACCELERATE, &skidooItem->Pose, SoundEnvironment::Land, 0.5f + skidoo->Pitch / (float)SKIDOO_MAX_VELOCITY);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -101,10 +101,9 @@ void MPGunControl(short itemNumber)
|
|||
head = AI.angle;
|
||||
torsoY = AI.angle;
|
||||
ShotLara(item, &AI, &MPGunBite, torsoY, 32);
|
||||
SoundEffect(SFX_TR3_OIL_SMG_FIRE, &item->Pose, 24576);
|
||||
SoundEffect(SFX_TR3_OIL_SMG_FIRE, &item->Pose, SoundEnvironment::Land, 1.0f, 0.7f);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -90,7 +90,7 @@ void TrainControl(short itemNumber)
|
|||
}
|
||||
}
|
||||
else
|
||||
SoundEffect(SFX_TR3_TUBE_LOOP, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_TUBE_LOOP, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
void TrainCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
|
||||
|
@ -103,8 +103,8 @@ void TrainCollision(short itemNumber, ItemInfo* laraItem, CollisionInfo* coll)
|
|||
if (!TestCollision(trainItem, laraItem))
|
||||
return;
|
||||
|
||||
SoundEffect(SFX_TR4_LARA_GENERAL_DEATH, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_HIGH_FALL_DEATH, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_GENERAL_DEATH, &laraItem->Pose, SoundEnvironment::Always);
|
||||
SoundEffect(SFX_TR4_LARA_HIGH_FALL_DEATH, &laraItem->Pose, SoundEnvironment::Always);
|
||||
StopSoundEffect(SFX_TR3_TUBE_LOOP);
|
||||
|
||||
laraItem->Animation.AnimNumber = Objects[ID_LARA_EXTRA_ANIMS].animIndex + LARA_TRAIN_DEATH_ANIM;
|
||||
|
|
|
@ -264,7 +264,7 @@ static void CartToEntityCollision(ItemInfo* laraItem, ItemInfo* minecartItem)
|
|||
int frame = laraItem->Animation.FrameNumber - g_Level.Anims[laraItem->Animation.AnimNumber].frameBase;
|
||||
if (frame >= 12 && frame <= 22)
|
||||
{
|
||||
SoundEffect(SFX_TR3_SPANNER, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_SPANNER, &item->Pose, SoundEnvironment::Always);
|
||||
TestTriggers(item, true);
|
||||
item->Animation.FrameNumber++;
|
||||
}
|
||||
|
@ -397,7 +397,7 @@ static void MoveCart(ItemInfo* laraItem, ItemInfo* minecartItem)
|
|||
if (minecart->VerticalVelocity)
|
||||
StopSoundEffect(SFX_TR3_MINE_CART_PULLY_LOOP);
|
||||
else
|
||||
SoundEffect(SFX_TR3_MINE_CART_PULLY_LOOP, &minecartItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_MINE_CART_PULLY_LOOP, &minecartItem->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -406,7 +406,7 @@ static void MoveCart(ItemInfo* laraItem, ItemInfo* minecartItem)
|
|||
if (minecart->VerticalVelocity)
|
||||
StopSoundEffect(SFX_TR3_MINE_CART_TRACK_LOOP);
|
||||
else
|
||||
SoundEffect(SFX_TR3_MINE_CART_TRACK_LOOP, &minecartItem->Pose, (2 | 4) + 0x1000000 + (minecartItem->Animation.Velocity * 32768));
|
||||
SoundEffect(SFX_TR3_MINE_CART_TRACK_LOOP, &minecartItem->Pose, SoundEnvironment::Land, 1.0f + ((float)minecartItem->Animation.Velocity / SECTOR(8))); // TODO: check actual sound!
|
||||
}
|
||||
|
||||
if (minecart->Flags & (CART_FLAG_TURNING_LEFT | CART_FLAG_TURNING_RIGHT))
|
||||
|
@ -487,7 +487,7 @@ static void MoveCart(ItemInfo* laraItem, ItemInfo* minecartItem)
|
|||
if (minecartItem->Pose.Position.y > minecart->FloorHeightMiddle)
|
||||
{
|
||||
if (minecart->VerticalVelocity > 0)
|
||||
SoundEffect(SFX_TR3_QUADBIKE_FRONT_IMPACT, &minecartItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_QUADBIKE_FRONT_IMPACT, &minecartItem->Pose, SoundEnvironment::Always);
|
||||
|
||||
minecartItem->Pose.Position.y = minecart->FloorHeightMiddle;
|
||||
minecart->VerticalVelocity = 0;
|
||||
|
@ -597,7 +597,7 @@ static void DoUserInput(ItemInfo* minecartItem, ItemInfo* laraItem, MinecartInfo
|
|||
case CART_STATE_IDLE:
|
||||
if (!(minecart->Flags & CART_FLAG_CONTROL))
|
||||
{
|
||||
SoundEffect(SFX_TR3_MINE_CART_START, &minecartItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_MINE_CART_START, &minecartItem->Pose, SoundEnvironment::Always);
|
||||
minecart->Flags |= CART_FLAG_CONTROL;
|
||||
minecart->StopDelay = 64;
|
||||
}
|
||||
|
@ -651,7 +651,7 @@ static void DoUserInput(ItemInfo* minecartItem, ItemInfo* laraItem, MinecartInfo
|
|||
else
|
||||
{
|
||||
minecart->Velocity += CART_DEC;
|
||||
SoundEffect(SFX_TR3_MINE_CART_BRAKE, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_MINE_CART_BRAKE, &laraItem->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -724,7 +724,7 @@ static void DoUserInput(ItemInfo* minecartItem, ItemInfo* laraItem, MinecartInfo
|
|||
|
||||
case CART_STATE_MOUNT:
|
||||
if (laraItem->Animation.AnimNumber == Objects[ID_MINECART_LARA_ANIMS].animIndex + 5 &&
|
||||
laraItem->Animation.FrameNumber == GetFrameNumber(minecartItem, 20) &&
|
||||
|
||||
!minecart->Flags & CART_FLAG_MESH)
|
||||
{
|
||||
auto temp = g_Level.Meshes[lara->MeshPtrs[LM_RHAND]];
|
||||
|
@ -752,7 +752,7 @@ static void DoUserInput(ItemInfo* minecartItem, ItemInfo* laraItem, MinecartInfo
|
|||
floorHeight < CLICK(1))
|
||||
{
|
||||
if (Wibble & 7 == 0)
|
||||
SoundEffect(SFX_TR3_QUADBIKE_FRONT_IMPACT, &minecartItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_QUADBIKE_FRONT_IMPACT, &minecartItem->Pose, SoundEnvironment::Always);
|
||||
|
||||
minecartItem->Pose.Position.x += TURN_DEATH_VEL * phd_sin(minecartItem->Pose.Orientation.y);
|
||||
minecartItem->Pose.Position.z += TURN_DEATH_VEL * phd_cos(minecartItem->Pose.Orientation.y);
|
||||
|
|
|
@ -1344,7 +1344,7 @@ bool QuadBikeControl(ItemInfo* laraItem, CollisionInfo* coll)
|
|||
else if (quad->Pitch > 0xA000)
|
||||
quad->Pitch = 0xA000;
|
||||
|
||||
SoundEffect(SFX_TR3_QUADBIKE_MOVE, &quadItem->Pose, 0, 0.5f + (float)abs(quad->Pitch) / (float)MAX_VELOCITY);
|
||||
SoundEffect(SFX_TR3_QUADBIKE_MOVE, &quadItem->Pose, SoundEnvironment::Land, 0.5f + (float)abs(quad->Pitch) / (float)MAX_VELOCITY);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1032,9 +1032,9 @@ void RubberBoatControl(short itemNumber)
|
|||
rBoat->Pitch += ((pitch - rBoat->Pitch) / 4);
|
||||
|
||||
if (rBoatItem->Animation.Velocity > 8)
|
||||
SoundEffect(SFX_TR3_RUBBERBOAT_MOVING, &rBoatItem->Pose, ENV_FLAG_NONE, 0.5f + (float)abs(rBoat->Pitch) / (float)RBOAT_MAX_VELOCITY);
|
||||
SoundEffect(SFX_TR3_RUBBERBOAT_MOVING, &rBoatItem->Pose, SoundEnvironment::Land, 0.5f + (float)abs(rBoat->Pitch) / (float)RBOAT_MAX_VELOCITY);
|
||||
else if (drive)
|
||||
SoundEffect(SFX_TR3_RUBBERBOAT_IDLE, &rBoatItem->Pose, ENV_FLAG_NONE, 0.5f + (float)abs(rBoat->Pitch) / (float)RBOAT_MAX_VELOCITY);
|
||||
SoundEffect(SFX_TR3_RUBBERBOAT_IDLE, &rBoatItem->Pose, SoundEnvironment::Land, 0.5f + (float)abs(rBoat->Pitch) / (float)RBOAT_MAX_VELOCITY);
|
||||
|
||||
if (lara->Vehicle != itemNumber)
|
||||
return;
|
||||
|
|
|
@ -172,7 +172,7 @@ static void FireUPVHarpoon(ItemInfo* laraItem, ItemInfo* UPVItem)
|
|||
|
||||
AddActiveItem(itemNumber);
|
||||
|
||||
SoundEffect(SFX_TR4_LARA_HARPOON_FIRE_WATER, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_HARPOON_FIRE_WATER, &laraItem->Pose, SoundEnvironment::Always);
|
||||
|
||||
Statistics.Game.AmmoUsed++;
|
||||
UPV->HarpoonLeft = !UPV->HarpoonLeft;
|
||||
|
@ -631,7 +631,7 @@ static void UPVControl(ItemInfo* laraItem, ItemInfo* UPVItem)
|
|||
//sub->Flags &= ~UPV_CONTROL; having this here causes the UPV glitch, moving it directly to the states' code is better
|
||||
|
||||
StopSoundEffect(SFX_TR3_UPV_LOOP);
|
||||
SoundEffect(SFX_TR3_UPV_STOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_UPV_STOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SoundEnvironment::Always);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -656,7 +656,7 @@ static void UPVControl(ItemInfo* laraItem, ItemInfo* UPVItem)
|
|||
UPVItem->Pose.Orientation.x += ANGLE(1.0f);
|
||||
|
||||
if (frame == MOUNT_SURFACE_SOUND_FRAME)
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SoundEnvironment::Always);
|
||||
|
||||
if (frame == MOUNT_SURFACE_CONTROL_FRAME)
|
||||
UPV->Flags |= UPV_CONTROL;
|
||||
|
@ -665,7 +665,7 @@ static void UPVControl(ItemInfo* laraItem, ItemInfo* UPVItem)
|
|||
else if (anim == UPV_ANIM_MOUNT_UNDERWATER)
|
||||
{
|
||||
if (frame == MOUNT_UNDERWATER_SOUND_FRAME)
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SoundEnvironment::Always);
|
||||
|
||||
if (frame == MOUNT_UNDERWATER_CONTROL_FRAME)
|
||||
UPV->Flags |= UPV_CONTROL;
|
||||
|
@ -956,7 +956,7 @@ bool UPVControl(ItemInfo* laraItem, CollisionInfo* coll)
|
|||
|
||||
if (!(UPV->Flags & UPV_SURFACE))
|
||||
{
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &laraItem->Pose, SoundEnvironment::Always);
|
||||
UPV->Flags &= ~UPV_DIVE;
|
||||
}
|
||||
|
||||
|
@ -969,7 +969,7 @@ bool UPVControl(ItemInfo* laraItem, CollisionInfo* coll)
|
|||
|
||||
if (!(UPV->Flags & UPV_SURFACE))
|
||||
{
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &laraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_BREATH, &laraItem->Pose, SoundEnvironment::Always);
|
||||
UPV->Flags &= ~UPV_DIVE;
|
||||
}
|
||||
|
||||
|
@ -1035,7 +1035,7 @@ bool UPVControl(ItemInfo* laraItem, CollisionInfo* coll)
|
|||
BackgroundCollision(laraItem, UPVItem);
|
||||
|
||||
if (UPV->Flags & UPV_CONTROL)
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, 2 | 4 | 0x1000000 | (UPVItem->Animation.Velocity * (USHRT_MAX + 1)));
|
||||
SoundEffect(SFX_TR3_UPV_LOOP, (PHD_3DPOS*)&UPVItem->Pose.Position.x, SoundEnvironment::Always, 1.0f + (float)UPVItem->Animation.Velocity / 96.0f);
|
||||
|
||||
UPVItem->Animation.AnimNumber = Objects[ID_UPV].animIndex + (laraItem->Animation.AnimNumber - Objects[ID_UPV_LARA_ANIMS].animIndex);
|
||||
UPVItem->Animation.FrameNumber = g_Level.Anims[UPVItem->Animation.AnimNumber].frameBase + (laraItem->Animation.FrameNumber - g_Level.Anims[laraItem->Animation.AnimNumber].frameBase);
|
||||
|
|
|
@ -377,7 +377,7 @@ namespace TEN::Entities::TR4
|
|||
item->Animation.VerticalVelocity = 0;
|
||||
}
|
||||
|
||||
SoundEffect(SFX_TR4_JEEP_MOVE, &item->Pose, (item->ItemFlags[0] * 1024) + 16777220);
|
||||
SoundEffect(SFX_TR4_JEEP_MOVE, &item->Pose, SoundEnvironment::Land, 1.0f + (float)item->ItemFlags[0] / SECTOR(8)); // TODO: Check actual sound!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -203,7 +203,7 @@ namespace TEN::Entities::TR4
|
|||
for (int i = 0; i < 2; i++)
|
||||
TriggerExplosionSparks(item->Pose.Position.x, item->Pose.Position.y - CLICK(3), item->Pose.Position.z, 3, -1, 0, item->RoomNumber);
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, 25165828);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 1.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace TEN::Entities::TR4
|
|||
{
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, ENV_FLAG_NONE, 0.7f, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 0.7f, 0.5f);
|
||||
|
||||
if (num > 0)
|
||||
{
|
||||
|
|
|
@ -1627,7 +1627,7 @@ int JeepControl(void)
|
|||
else
|
||||
jeep->pitch = -32768;
|
||||
|
||||
SoundEffect(SFX_TR4_JEEP_MOVE, &item->Pose, (jeep->pitch * 256) + 16777220);
|
||||
SoundEffect(SFX_TR4_JEEP_MOVE, &item->Pose, SoundEnvironment::Land, 0.5f + jeep->pitch / 65535.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -1433,14 +1433,14 @@ int MotorbikeControl(void)
|
|||
if (motorbike->pitch > MOTORBIKE_PITCH_MAX)
|
||||
motorbike->pitch = MOTORBIKE_PITCH_MAX;
|
||||
|
||||
SoundEffect(SFX_TR4_BIKE_MOVING, &item->Pose, (motorbike->pitch * 256) + 0x1000004);
|
||||
SoundEffect(SFX_TR4_BIKE_MOVING, &item->Pose, SoundEnvironment::Land, 0.7f + motorbike->pitch / 24756.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (drive != -1)
|
||||
{
|
||||
SoundEffect(SFX_TR4_BIKE_IDLE, &item->Pose);
|
||||
SoundEffect(SFX_TR4_BIKE_MOVING, &item->Pose, (motorbike->pitch * 256) + 0x1000004);
|
||||
SoundEffect(SFX_TR4_BIKE_MOVING, &item->Pose, SoundEnvironment::Land, 0.7f + motorbike->pitch / 24756.0f, 0.5f);
|
||||
}
|
||||
motorbike->pitch = 0;
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ void AutoGunsControl(short itemNumber)
|
|||
|
||||
if (abs(angle1) < 1024 && abs(angle2) < 1024 && los)
|
||||
{
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &item->Pose, 0xC00004);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &item->Pose, SoundEnvironment::Land, 0.8f);
|
||||
|
||||
if (GlobalCounter & 1)
|
||||
{
|
||||
|
|
|
@ -74,7 +74,7 @@ void ControlGunShip(short itemNumber)
|
|||
item->MeshBits &= 0xFEFF;
|
||||
|
||||
if (GunShipCounter < 15)
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &item->Pose, 0xC00004);
|
||||
SoundEffect(SFX_TR4_LARA_HK_FIRE, &item->Pose, SoundEnvironment::Land, 0.8f);
|
||||
|
||||
if (!(GlobalCounter & 1))
|
||||
return AnimateItem(item);
|
||||
|
|
|
@ -263,10 +263,10 @@ void LaserHeadControl(short itemNumber)
|
|||
g_Level.Items[creature->PuzzleItem].Pose.Position.y = item->Pose.Position.y;
|
||||
TestTriggers(item, true);
|
||||
|
||||
SoundEffect(SFX_TR5_GOD_HEAD_BLAST, &item->Pose, 0x800004);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose, 20971524);
|
||||
SoundEffect(SFX_TR5_GOD_HEAD_BLAST, &item->Pose, SoundEnvironment::Land, 0.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose, SoundEnvironment::Land, 1.25f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, 4194308);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 0.25f);
|
||||
|
||||
KillItem(itemNumber);
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ static void SubmarineAttack(ItemInfo* item)
|
|||
{
|
||||
auto* torpedoItem = &g_Level.Items[itemNumber];
|
||||
|
||||
SoundEffect(SFX_TR5_UNDERWATER_TORPEDO, &torpedoItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_UNDERWATER_TORPEDO, &torpedoItem->Pose, SoundEnvironment::Always);
|
||||
|
||||
torpedoItem->ObjectNumber = ID_TORPEDO;
|
||||
torpedoItem->Shade = -15856;
|
||||
|
@ -255,7 +255,7 @@ void SubmarineControl(short itemNumber)
|
|||
if (laraInfo.distance >= pow(SECTOR(3), 2))
|
||||
{
|
||||
item->Animation.TargetState = 1;
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_LOOP, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_LOOP, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
else
|
||||
item->Animation.TargetState = 0;
|
||||
|
@ -423,7 +423,7 @@ void TorpedoControl(short itemNumber)
|
|||
{
|
||||
auto* item = &g_Level.Items[itemNumber];
|
||||
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_HIT, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_HIT, &item->Pose, SoundEnvironment::Always);
|
||||
|
||||
Vector3Int pos;
|
||||
|
||||
|
@ -541,8 +541,8 @@ void TorpedoControl(short itemNumber)
|
|||
LaraItem->HitStatus = true;
|
||||
KillItem(itemNumber);
|
||||
TriggerUnderwaterExplosion(item, 1);
|
||||
SoundEffect(SFX_TR5_UNDERWATER_EXPLOSION, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_HIT, &LaraItem->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_UNDERWATER_EXPLOSION, &item->Pose, SoundEnvironment::Always);
|
||||
SoundEffect(SFX_TR5_DIVE_SUIT_HIT, &LaraItem->Pose, SoundEnvironment::Always);
|
||||
LaraItem->HitPoints -= 200;
|
||||
// if (Lara.anxiety >= 0x7F)
|
||||
// Lara.anxiety--;
|
||||
|
@ -575,7 +575,7 @@ void TorpedoControl(short itemNumber)
|
|||
item->Pose.Position.y = y;
|
||||
item->Pose.Position.z = z;
|
||||
TriggerUnderwaterExplosion(item, 1);
|
||||
SoundEffect(SFX_TR5_UNDERWATER_EXPLOSION, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR5_UNDERWATER_EXPLOSION, &item->Pose, SoundEnvironment::Always);
|
||||
KillItem(itemNumber);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ void ElectricalLightControl(short itemNumber)
|
|||
|
||||
intensity = item->ItemFlags[1] - (GetRandomControl() & 0x7F);
|
||||
if (intensity > 64)
|
||||
SoundEffect(SFX_TR5_ELECTRIC_LIGHT_CRACKLES, &item->Pose, 32 * (intensity & 0xFFFFFFF8) | 8);
|
||||
SoundEffect(SFX_TR5_ELECTRIC_LIGHT_CRACKLES, &item->Pose, SoundEnvironment::Land, 1.0f, (float)intensity / 192.0f);
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
|
|
@ -107,7 +107,7 @@ void ControlHighObject1(short itemNumber)
|
|||
else
|
||||
flags = item->ItemFlags[1] / 8;
|
||||
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, (flags * 256) | 8);
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, SoundEnvironment::Land, 1.0f, (flags * 256) / 32767.0f); // TODO: check actual sound!
|
||||
|
||||
item->Pose.Position.y += 8;
|
||||
|
||||
|
@ -196,7 +196,7 @@ void ControlHighObject1(short itemNumber)
|
|||
else
|
||||
flags = item->ItemFlags[1];
|
||||
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, (flags * 256) | 8);
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, SoundEnvironment::Land, 1.0f, (flags * 256) / 32767.0f); // TODO: check actual sound!
|
||||
|
||||
item->ItemFlags[1] += 16;
|
||||
item->Pose.Position.y -= 16;
|
||||
|
|
|
@ -137,11 +137,11 @@ void PushableBlockControl(short itemNumber)
|
|||
|
||||
// do sound effects, it works for now
|
||||
if (DoPushPull > 0)
|
||||
SoundEffect(info->loopSound, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(info->loopSound, &item->Pose, SoundEnvironment::Always);
|
||||
else if (DoPushPull < 0)
|
||||
{
|
||||
DoPushPull = 0;
|
||||
SoundEffect(info->stopSound, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(info->stopSound, &item->Pose, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
// control block falling
|
||||
|
@ -169,7 +169,7 @@ void PushableBlockControl(short itemNumber)
|
|||
FloorShake(item);
|
||||
|
||||
item->Animation.VerticalVelocity = 0;
|
||||
SoundEffect(info->fallSound, &item->Pose, SFX_ALWAYS);
|
||||
SoundEffect(info->fallSound, &item->Pose, SoundEnvironment::Always);
|
||||
|
||||
MoveStackY(itemNumber, relY);
|
||||
AddBridgeStack(itemNumber);
|
||||
|
@ -253,7 +253,7 @@ void PushableBlockControl(short itemNumber)
|
|||
item->Pose.Position.x = item->Pose.Position.x & 0xFFFFFE00 | 0x200;
|
||||
item->Pose.Position.z = item->Pose.Position.z & 0xFFFFFE00 | 0x200;
|
||||
MoveStackXZ(itemNumber);
|
||||
//SoundEffect(pushable->stopSound, &item->pos, SFX_ALWAYS);
|
||||
//SoundEffect(pushable->stopSound, &item->pos, SoundEnvironment::Always);
|
||||
DoPushPull = 0;
|
||||
LaraItem->Animation.TargetState = LS_IDLE;
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ void ControlTeleporter(short itemNumber)
|
|||
}
|
||||
|
||||
ItemInfo* targetItem = &g_Level.Items[item->itemFlags[1]];
|
||||
SoundEffect(SFX_RICH_TELEPORT, &targetItem->pos, (flags << 8) | 8);
|
||||
SoundEffect(SFX_RICH_TELEPORT, &targetItem->pos, SoundEnvironment::Land);
|
||||
|
||||
if (GlobalCounter & 1)
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ void ControlTeleporter(short itemNumber)
|
|||
FlashFadeB = 64;
|
||||
FlashFader = 32;
|
||||
item->itemFlags[2] = 1;
|
||||
SoundEffect(SFX_TR5_TELEPORT_FLASH, 0, (int)& unk_800004);
|
||||
SoundEffect(SFX_TR5_TELEPORT_FLASH, nullptr, SoundEnvironment::Land);
|
||||
}
|
||||
}*/
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ void RaisingCogControl(short itemNumber)
|
|||
else
|
||||
flags = item->ItemFlags[2];
|
||||
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, (flags * 256) | 8);
|
||||
SoundEffect(SFX_TR4_BLK_PLAT_RAISE_AND_LOW, &item->Pose, SoundEnvironment::Land, 1.0f, (flags * 256) / 32767.0f); // TODO: check actual sound!
|
||||
|
||||
item->ItemFlags[2] += 2;
|
||||
item->Pose.Position.y -= 2;
|
||||
|
|
|
@ -70,7 +70,7 @@ void ExplosionControl(short itemNumber)
|
|||
else
|
||||
flag = item->ItemFlags[1] == 1 ? 2 : 0;
|
||||
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, 25165828);
|
||||
SoundEffect(SFX_TR4_EXPLOSION1, &item->Pose, SoundEnvironment::Land, 1.5f);
|
||||
SoundEffect(SFX_TR4_EXPLOSION2, &item->Pose);
|
||||
TriggerExplosionSparks(item->Pose.Position.x, item->Pose.Position.y, item->Pose.Position.z, 3, -2, flag, item->RoomNumber);
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace Misc {
|
|||
|
||||
static void PlayAudioTrack(std::string const& trackName, sol::optional<bool> looped)
|
||||
{
|
||||
auto mode = looped.value_or(false) ? SOUNDTRACK_PLAYTYPE::OneShot : SOUNDTRACK_PLAYTYPE::BGM;
|
||||
auto mode = looped.value_or(false) ? SoundTrackType::OneShot : SoundTrackType::BGM;
|
||||
PlaySoundTrack(trackName, mode);
|
||||
}
|
||||
|
||||
|
@ -95,17 +95,17 @@ namespace Misc {
|
|||
pos.Orientation.y = 0;
|
||||
pos.Orientation.z = 0;
|
||||
|
||||
SoundEffect(id, &pos, flags);
|
||||
SoundEffect(id, &pos, (SoundEnvironment)flags);
|
||||
}
|
||||
|
||||
static void PlaySoundEffect(int id, int flags)
|
||||
{
|
||||
SoundEffect(id, NULL, flags);
|
||||
SoundEffect(id, NULL, (SoundEnvironment)flags);
|
||||
}
|
||||
|
||||
static void SetAmbientTrack(std::string const& trackName)
|
||||
{
|
||||
PlaySoundTrack(trackName, SOUNDTRACK_PLAYTYPE::BGM);
|
||||
PlaySoundTrack(trackName, SoundTrackType::BGM);
|
||||
}
|
||||
|
||||
static int CalculateDistance(Vec3 const& pos1, Vec3 const& pos2)
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
#include "Specific/winmain.h"
|
||||
|
||||
HSTREAM BASS_3D_Mixdown;
|
||||
HFX BASS_FXHandler[(int)SOUND_FILTER::Count];
|
||||
SoundTrackSlot BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::Count];
|
||||
HFX BASS_FXHandler[(int)SoundFilter::Count];
|
||||
SoundTrackSlot BASS_Soundtrack[(int)SoundTrackType::Count];
|
||||
HSAMPLE SamplePointer[SOUND_MAX_SAMPLES];
|
||||
SoundEffectSlot SoundSlot[SOUND_MAX_CHANNELS];
|
||||
|
||||
const BASS_BFX_FREEVERB BASS_ReverbTypes[(int)REVERB_TYPE::Count] = // Reverb presets
|
||||
const BASS_BFX_FREEVERB BASS_ReverbTypes[(int)ReverbType::Count] = // Reverb presets
|
||||
|
||||
{ // Dry Mix | Wet Mix | Size | Damp | Width | Mode | Channel
|
||||
{ 1.0f, 0.20f, 0.05f, 0.90f, 0.7f, 0, -1 }, // 0 = Outside
|
||||
|
@ -44,13 +44,13 @@ void SetVolumeMusic(int vol)
|
|||
GlobalMusicVolume = vol;
|
||||
|
||||
float fVol = static_cast<float>(vol) / 100.0f;
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel))
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel))
|
||||
{
|
||||
BASS_ChannelSetAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel, BASS_ATTRIB_VOL, fVol);
|
||||
BASS_ChannelSetAttribute(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel, BASS_ATTRIB_VOL, fVol);
|
||||
}
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::OneShot].Channel))
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SoundTrackType::OneShot].Channel))
|
||||
{
|
||||
BASS_ChannelSetAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::OneShot].Channel, BASS_ATTRIB_VOL, fVol);
|
||||
BASS_ChannelSetAttribute(BASS_Soundtrack[(int)SoundTrackType::OneShot].Channel, BASS_ATTRIB_VOL, fVol);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ bool LoadSample(char *pointer, int compSize, int uncompSize, int index)
|
|||
return true;
|
||||
}
|
||||
|
||||
long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMultiplier, float gainMultiplier)
|
||||
long SoundEffect(int effectID, PHD_3DPOS* position, SoundEnvironment condition, float pitchMultiplier, float gainMultiplier)
|
||||
{
|
||||
if (effectID >= g_Level.SoundMap.size())
|
||||
return 0;
|
||||
|
@ -146,10 +146,10 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMul
|
|||
if (BASS_GetDevice() == -1)
|
||||
return 0;
|
||||
|
||||
if (!(envFlags & SFX_ALWAYS))
|
||||
if (condition != SoundEnvironment::Always)
|
||||
{
|
||||
// Don't play effect if effect's environment isn't the same as camera position's environment
|
||||
if (TestEnvironmentFlags(ENV_FLAG_WATER, envFlags) != TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber))
|
||||
if (condition != (SoundEnvironment)TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber))
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -187,16 +187,16 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMul
|
|||
sampleFlags |= BASS_SAMPLE_3D;
|
||||
|
||||
// Set & randomize volume (if needed)
|
||||
float gain = (static_cast<float>(sampleInfo->Volume) / UCHAR_MAX) * gainMultiplier;
|
||||
float gain = (static_cast<float>(sampleInfo->Volume) / UCHAR_MAX) * std::clamp(gainMultiplier, SOUND_MIN_PARAM_MULTIPLIER, SOUND_MAX_PARAM_MULTIPLIER);;
|
||||
if ((sampleInfo->Flags & SOUND_FLAG_RND_GAIN))
|
||||
gain -= (static_cast<float>(GetRandomControl()) / static_cast<float>(RAND_MAX))* SOUND_MAX_GAIN_CHANGE;
|
||||
|
||||
// Set and randomize pitch and additionally multiply by provided value (for vehicles etc)
|
||||
float pitch = (1.0f + static_cast<float>(sampleInfo->Pitch) / 127.0f) * pitchMultiplier;
|
||||
float pitch = (1.0f + static_cast<float>(sampleInfo->Pitch) / 127.0f) * std::clamp(pitchMultiplier, SOUND_MIN_PARAM_MULTIPLIER, SOUND_MAX_PARAM_MULTIPLIER);
|
||||
|
||||
// Randomize pitch (if needed)
|
||||
if ((sampleInfo->Flags & SOUND_FLAG_RND_PITCH))
|
||||
pitch += ((static_cast<float>(GetRandomControl()) / static_cast<float>(RAND_MAX)) - 0.5f)* SOUND_MAX_PITCH_CHANGE * 2.0f;
|
||||
pitch += ((static_cast<float>(GetRandomControl()) / static_cast<float>(RAND_MAX)) - 0.5f) * SOUND_MAX_PITCH_CHANGE * 2.0f;
|
||||
|
||||
// Calculate sound radius and distance to sound
|
||||
float radius = (float)(sampleInfo->Radius) * SECTOR(1);
|
||||
|
@ -213,23 +213,23 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMul
|
|||
int existingChannel = Sound_EffectIsPlaying(effectID, position);
|
||||
|
||||
// Select behaviour based on effect playback type (bytes 0-1 of flags field)
|
||||
auto playType = (SOUND_PLAYTYPE)(sampleInfo->Flags & 3);
|
||||
auto playType = (SoundPlayMode)(sampleInfo->Flags & 3);
|
||||
switch (playType)
|
||||
{
|
||||
case SOUND_PLAYTYPE::Normal:
|
||||
case SoundPlayMode::Normal:
|
||||
break;
|
||||
|
||||
case SOUND_PLAYTYPE::Wait:
|
||||
case SoundPlayMode::Wait:
|
||||
if (existingChannel != -1) // Don't play until stopped
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case SOUND_PLAYTYPE::Restart:
|
||||
case SoundPlayMode::Restart:
|
||||
if (existingChannel != -1) // Stop existing and continue
|
||||
Sound_FreeSlot(existingChannel, SOUND_XFADETIME_CUTSOUND);
|
||||
break;
|
||||
|
||||
case SOUND_PLAYTYPE::Looped:
|
||||
case SoundPlayMode::Looped:
|
||||
if (existingChannel != -1) // Just update parameters and return, if already playing
|
||||
{
|
||||
Sound_UpdateEffectPosition(existingChannel, position);
|
||||
|
@ -263,7 +263,7 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMul
|
|||
return 0;
|
||||
|
||||
// Finally ready to play sound, assign it to sound slot.
|
||||
SoundSlot[freeSlot].State = SOUND_STATE::Idle;
|
||||
SoundSlot[freeSlot].State = SoundState::Idle;
|
||||
SoundSlot[freeSlot].EffectID = effectID;
|
||||
SoundSlot[freeSlot].Channel = channel;
|
||||
SoundSlot[freeSlot].Gain = gain;
|
||||
|
@ -273,7 +273,7 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMul
|
|||
return 0;
|
||||
|
||||
// Set looped flag, if necessary
|
||||
if (playType == SOUND_PLAYTYPE::Looped)
|
||||
if (playType == SoundPlayMode::Looped)
|
||||
BASS_ChannelFlags(channel, BASS_SAMPLE_LOOP, BASS_SAMPLE_LOOP);
|
||||
|
||||
// Play channel
|
||||
|
@ -348,7 +348,7 @@ void EnumerateLegacyTracks()
|
|||
// TRLE default looping tracks
|
||||
if (index >= LegacyLoopingTrackMin && index <= LegacyLoopingTrackMax)
|
||||
{
|
||||
s.Mode = SOUNDTRACK_PLAYTYPE::BGM;
|
||||
s.Mode = SoundTrackType::BGM;
|
||||
}
|
||||
s.Name = result[1];
|
||||
SoundTracks.insert(std::make_pair(index, s));
|
||||
|
@ -368,7 +368,7 @@ void EnumerateLegacyTracks()
|
|||
|
||||
}
|
||||
|
||||
void PlaySoundTrack(std::string track, SOUNDTRACK_PLAYTYPE mode, QWORD position)
|
||||
void PlaySoundTrack(std::string track, SoundTrackType mode, QWORD position)
|
||||
{
|
||||
if (track.empty())
|
||||
return;
|
||||
|
@ -383,11 +383,11 @@ void PlaySoundTrack(std::string track, SOUNDTRACK_PLAYTYPE mode, QWORD position)
|
|||
|
||||
switch (mode)
|
||||
{
|
||||
case SOUNDTRACK_PLAYTYPE::OneShot:
|
||||
case SoundTrackType::OneShot:
|
||||
crossfadeTime = SOUND_XFADETIME_ONESHOT;
|
||||
break;
|
||||
|
||||
case SOUNDTRACK_PLAYTYPE::BGM:
|
||||
case SoundTrackType::BGM:
|
||||
crossfade = true;
|
||||
crossfadeTime = channelActive ? SOUND_XFADETIME_BGM : SOUND_XFADETIME_BGM_START;
|
||||
flags |= BASS_SAMPLE_LOOP;
|
||||
|
@ -421,10 +421,10 @@ void PlaySoundTrack(std::string track, SOUNDTRACK_PLAYTYPE mode, QWORD position)
|
|||
|
||||
// Damp BGM track in case one-shot track is about to play.
|
||||
|
||||
if (mode == SOUNDTRACK_PLAYTYPE::OneShot)
|
||||
if (mode == SoundTrackType::OneShot)
|
||||
{
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel))
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel, BASS_ATTRIB_VOL, masterVolume * SOUND_BGM_DAMP_COEFFICIENT, SOUND_XFADETIME_BGM_START);
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel))
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel, BASS_ATTRIB_VOL, masterVolume * SOUND_BGM_DAMP_COEFFICIENT, SOUND_XFADETIME_BGM_START);
|
||||
BASS_ChannelSetSync(stream, BASS_SYNC_FREE | BASS_SYNC_ONETIME | BASS_SYNC_MIXTIME, 0, Sound_FinishOneshotTrack, NULL);
|
||||
}
|
||||
|
||||
|
@ -469,7 +469,7 @@ void PlaySoundTrack(std::string track, short mask)
|
|||
if (SoundTrackMap.count(track))
|
||||
PlaySoundTrack(SoundTrackMap[track], mask);
|
||||
else
|
||||
PlaySoundTrack(track, SOUNDTRACK_PLAYTYPE::OneShot);
|
||||
PlaySoundTrack(track, SoundTrackType::OneShot);
|
||||
}
|
||||
|
||||
void PlaySoundTrack(int index, short mask)
|
||||
|
@ -488,7 +488,7 @@ void PlaySoundTrack(int index, short mask)
|
|||
// Check and modify soundtrack map mask, if needed.
|
||||
// If existing mask is unmodified (same activation mask setup), track won't play.
|
||||
|
||||
if (mask && !(SoundTracks[index].Mode == SOUNDTRACK_PLAYTYPE::BGM))
|
||||
if (mask && !(SoundTracks[index].Mode == SoundTrackType::BGM))
|
||||
{
|
||||
int filteredMask = (mask >> 8) & 0x3F;
|
||||
if ((SoundTracks[index].Mask & filteredMask) == filteredMask)
|
||||
|
@ -503,13 +503,13 @@ void PlaySoundTrack(int index, short mask)
|
|||
void StopSoundTracks()
|
||||
{
|
||||
// Do quick fadeouts.
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::OneShot].Channel, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1.0f, SOUND_XFADETIME_ONESHOT);
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1.0f, SOUND_XFADETIME_ONESHOT);
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SoundTrackType::OneShot].Channel, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1.0f, SOUND_XFADETIME_ONESHOT);
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel, BASS_ATTRIB_VOL | BASS_SLIDE_LOG, -1.0f, SOUND_XFADETIME_ONESHOT);
|
||||
|
||||
BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::OneShot].Track = {};
|
||||
BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::OneShot].Channel = NULL;
|
||||
BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Track = {};
|
||||
BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel = NULL;
|
||||
BASS_Soundtrack[(int)SoundTrackType::OneShot].Track = {};
|
||||
BASS_Soundtrack[(int)SoundTrackType::OneShot].Channel = NULL;
|
||||
BASS_Soundtrack[(int)SoundTrackType::BGM].Track = {};
|
||||
BASS_Soundtrack[(int)SoundTrackType::BGM].Channel = NULL;
|
||||
}
|
||||
|
||||
void ClearSoundTrackMasks()
|
||||
|
@ -520,7 +520,7 @@ void ClearSoundTrackMasks()
|
|||
// Returns specified soundtrack type's stem name and playhead position.
|
||||
// To be used with savegames. To restore soundtrack, use PlaySoundtrack function with playhead position passed as 3rd argument.
|
||||
|
||||
std::pair<std::string, QWORD> GetSoundTrackNameAndPosition(SOUNDTRACK_PLAYTYPE type)
|
||||
std::pair<std::string, QWORD> GetSoundTrackNameAndPosition(SoundTrackType type)
|
||||
{
|
||||
auto track = BASS_Soundtrack[(int)type];
|
||||
|
||||
|
@ -533,8 +533,8 @@ std::pair<std::string, QWORD> GetSoundTrackNameAndPosition(SOUNDTRACK_PLAYTYPE t
|
|||
|
||||
static void CALLBACK Sound_FinishOneshotTrack(HSYNC handle, DWORD channel, DWORD data, void* userData)
|
||||
{
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel))
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SOUNDTRACK_PLAYTYPE::BGM].Channel, BASS_ATTRIB_VOL, (float)GlobalMusicVolume / 100.0f, SOUND_XFADETIME_BGM_START);
|
||||
if (BASS_ChannelIsActive(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel))
|
||||
BASS_ChannelSlideAttribute(BASS_Soundtrack[(int)SoundTrackType::BGM].Channel, BASS_ATTRIB_VOL, (float)GlobalMusicVolume / 100.0f, SOUND_XFADETIME_BGM_START);
|
||||
}
|
||||
|
||||
void Sound_FreeSample(int index)
|
||||
|
@ -649,7 +649,7 @@ void Sound_FreeSlot(int index, unsigned int fadeout)
|
|||
}
|
||||
|
||||
SoundSlot[index].Channel = NULL;
|
||||
SoundSlot[index].State = SOUND_STATE::Idle;
|
||||
SoundSlot[index].State = SoundState::Idle;
|
||||
SoundSlot[index].EffectID = -1;
|
||||
}
|
||||
|
||||
|
@ -679,7 +679,7 @@ bool Sound_UpdateEffectPosition(int index, PHD_3DPOS *position, bool force)
|
|||
|
||||
// Reset activity flag, important for looped samples
|
||||
if (BASS_ChannelIsActive(SoundSlot[index].Channel))
|
||||
SoundSlot[index].State = SOUND_STATE::Idle;
|
||||
SoundSlot[index].State = SoundState::Idle;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -704,12 +704,13 @@ void Sound_UpdateScene()
|
|||
// Apply environmental effects
|
||||
|
||||
static int currentReverb = -1;
|
||||
auto roomReverb = g_Level.Rooms[Camera.pos.roomNumber].reverbType;
|
||||
|
||||
if (currentReverb == -1 || g_Level.Rooms[Camera.pos.roomNumber].reverbType != currentReverb)
|
||||
if (currentReverb == -1 || roomReverb != currentReverb)
|
||||
{
|
||||
currentReverb = g_Level.Rooms[Camera.pos.roomNumber].reverbType;
|
||||
if (currentReverb < (int)REVERB_TYPE::Count)
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SOUND_FILTER::Reverb], &BASS_ReverbTypes[currentReverb]);
|
||||
currentReverb = roomReverb;
|
||||
if (currentReverb < (int)ReverbType::Count)
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SoundFilter::Reverb], &BASS_ReverbTypes[(int)currentReverb]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < SOUND_MAX_CHANNELS; i++)
|
||||
|
@ -721,14 +722,14 @@ void Sound_UpdateScene()
|
|||
// Stop and clean up sounds which were in ending state in previous frame.
|
||||
// In case sound is looping, make it ending unless they are re-fired in next frame.
|
||||
|
||||
if (SoundSlot[i].State == SOUND_STATE::Ending)
|
||||
if (SoundSlot[i].State == SoundState::Ending)
|
||||
{
|
||||
SoundSlot[i].State = SOUND_STATE::Ended;
|
||||
SoundSlot[i].State = SoundState::Ended;
|
||||
Sound_FreeSlot(i, SOUND_XFADETIME_CUTSOUND);
|
||||
continue;
|
||||
}
|
||||
else if ((SOUND_PLAYTYPE)(sampleInfo->Flags & 3) == SOUND_PLAYTYPE::Looped)
|
||||
SoundSlot[i].State = SOUND_STATE::Ending;
|
||||
else if ((SoundPlayMode)(sampleInfo->Flags & 3) == SoundPlayMode::Looped)
|
||||
SoundSlot[i].State = SoundState::Ending;
|
||||
|
||||
// Calculate attenuation and clean up sounds which are out of listener range (only for 3D sounds).
|
||||
|
||||
|
@ -807,20 +808,20 @@ void Sound_Init()
|
|||
return;
|
||||
|
||||
// Initialize channels and tracks array
|
||||
ZeroMemory(BASS_Soundtrack, (sizeof(HSTREAM) * (int)SOUNDTRACK_PLAYTYPE::Count));
|
||||
ZeroMemory(BASS_Soundtrack, (sizeof(HSTREAM) * (int)SoundTrackType::Count));
|
||||
ZeroMemory(SoundSlot, (sizeof(SoundEffectSlot) * SOUND_MAX_CHANNELS));
|
||||
|
||||
// Attach reverb effect to 3D channel
|
||||
BASS_FXHandler[(int)SOUND_FILTER::Reverb] = BASS_ChannelSetFX(BASS_3D_Mixdown, BASS_FX_BFX_FREEVERB, 0);
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SOUND_FILTER::Reverb], &BASS_ReverbTypes[(int)REVERB_TYPE::Outside]);
|
||||
BASS_FXHandler[(int)SoundFilter::Reverb] = BASS_ChannelSetFX(BASS_3D_Mixdown, BASS_FX_BFX_FREEVERB, 0);
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SoundFilter::Reverb], &BASS_ReverbTypes[(int)ReverbType::Outside]);
|
||||
|
||||
if (Sound_CheckBASSError("Attaching environmental FX", true))
|
||||
return;
|
||||
|
||||
// Apply slight compression to 3D channel
|
||||
BASS_FXHandler[(int)SOUND_FILTER::Compressor] = BASS_ChannelSetFX(BASS_3D_Mixdown, BASS_FX_BFX_COMPRESSOR2, 1);
|
||||
BASS_FXHandler[(int)SoundFilter::Compressor] = BASS_ChannelSetFX(BASS_3D_Mixdown, BASS_FX_BFX_COMPRESSOR2, 1);
|
||||
auto comp = BASS_BFX_COMPRESSOR2{ 4.0f, -18.0f, 1.5f, 10.0f, 100.0f, -1 };
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SOUND_FILTER::Compressor], &comp);
|
||||
BASS_FXSetParameters(BASS_FXHandler[(int)SoundFilter::Compressor], &comp);
|
||||
|
||||
if (Sound_CheckBASSError("Attaching compressor", true))
|
||||
return;
|
||||
|
@ -855,13 +856,13 @@ bool Sound_CheckBASSError(const char* message, bool verbose, ...)
|
|||
|
||||
void SayNo()
|
||||
{
|
||||
SoundEffect(SFX_TR4_LARA_NO, NULL, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_NO, NULL, SoundEnvironment::Always);
|
||||
}
|
||||
|
||||
void PlaySecretTrack()
|
||||
{
|
||||
// Secret soundtrack should be always last one on a list.
|
||||
PlaySoundTrack(SoundTracks.at(SecretSoundIndex).Name, SOUNDTRACK_PLAYTYPE::OneShot);
|
||||
PlaySoundTrack(SoundTracks.at(SecretSoundIndex).Name, SoundTrackType::OneShot);
|
||||
}
|
||||
|
||||
int GetShatterSound(int shatterID)
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
#include "Game/control/control.h"
|
||||
#include "Sound/sound_effects.h"
|
||||
|
||||
constexpr auto SFX_ALWAYS = 2;
|
||||
constexpr auto SOUND_BASS_UNITS = 1.0f / 1024.0f; // TR->BASS distance unit coefficient
|
||||
constexpr auto SOUND_MAXVOL_RADIUS = 1024.0f; // Max. volume hearing distance
|
||||
constexpr auto SOUND_OMNIPRESENT_ORIGIN = Vector3(1.17549e-038f, 1.17549e-038f, 1.17549e-038f);
|
||||
|
@ -26,22 +25,24 @@ constexpr auto SOUND_XFADETIME_ONESHOT = 200;
|
|||
constexpr auto SOUND_XFADETIME_CUTSOUND = 100;
|
||||
constexpr auto SOUND_XFADETIME_HIJACKSOUND = 50;
|
||||
constexpr auto SOUND_BGM_DAMP_COEFFICIENT = 0.5f;
|
||||
constexpr auto SOUND_MIN_PARAM_MULTIPLIER = 0.05f;
|
||||
constexpr auto SOUND_MAX_PARAM_MULTIPLIER = 5.0f;
|
||||
|
||||
enum class SOUNDTRACK_PLAYTYPE
|
||||
enum class SoundTrackType
|
||||
{
|
||||
OneShot,
|
||||
BGM,
|
||||
Count
|
||||
};
|
||||
|
||||
enum class SOUND_PLAYCONDITION
|
||||
enum class SoundEnvironment
|
||||
{
|
||||
LandAndWater = 0,
|
||||
Land = (1 << 14),
|
||||
Water = (2 << 14)
|
||||
Land,
|
||||
Water,
|
||||
Always
|
||||
};
|
||||
|
||||
enum class SOUND_PLAYTYPE
|
||||
enum class SoundPlayMode
|
||||
{
|
||||
Normal,
|
||||
Wait,
|
||||
|
@ -49,7 +50,7 @@ enum class SOUND_PLAYTYPE
|
|||
Looped
|
||||
};
|
||||
|
||||
enum class REVERB_TYPE
|
||||
enum class ReverbType
|
||||
{
|
||||
Outside, // 0x00 no reverberation
|
||||
Small, // 0x01 little reverberation
|
||||
|
@ -59,14 +60,14 @@ enum class REVERB_TYPE
|
|||
Count
|
||||
};
|
||||
|
||||
enum class SOUND_STATE
|
||||
enum class SoundState
|
||||
{
|
||||
Idle,
|
||||
Ending,
|
||||
Ended
|
||||
};
|
||||
|
||||
enum class SOUND_FILTER
|
||||
enum class SoundFilter
|
||||
{
|
||||
Reverb,
|
||||
Compressor,
|
||||
|
@ -76,7 +77,7 @@ enum class SOUND_FILTER
|
|||
|
||||
struct SoundEffectSlot
|
||||
{
|
||||
SOUND_STATE State;
|
||||
SoundState State;
|
||||
short EffectID;
|
||||
float Gain;
|
||||
HCHANNEL Channel;
|
||||
|
@ -102,7 +103,7 @@ struct SampleInfo
|
|||
struct SoundTrackInfo
|
||||
{
|
||||
std::string Name{};
|
||||
SOUNDTRACK_PLAYTYPE Mode{ SOUNDTRACK_PLAYTYPE::OneShot };
|
||||
SoundTrackType Mode{ SoundTrackType::OneShot };
|
||||
int Mask{ 0 };
|
||||
};
|
||||
|
||||
|
@ -110,7 +111,7 @@ extern std::map<std::string, int> SoundTrackMap;
|
|||
extern std::unordered_map<int, SoundTrackInfo> SoundTracks;
|
||||
extern int SecretSoundIndex;
|
||||
|
||||
long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags = ENV_FLAG_NONE, float pitchMultiplier = 1.0f, float gainMultiplier = 1.0f);
|
||||
long SoundEffect(int effectID, PHD_3DPOS* position, SoundEnvironment condition = SoundEnvironment::Land, float pitchMultiplier = 1.0f, float gainMultiplier = 1.0f);
|
||||
void StopSoundEffect(short effectID);
|
||||
bool LoadSample(char *buffer, int compSize, int uncompSize, int currentIndex);
|
||||
void FreeSamples();
|
||||
|
@ -118,7 +119,7 @@ void StopAllSounds();
|
|||
void PauseAllSounds();
|
||||
void ResumeAllSounds();
|
||||
|
||||
void PlaySoundTrack(std::string trackName, SOUNDTRACK_PLAYTYPE mode, QWORD position = 0);
|
||||
void PlaySoundTrack(std::string trackName, SoundTrackType mode, QWORD position = 0);
|
||||
void PlaySoundTrack(std::string trackName, short mask = 0);
|
||||
void PlaySoundTrack(int index, short mask = 0);
|
||||
void StopSoundTracks();
|
||||
|
@ -129,7 +130,7 @@ void PlaySoundSources();
|
|||
int GetShatterSound(int shatterID);
|
||||
void EnumerateLegacyTracks();
|
||||
|
||||
std::pair<std::string, QWORD> GetSoundTrackNameAndPosition(SOUNDTRACK_PLAYTYPE type);
|
||||
std::pair<std::string, QWORD> GetSoundTrackNameAndPosition(SoundTrackType type);
|
||||
|
||||
static void CALLBACK Sound_FinishOneshotTrack(HSYNC handle, DWORD channel, DWORD data, void* userData);
|
||||
|
||||
|
|
|
@ -477,7 +477,7 @@ enum SOUND_EFFECTS
|
|||
SFX_TR1_PIERRE_DEATH = 471,
|
||||
SFX_TR1_PIERRE_SPEECH = 472,
|
||||
SFX_TR1_PIERRE_MAGNUM_FIRE = 473,
|
||||
//Tomb Raider 2 Sounds
|
||||
//Tomb Raider 2 Sounds
|
||||
SFX_TR2_LARA_M16_FIRE = 474,
|
||||
SFX_TR2_LARA_M16_STOP = 475,
|
||||
SFX_TR2_HENCHMAN_BELT_JINGLE = 476,
|
||||
|
@ -540,10 +540,10 @@ enum SOUND_EFFECTS
|
|||
SFX_TR2_EAGLE_SQUAWK = 533,
|
||||
SFX_TR2_EAGLE_WING_FLAP = 534,
|
||||
SFX_TR2_EAGLE_DEATH = 535,
|
||||
SFX_TR3_CROW_CAW = 536,
|
||||
SFX_TR3_CROW_WING_FLAP = 537,
|
||||
SFX_TR3_CROW_DEATH = 538,
|
||||
SFX_TR3_CROW_ATTACK = 539,
|
||||
SFX_TR2_CROW_CAW = 536,
|
||||
SFX_TR2_CROW_WING_FLAP = 537,
|
||||
SFX_TR2_CROW_DEATH = 538,
|
||||
SFX_TR2_CROW_ATTACK = 539,
|
||||
SFX_TR2_YETI_CHEST_BEAT = 540,
|
||||
SFX_TR2_YETI_FEET = 541,
|
||||
SFX_TR2_YETI_GROWL = 542,
|
||||
|
@ -594,25 +594,25 @@ enum SOUND_EFFECTS
|
|||
SFX_TR2_WARRIOR_SWORD_SLICE = 587,
|
||||
SFX_TR2_WARRIOR_WAKE = 588,
|
||||
SFX_TR2_WARRIOR_BURP = 589,
|
||||
SFX_TR3_SCUBA_DIVER_ARM = 590,
|
||||
SFX_TR3_SCUBA_DIVER_BREATH_LAND = 591,
|
||||
SFX_TR3_SCUBA_DIVER_BREATH_WATER = 592,
|
||||
SFX_TR3_SCUBA_DIVER_DEATH = 593,
|
||||
SFX_TR3_SCUBA_DIVER_DIVING = 594,
|
||||
SFX_TR3_SCUBA_DIVER_FLIPPER = 595,
|
||||
SFX_TR2_SCUBA_DIVER_ARM = 590,
|
||||
SFX_TR2_SCUBA_DIVER_BREATH_LAND = 591,
|
||||
SFX_TR2_SCUBA_DIVER_BREATH_WATER = 592,
|
||||
SFX_TR2_SCUBA_DIVER_DEATH = 593,
|
||||
SFX_TR2_SCUBA_DIVER_DIVING = 594,
|
||||
SFX_TR2_SCUBA_DIVER_FLIPPER = 595,
|
||||
SFX_TR2_SHARK_BITE = 596,
|
||||
SFX_TR3_WINSTON_BRUSH_OFF = 597,
|
||||
SFX_TR3_WINSTON_BULLET_TRAY = 598,
|
||||
SFX_TR3_WINSTON_CUPS = 599,
|
||||
SFX_TR3_WINSTON_FLATULENCE = 600,
|
||||
SFX_TR3_WINSTON_FOOTSTEPS = 601,
|
||||
SFX_TR3_WINSTON_GET_UP = 602,
|
||||
SFX_TR3_WINSTON_SURPRISED = 603,
|
||||
SFX_TR3_WINSTON_TAKE_HIT = 604,
|
||||
SFX_TR3_WINSTON_GRUNT1 = 605,
|
||||
SFX_TR3_WINSTON_GRUNT2 = 606,
|
||||
SFX_TR3_WINSTON_GRUNT3 = 607,
|
||||
SFX_TR3_WINSTON_SHUFFLE = 608,
|
||||
SFX_TR2_WINSTON_BRUSH_OFF = 597,
|
||||
SFX_TR2_WINSTON_BULLET_TRAY = 598,
|
||||
SFX_TR2_WINSTON_CUPS = 599,
|
||||
SFX_TR2_WINSTON_FLATULENCE = 600,
|
||||
SFX_TR2_WINSTON_FOOTSTEPS = 601,
|
||||
SFX_TR2_WINSTON_GET_UP = 602,
|
||||
SFX_TR2_WINSTON_SURPRISED = 603,
|
||||
SFX_TR2_WINSTON_TAKE_HIT = 604,
|
||||
SFX_TR2_WINSTON_GRUNT1 = 605,
|
||||
SFX_TR2_WINSTON_GRUNT2 = 606,
|
||||
SFX_TR2_WINSTON_GRUNT3 = 607,
|
||||
SFX_TR2_WINSTON_SHUFFLE = 608,
|
||||
SFX_TR2_SPEEDBOAT_ACCELERATE = 609,
|
||||
SFX_TR2_SPEEDBOAT_ENGINE = 610,
|
||||
SFX_TR2_SPEEDBOAT_HIT = 611,
|
||||
|
@ -688,7 +688,7 @@ enum SOUND_EFFECTS
|
|||
SFX_TR2_SLAM_DOOR_CLOSE = 681,
|
||||
SFX_TR2_SWINGING = 682,
|
||||
SFX_TR2_SWINGING_TRAP = 683,
|
||||
//Tomb Raider 3 Sounds
|
||||
//Tomb Raider 3 Sounds
|
||||
SFX_TR3_TONY_ATTACK = 684,
|
||||
SFX_TR3_TONY_LAUGH = 685,
|
||||
SFX_TR3_TONY_NORMAL_DEATH = 686,
|
||||
|
@ -910,232 +910,232 @@ enum SOUND_EFFECTS
|
|||
SFX_TR5_AGENT_HITMAN_FEET = 901,
|
||||
SFX_TR5_AGENT_HITMAN_JUMP = 902,
|
||||
SFX_TR5_AGENT_HITMAN_LAND = 903,
|
||||
SFX_TR5_SCIENTIST_DONT_SHOOT = 904 ,
|
||||
SFX_TR5_VCI_BLUEMAN_GUNS = 905 ,
|
||||
SFX_TR5_VCI_BLUEMAN_CHAIRHIT = 906 ,
|
||||
SFX_TR5_VCI_BLUEMAN_GETUP = 907 ,
|
||||
SFX_TR5_VCI_BLUEMAN_HITDIE = 908 ,
|
||||
SFX_TR5_VCI_BLUEMAN_JUMP = 909 ,
|
||||
SFX_TR5_VCI_BLUEMAN_CHAIR = 910 ,
|
||||
SFX_TR5_VCI_BLUEMAN_CONSOLE = 911 ,
|
||||
SFX_TR5_CHEF_ATTACK = 912 ,
|
||||
SFX_TR5_HYDRA_ATTACK = 913 ,
|
||||
SFX_TR5_SCIENTIST_DONT_SHOOT = 904,
|
||||
SFX_TR5_VCI_BLUEMAN_GUNS = 905,
|
||||
SFX_TR5_VCI_BLUEMAN_CHAIRHIT = 906,
|
||||
SFX_TR5_VCI_BLUEMAN_GETUP = 907,
|
||||
SFX_TR5_VCI_BLUEMAN_HITDIE = 908,
|
||||
SFX_TR5_VCI_BLUEMAN_JUMP = 909,
|
||||
SFX_TR5_VCI_BLUEMAN_CHAIR = 910,
|
||||
SFX_TR5_VCI_BLUEMAN_CONSOLE = 911,
|
||||
SFX_TR5_CHEF_ATTACK = 912,
|
||||
SFX_TR5_HYDRA_ATTACK = 913,
|
||||
SFX_TR5_HYDRA_BREATHE = 914,
|
||||
SFX_TR5_HYDRA_BREATHEOUT = 915 ,
|
||||
SFX_TR5_HYDRA_FIRE = 916 ,
|
||||
SFX_TR5_xTOR_ATTACK = 917 ,
|
||||
SFX_TR5_GLADIATOR_DEATH = 918 ,
|
||||
SFX_TR5_GLADIATOR_FEET = 919 ,
|
||||
SFX_TR5_GLADIATOR_SHIELD1 = 920 ,
|
||||
SFX_TR5_GLADIATOR_SHIELD2 = 921 ,
|
||||
SFX_TR5_GLADIATOR_SWORD = 922 ,
|
||||
SFX_TR5_GOD_HEAD_BLAST = 923 ,
|
||||
SFX_TR5_GOD_HEAD_CHARGE = 924 ,
|
||||
SFX_TR5_GOD_HEAD_LASERLOOPS = 925 ,
|
||||
SFX_TR5_GOD_HEAD_TENTACLES = 926 ,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER_HIT = 927 ,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER_MED = 928 ,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER= 929 ,
|
||||
SFX_TR5_HAMMER_GOD_PULSE = 930 ,
|
||||
SFX_TR5_HANGMAN_LAUGH_OFFCAM = 931 ,
|
||||
SFX_TR5_HITMAN_CHOKE = 932 ,
|
||||
SFX_TR5_HITMAN_ELECSHORT = 933 ,
|
||||
SFX_TR5_HITMAN_GUNSEND = 934 ,
|
||||
SFX_TR5_HITMAN_GUNSFIRE = 935 ,
|
||||
SFX_TR5_IMP_ATTACK = 936 ,
|
||||
SFX_TR5_IMP_BARRELDROP = 937 ,
|
||||
SFX_TR5_IMP_BARRELROLL = 938 ,
|
||||
SFX_TR5_IMP_DEATH = 939 ,
|
||||
SFX_TR5_IMP_FALL = 940 ,
|
||||
SFX_TR5_IMP_FEET = 941 ,
|
||||
SFX_TR5_IMP_LAUGH = 942 ,
|
||||
SFX_TR5_IMP_RUNAWAY = 943 ,
|
||||
SFX_TR5_IMP_STONEHIT = 944 ,
|
||||
SFX_TR5_DIVE_SUIT_ENGINE = 945 ,
|
||||
SFX_TR5_DIVE_SUIT_HIT = 946 ,
|
||||
SFX_TR5_DIVE_SUIT_BREATHE = 947 ,
|
||||
SFX_TR5_DIVE_SUIT_LOOP = 948 ,
|
||||
SFX_TR5_MAFIA_DEATH = 949 ,
|
||||
SFX_TR5_MAFIA_GETDOWN = 950 ,
|
||||
SFX_TR5_MAFIA_HIT = 951 ,
|
||||
SFX_TR5_MAFIA_JUMP = 952 ,
|
||||
SFX_TR5_SWORD_GOD_SWORDDEATH1 = 953 ,
|
||||
SFX_TR5_SWORD_GOD_FALL = 954 ,
|
||||
SFX_TR5_SWORD_GOD_FEET = 955 ,
|
||||
SFX_TR5_SWORD_GOD_FEETQUIET = 956 ,
|
||||
SFX_TR5_SWORD_GOD_FEETVERYQUIET = 957 ,
|
||||
SFX_TR5_SWORD_GOD_HITMETAL = 958 ,
|
||||
SFX_TR5_SWORD_GOD_LASER = 959 ,
|
||||
SFX_TR5_SWORD_GOD_SCREAM = 960 ,
|
||||
SFX_TR5_SWORD_GOD_SWORD = 961 ,
|
||||
SFX_TR5_SHOCKWAVE_RUMBLE = 962 ,
|
||||
SFX_TR5_SKELETON_GHOST_APPEAR = 963 ,
|
||||
SFX_TR5_SKELETONGHOST_ATTACK = 964 ,
|
||||
SFX_TR5_SNIPER_RIFLE = 965 ,
|
||||
SFX_TR5_WEREWOLF_ATTACK1 = 966 ,
|
||||
SFX_TR5_WEREWOLF_ATTACK2 = 967 ,
|
||||
SFX_TR5_WEREWOLF_DEATH = 968 ,
|
||||
SFX_TR5_WEREWOLF_DROP = 969 ,
|
||||
SFX_TR5_WEREWOLF_HIND_FEET = 970 ,
|
||||
SFX_TR5_WEREWOLF_FORE_FEET = 971 ,
|
||||
SFX_TR5_WEREWOLF_JUMP = 972 ,
|
||||
SFX_TR5_WILLOW_WISP_LOOP = 973 ,
|
||||
SFX_TR5_SWAMPY_ATTACK = 974 ,
|
||||
SFX_TR5_LION_ATTACK = 975 ,
|
||||
SFX_TR5_LION_DEATH = 976 ,
|
||||
SFX_TR5_LION_FEET = 977 ,
|
||||
SFX_TR5_LION_GROWL = 978 ,
|
||||
SFX_TR5_LION_HIT_FLOOR = 979 ,
|
||||
SFX_TR5_GUARD_SNORE_INHALE = 980 ,
|
||||
SFX_TR5_GUARD_SNORE_EXHALE = 981 ,
|
||||
SFX_TR5_INSECTS = 982 ,
|
||||
SFX_TR5_KEYPAD_HASH = 983 ,
|
||||
SFX_TR5_KEYPAD_ASTERISK = 984 ,
|
||||
SFX_TR5_KEYPAD_0 = 985 ,
|
||||
SFX_TR5_KEYPAD_1 = 986 ,
|
||||
SFX_TR5_KEYPAD_2 = 987 ,
|
||||
SFX_TR5_KEYPAD_3 = 988 ,
|
||||
SFX_TR5_KEYPAD_4 = 989 ,
|
||||
SFX_TR5_KEYPAD_5 = 990 ,
|
||||
SFX_TR5_KEYPAD_6= 991 ,
|
||||
SFX_TR5_KEYPAD_7 = 992 ,
|
||||
SFX_TR5_KEYPAD_8 = 993 ,
|
||||
SFX_TR5_KEYPAD_9 = 994 ,
|
||||
SFX_TR5_KEYPAD_ENTRY_NO = 995 ,
|
||||
SFX_TR5_KEYPAD_ENTRY_YES = 996 ,
|
||||
SFX_TR5_GRILL_1 = 997 ,
|
||||
SFX_TR5_GRILL_2 = 998 ,
|
||||
SFX_TR5_GRILL_3 = 999 ,
|
||||
SFX_TR5_COMPUTER_BEEPIES = 1000 ,
|
||||
SFX_TR5_ELECTRIC_LIGHT_CRACKLES = 1001 ,
|
||||
SFX_TR5_ELECTRIC_WIRES = 1002 ,
|
||||
SFX_TR5_WATER_WHEEL = 1003 ,
|
||||
SFX_TR5_AUTO_GUN_DOOR = 1004 ,
|
||||
SFX_TR5_AUTO_GUN_UNFOLD = 1005 ,
|
||||
SFX_TR5_BARN_DOOR_NORMAL = 1006 ,
|
||||
SFX_TR5_BARN_DOOR_SLAM = 1007 ,
|
||||
SFX_TR5_BATTERING_RAM_CREAK = 1008 ,
|
||||
SFX_TR5_BELL = 1009 ,
|
||||
SFX_TR5_BIO_BREATHE_OUT = 1010 ,
|
||||
SFX_TR5_BOATMILL_1 = 1011 ,
|
||||
SFX_TR5_BOATMILL_2 = 1012 ,
|
||||
SFX_TR5_CABINETCLOSEWOOD = 1013 ,
|
||||
SFX_TR5_CABINETOPENWOOD = 1014 ,
|
||||
SFX_TR5_CABINETSHUT = 1015 ,
|
||||
SFX_TR5_COG = 1016 ,
|
||||
SFX_TR5_COGS_ROME = 1017 ,
|
||||
SFX_TR5_CRANE = 1018 ,
|
||||
SFX_TR5_SCIENTIST_SUIT_DOOR_END = 1019 ,
|
||||
SFX_TR5_CAGE_OPEN = 1020 ,
|
||||
SFX_TR5_METAL_KICK_OPEN = 1021 ,
|
||||
SFX_TR5_METAL_CROWBAR_DOOR = 1022 ,
|
||||
SFX_TR5_METAL_CROWBAR_DOOR_OPEN = 1023 ,
|
||||
SFX_TR5_METAL_OPEN = 1024 ,
|
||||
SFX_TR5_SWIPECARD_SFX = 1025 ,
|
||||
SFX_TR5_DRAWERS_METALCLOSE = 1026 ,
|
||||
SFX_TR5_DRAWERS_METALOPEN = 1027 ,
|
||||
SFX_TR5_DRAWERS_WOOD_CLOSE = 1028 ,
|
||||
SFX_TR5_DRAWERS_WOOD_OPEN = 1029 ,
|
||||
SFX_TR5_FIRE_EXTINGUISHER_RICOCHET = 1030 ,
|
||||
SFX_TR5_FIREDOOR = 1031 ,
|
||||
SFX_TR5_FISH_TANK_WATER = 1032 ,
|
||||
SFX_TR5_FLOOR_DOOR_A = 1033 ,
|
||||
SFX_TR5_FLOOR_DOOR_B = 1034 ,
|
||||
SFX_TR5_GEN_STONE_DOOR_LOW=1035,
|
||||
SFX_TR5_GENSWORD_SWOOSH_LOW=1036,
|
||||
SFX_TR5_GENERATOR_HUML_LOOP=1037,
|
||||
SFX_TR5_GENERIC_BOOTSTEPS=1038,
|
||||
SFX_TR5_GENERIC_KNEES_FALL=1039,
|
||||
SFX_TR5_GENERIC_SQK_SLOW=1040,
|
||||
SFX_TR5_GENERIC_SQKS_NONRND=1041,
|
||||
SFX_TR5_BASE_CLAW_DROP=1042,
|
||||
SFX_TR5_BASE_CLAW_CRASH=1043,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_A =1044,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_B_LOOP =1045,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_C =1046,
|
||||
SFX_TR5_BASE_CLAW_TOP_IMPACT=1047,
|
||||
SFX_TR5_BASE_CLAW_WINCH_LOOP=1048,
|
||||
SFX_TR5_BASE_CLAW_HANGAR_DOOR_OPEN=1049,
|
||||
SFX_TR5_HISS_LOOP_SMALL=1050,
|
||||
SFX_TR5_HOLOGRAM=1051,
|
||||
SFX_TR5_INDUSTRY_AMBIENCE_LOOP=1052,
|
||||
SFX_TR5_IRIS_ELEC=1053,
|
||||
SFX_TR5_CRANE_END=1054,
|
||||
SFX_TR5_KITCHEN_HOB_LOOP=1055,
|
||||
SFX_TR5_KLAXON=1056,
|
||||
SFX_TR5_LASER_LOOP=1057,
|
||||
SFX_TR5_LIFT_BRAKES_SQUEAL=1058,
|
||||
SFX_TR5_LIFT_DOORS=1059,
|
||||
SFX_TR5_LIFT_HIT_FLOOR1=1060,
|
||||
SFX_TR5_LIFT_HIT_FLOOR2=1061,
|
||||
SFX_TR5_LIFT_MOVE=1062,
|
||||
SFX_TR5_LIFT_MOVE_BROKEN=1063,
|
||||
SFX_TR5_LOCKER_CLOSE=1064,
|
||||
SFX_TR5_LOCKER_OPEN=1065,
|
||||
SFX_TR5_LOW_RUMBLE_LOWER=1066,
|
||||
SFX_TR5_METAL_CABINET_CLOSE_1=1067,
|
||||
SFX_TR5_METAL_CABINET_CLOSE_2=1068,
|
||||
SFX_TR5_METAL_DOOR_OPEN_1=1069,
|
||||
SFX_TR5_METAL_DOOR_OPEN_2=1070,
|
||||
SFX_TR5_MODEM_LOOP=1071,
|
||||
SFX_TR5_OFFICE_DOOR_CLOSE=1072,
|
||||
SFX_TR5_OFFICE_DOOR_OPEN=1073,
|
||||
SFX_TR5_OFFICE_DOOR_SQUEAK=1074,
|
||||
SFX_TR5_PORTAL_LOOP=1075,
|
||||
SFX_TR5_POUR_DUST=1076,
|
||||
SFX_TR5_HITECH_ROOM_LOOP=1077,
|
||||
SFX_TR5_XRAY_ROOM_LOOP=1078,
|
||||
SFX_TR5_RATS=1079,
|
||||
SFX_TR5_RATS_SPLASH=1080,
|
||||
SFX_TR5_RAVEN_SWITCH_EXPLODE=1081,
|
||||
SFX_TR5_DOOR_BEAM=1082,
|
||||
SFX_TR5_LOWER_BEAM=1083,
|
||||
SFX_TR5_ENERGY_BEAM=1084,
|
||||
SFX_TR5_TARGET_RISE=1085,
|
||||
SFX_TR5_SEARCHER=1086,
|
||||
SFX_TR5_SERVO_01=1087,
|
||||
SFX_TR5_SERVO_02=1088,
|
||||
SFX_TR5_SHOWER_LOOP=1089,
|
||||
SFX_TR5_SLIDE_DOOR=1090,
|
||||
SFX_TR5_SMALL_METAL_VENT_HINGE=1091,
|
||||
SFX_TR5_SMASH_GLASS=1092,
|
||||
SFX_TR5_SMASH_METAL=1093,
|
||||
SFX_TR5_SMASH_ROCK=1094,
|
||||
SFX_TR5_SMASH_WOOD=1095,
|
||||
SFX_TR5_PHILOSPHERS_STONE=1096,
|
||||
SFX_TR5_STAIR_BANISTER_BEND=1097,
|
||||
SFX_TR5_STAIR_SNAP=1098,
|
||||
SFX_TR5_SUBCONTROL_ROOM_LOOP=1099,
|
||||
SFX_TR5_SWITCH_ELEC_SWAP=1100,
|
||||
SFX_TR5_TELEPORT=1101,
|
||||
SFX_TR5_TELEPORT_CRACKLES=1102,
|
||||
SFX_TR5_TELEPORT_FLASH=1103,
|
||||
SFX_TR5_THUNDER_RUMBLE=1104,
|
||||
SFX_TR5_WHITE_NOISE_LOOP=1105,
|
||||
SFX_TR5_UNDERWATER_CHAFF=1106,
|
||||
SFX_TR5_UNDERWATER_DOOR=1107,
|
||||
SFX_TR5_UNDERWATER_EXPLOSION=1108,
|
||||
SFX_TR5_UNDERWATER_FAN=1109,
|
||||
SFX_TR5_UNDERWATER_TORPEDO=1110,
|
||||
SFX_TR5_VCI_DOOR_CLOSE=1111,
|
||||
SFX_TR5_VCI_DOOR_OPEN=1112,
|
||||
SFX_TR5_VENT_IMPACT=1113,
|
||||
SFX_TR5_VENT_STRESS=1114,
|
||||
SFX_TR5_WALL_SUIT_OUT=1115,
|
||||
SFX_TR5_WATER_LAPS_LOOP=1116,
|
||||
SFX_TR5_WELD_THRU_DOOR_LOOP=1117,
|
||||
SFX_TR5_XRAY_SCAN=1118,
|
||||
SFX_TR5_MANHOLE_METAL=1119,
|
||||
SFX_TR5_2GUNTEX_DEATH=1120,
|
||||
SFX_TR5_2GUNTEX_FALL_BIG=1121,
|
||||
SFX_TR5_2GUNTEX_FALL_END=1122,
|
||||
SFX_TR5_2GUNTEX_FEET_LOUD=1123,
|
||||
SFX_TR5_2GUNTEX_FEET_QUIET=1124,
|
||||
SFX_TR5_2GUNTEX_HIT_GUNS=1125,
|
||||
SFX_TR5_2GUNTEX_LASER_FIRE=1126,
|
||||
SFX_TR5_2GUNTEX_DOUBLE_LASER_FIRE=1127,
|
||||
SFX_TR5_2GUNTEX_LASER_MISFIRE=1128,
|
||||
//Custom Footstep Sounds
|
||||
SFX_TR5_HYDRA_BREATHEOUT = 915,
|
||||
SFX_TR5_HYDRA_FIRE = 916,
|
||||
SFX_TR5_TOR_ATTACK = 917,
|
||||
SFX_TR5_GLADIATOR_DEATH = 918,
|
||||
SFX_TR5_GLADIATOR_FEET = 919,
|
||||
SFX_TR5_GLADIATOR_SHIELD1 = 920,
|
||||
SFX_TR5_GLADIATOR_SHIELD2 = 921,
|
||||
SFX_TR5_GLADIATOR_SWORD = 922,
|
||||
SFX_TR5_GOD_HEAD_BLAST = 923,
|
||||
SFX_TR5_GOD_HEAD_CHARGE = 924,
|
||||
SFX_TR5_GOD_HEAD_LASERLOOPS = 925,
|
||||
SFX_TR5_GOD_HEAD_TENTACLES = 926,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER_HIT = 927,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER_MED = 928,
|
||||
SFX_TR5_HAMMER_GOD_HAMMER= 929,
|
||||
SFX_TR5_HAMMER_GOD_PULSE = 930,
|
||||
SFX_TR5_HANGMAN_LAUGH_OFFCAM = 931,
|
||||
SFX_TR5_HITMAN_CHOKE = 932,
|
||||
SFX_TR5_HITMAN_ELECSHORT = 933,
|
||||
SFX_TR5_HITMAN_GUNSEND = 934,
|
||||
SFX_TR5_HITMAN_GUNSFIRE = 935,
|
||||
SFX_TR5_IMP_ATTACK = 936,
|
||||
SFX_TR5_IMP_BARRELDROP = 937,
|
||||
SFX_TR5_IMP_BARRELROLL = 938,
|
||||
SFX_TR5_IMP_DEATH = 939,
|
||||
SFX_TR5_IMP_FALL = 940,
|
||||
SFX_TR5_IMP_FEET = 941,
|
||||
SFX_TR5_IMP_LAUGH = 942,
|
||||
SFX_TR5_IMP_RUNAWAY = 943,
|
||||
SFX_TR5_IMP_STONEHIT = 944,
|
||||
SFX_TR5_DIVE_SUIT_ENGINE = 945,
|
||||
SFX_TR5_DIVE_SUIT_HIT = 946,
|
||||
SFX_TR5_DIVE_SUIT_BREATHE = 947,
|
||||
SFX_TR5_DIVE_SUIT_LOOP = 948,
|
||||
SFX_TR5_MAFIA_DEATH = 949,
|
||||
SFX_TR5_MAFIA_GETDOWN = 950,
|
||||
SFX_TR5_MAFIA_HIT = 951,
|
||||
SFX_TR5_MAFIA_JUMP = 952,
|
||||
SFX_TR5_SWORD_GOD_SWORDDEATH1 = 953,
|
||||
SFX_TR5_SWORD_GOD_FALL = 954,
|
||||
SFX_TR5_SWORD_GOD_FEET = 955,
|
||||
SFX_TR5_SWORD_GOD_FEETQUIET = 956,
|
||||
SFX_TR5_SWORD_GOD_FEETVERYQUIET = 957,
|
||||
SFX_TR5_SWORD_GOD_HITMETAL = 958,
|
||||
SFX_TR5_SWORD_GOD_LASER = 959,
|
||||
SFX_TR5_SWORD_GOD_SCREAM = 960,
|
||||
SFX_TR5_SWORD_GOD_SWORD = 961,
|
||||
SFX_TR5_SHOCKWAVE_RUMBLE = 962,
|
||||
SFX_TR5_SKELETON_GHOST_APPEAR = 963,
|
||||
SFX_TR5_SKELETONGHOST_ATTACK = 964,
|
||||
SFX_TR5_SNIPER_RIFLE = 965,
|
||||
SFX_TR5_WEREWOLF_ATTACK1 = 966,
|
||||
SFX_TR5_WEREWOLF_ATTACK2 = 967,
|
||||
SFX_TR5_WEREWOLF_DEATH = 968,
|
||||
SFX_TR5_WEREWOLF_DROP = 969,
|
||||
SFX_TR5_WEREWOLF_HIND_FEET = 970,
|
||||
SFX_TR5_WEREWOLF_FORE_FEET = 971,
|
||||
SFX_TR5_WEREWOLF_JUMP = 972,
|
||||
SFX_TR5_WILLOW_WISP_LOOP = 973,
|
||||
SFX_TR5_SWAMPY_ATTACK = 974,
|
||||
SFX_TR5_LION_ATTACK = 975,
|
||||
SFX_TR5_LION_DEATH = 976,
|
||||
SFX_TR5_LION_FEET = 977,
|
||||
SFX_TR5_LION_GROWL = 978,
|
||||
SFX_TR5_LION_HIT_FLOOR = 979,
|
||||
SFX_TR5_GUARD_SNORE_INHALE = 980,
|
||||
SFX_TR5_GUARD_SNORE_EXHALE = 981,
|
||||
SFX_TR5_INSECTS = 982,
|
||||
SFX_TR5_KEYPAD_HASH = 983,
|
||||
SFX_TR5_KEYPAD_ASTERISK = 984,
|
||||
SFX_TR5_KEYPAD_0 = 985,
|
||||
SFX_TR5_KEYPAD_1 = 986,
|
||||
SFX_TR5_KEYPAD_2 = 987,
|
||||
SFX_TR5_KEYPAD_3 = 988,
|
||||
SFX_TR5_KEYPAD_4 = 989,
|
||||
SFX_TR5_KEYPAD_5 = 990,
|
||||
SFX_TR5_KEYPAD_6= 991,
|
||||
SFX_TR5_KEYPAD_7 = 992,
|
||||
SFX_TR5_KEYPAD_8 = 993,
|
||||
SFX_TR5_KEYPAD_9 = 994,
|
||||
SFX_TR5_KEYPAD_ENTRY_NO = 995,
|
||||
SFX_TR5_KEYPAD_ENTRY_YES = 996,
|
||||
SFX_TR5_GRILL_1 = 997,
|
||||
SFX_TR5_GRILL_2 = 998,
|
||||
SFX_TR5_GRILL_3 = 999,
|
||||
SFX_TR5_COMPUTER_BEEPIES = 1000,
|
||||
SFX_TR5_ELECTRIC_LIGHT_CRACKLES = 1001,
|
||||
SFX_TR5_ELECTRIC_WIRES = 1002,
|
||||
SFX_TR5_WATER_WHEEL = 1003,
|
||||
SFX_TR5_AUTO_GUN_DOOR = 1004,
|
||||
SFX_TR5_AUTO_GUN_UNFOLD = 1005,
|
||||
SFX_TR5_BARN_DOOR_NORMAL = 1006,
|
||||
SFX_TR5_BARN_DOOR_SLAM = 1007,
|
||||
SFX_TR5_BATTERING_RAM_CREAK = 1008,
|
||||
SFX_TR5_BELL = 1009,
|
||||
SFX_TR5_BIO_BREATHE_OUT = 1010,
|
||||
SFX_TR5_BOATMILL_1 = 1011,
|
||||
SFX_TR5_BOATMILL_2 = 1012,
|
||||
SFX_TR5_CABINETCLOSEWOOD = 1013,
|
||||
SFX_TR5_CABINETOPENWOOD = 1014,
|
||||
SFX_TR5_CABINETSHUT = 1015,
|
||||
SFX_TR5_COG = 1016,
|
||||
SFX_TR5_COGS_ROME = 1017,
|
||||
SFX_TR5_CRANE = 1018,
|
||||
SFX_TR5_SCIENTIST_SUIT_DOOR_END = 1019,
|
||||
SFX_TR5_CAGE_OPEN = 1020,
|
||||
SFX_TR5_METAL_KICK_OPEN = 1021,
|
||||
SFX_TR5_METAL_CROWBAR_DOOR = 1022,
|
||||
SFX_TR5_METAL_CROWBAR_DOOR_OPEN = 1023,
|
||||
SFX_TR5_METAL_OPEN = 1024,
|
||||
SFX_TR5_SWIPECARD_SFX = 1025,
|
||||
SFX_TR5_DRAWERS_METALCLOSE = 1026,
|
||||
SFX_TR5_DRAWERS_METALOPEN = 1027,
|
||||
SFX_TR5_DRAWERS_WOOD_CLOSE = 1028,
|
||||
SFX_TR5_DRAWERS_WOOD_OPEN = 1029,
|
||||
SFX_TR5_FIRE_EXTINGUISHER_RICOCHET = 1030,
|
||||
SFX_TR5_FIREDOOR = 1031,
|
||||
SFX_TR5_FISH_TANK_WATER = 1032,
|
||||
SFX_TR5_FLOOR_DOOR_A = 1033,
|
||||
SFX_TR5_FLOOR_DOOR_B = 1034,
|
||||
SFX_TR5_GEN_STONE_DOOR_LOW = 1035,
|
||||
SFX_TR5_GENSWORD_SWOOSH_LOW = 1036,
|
||||
SFX_TR5_GENERATOR_HUML_LOOP = 1037,
|
||||
SFX_TR5_GENERIC_BOOTSTEPS = 1038,
|
||||
SFX_TR5_GENERIC_KNEES_FALL = 1039,
|
||||
SFX_TR5_GENERIC_SQK_SLOW = 1040,
|
||||
SFX_TR5_GENERIC_SQKS_NONRND = 1041,
|
||||
SFX_TR5_BASE_CLAW_DROP = 1042,
|
||||
SFX_TR5_BASE_CLAW_CRASH = 1043,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_A = 1044,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_B_LOOP = 1045,
|
||||
SFX_TR5_BASE_CLAW_MOTOR_C = 1046,
|
||||
SFX_TR5_BASE_CLAW_TOP_IMPACT = 1047,
|
||||
SFX_TR5_BASE_CLAW_WINCH_LOOP = 1048,
|
||||
SFX_TR5_BASE_CLAW_HANGAR_DOOR_OPEN = 1049,
|
||||
SFX_TR5_HISS_LOOP_SMALL = 1050,
|
||||
SFX_TR5_HOLOGRAM = 1051,
|
||||
SFX_TR5_INDUSTRY_AMBIENCE_LOOP = 1052,
|
||||
SFX_TR5_IRIS_ELEC = 1053,
|
||||
SFX_TR5_CRANE_END = 1054,
|
||||
SFX_TR5_KITCHEN_HOB_LOOP = 1055,
|
||||
SFX_TR5_KLAXON = 1056,
|
||||
SFX_TR5_LASER_LOOP = 1057,
|
||||
SFX_TR5_LIFT_BRAKES_SQUEAL = 1058,
|
||||
SFX_TR5_LIFT_DOORS = 1059,
|
||||
SFX_TR5_LIFT_HIT_FLOOR1 = 1060,
|
||||
SFX_TR5_LIFT_HIT_FLOOR2 = 1061,
|
||||
SFX_TR5_LIFT_MOVE = 1062,
|
||||
SFX_TR5_LIFT_MOVE_BROKEN = 1063,
|
||||
SFX_TR5_LOCKER_CLOSE = 1064,
|
||||
SFX_TR5_LOCKER_OPEN = 1065,
|
||||
SFX_TR5_LOW_RUMBLE_LOWER = 1066,
|
||||
SFX_TR5_METAL_CABINET_CLOSE_1 = 1067,
|
||||
SFX_TR5_METAL_CABINET_CLOSE_2 = 1068,
|
||||
SFX_TR5_METAL_DOOR_OPEN_1 = 1069,
|
||||
SFX_TR5_METAL_DOOR_OPEN_2 = 1070,
|
||||
SFX_TR5_MODEM_LOOP = 1071,
|
||||
SFX_TR5_OFFICE_DOOR_CLOSE = 1072,
|
||||
SFX_TR5_OFFICE_DOOR_OPEN = 1073,
|
||||
SFX_TR5_OFFICE_DOOR_SQUEAK = 1074,
|
||||
SFX_TR5_PORTAL_LOOP = 1075,
|
||||
SFX_TR5_POUR_DUST = 1076,
|
||||
SFX_TR5_HITECH_ROOM_LOOP = 1077,
|
||||
SFX_TR5_XRAY_ROOM_LOOP = 1078,
|
||||
SFX_TR5_RATS = 1079,
|
||||
SFX_TR5_RATS_SPLASH = 1080,
|
||||
SFX_TR5_RAVEN_SWITCH_EXPLODE = 1081,
|
||||
SFX_TR5_DOOR_BEAM = 1082,
|
||||
SFX_TR5_LOWER_BEAM = 1083,
|
||||
SFX_TR5_ENERGY_BEAM = 1084,
|
||||
SFX_TR5_TARGET_RISE = 1085,
|
||||
SFX_TR5_SEARCHER = 1086,
|
||||
SFX_TR5_SERVO_01 = 1087,
|
||||
SFX_TR5_SERVO_02 = 1088,
|
||||
SFX_TR5_SHOWER_LOOP = 1089,
|
||||
SFX_TR5_SLIDE_DOOR = 1090,
|
||||
SFX_TR5_SMALL_METAL_VENT_HINGE = 1091,
|
||||
SFX_TR5_SMASH_GLASS = 1092,
|
||||
SFX_TR5_SMASH_METAL = 1093,
|
||||
SFX_TR5_SMASH_ROCK = 1094,
|
||||
SFX_TR5_SMASH_WOOD = 1095,
|
||||
SFX_TR5_PHILOSPHERS_STONE = 1096,
|
||||
SFX_TR5_STAIR_BANISTER_BEND = 1097,
|
||||
SFX_TR5_STAIR_SNAP = 1098,
|
||||
SFX_TR5_SUBCONTROL_ROOM_LOOP = 1099,
|
||||
SFX_TR5_SWITCH_ELEC_SWAP = 1100,
|
||||
SFX_TR5_TELEPORT = 1101,
|
||||
SFX_TR5_TELEPORT_CRACKLES = 1102,
|
||||
SFX_TR5_TELEPORT_FLASH = 1103,
|
||||
SFX_TR5_THUNDER_RUMBLE = 1104,
|
||||
SFX_TR5_WHITE_NOISE_LOOP = 1105,
|
||||
SFX_TR5_UNDERWATER_CHAFF = 1106,
|
||||
SFX_TR5_UNDERWATER_DOOR = 1107,
|
||||
SFX_TR5_UNDERWATER_EXPLOSION = 1108,
|
||||
SFX_TR5_UNDERWATER_FAN = 1109,
|
||||
SFX_TR5_UNDERWATER_TORPEDO = 1110,
|
||||
SFX_TR5_VCI_DOOR_CLOSE = 1111,
|
||||
SFX_TR5_VCI_DOOR_OPEN = 1112,
|
||||
SFX_TR5_VENT_IMPACT = 1113,
|
||||
SFX_TR5_VENT_STRESS = 1114,
|
||||
SFX_TR5_WALL_SUIT_OUT = 1115,
|
||||
SFX_TR5_WATER_LAPS_LOOP = 1116,
|
||||
SFX_TR5_WELD_THRU_DOOR_LOOP = 1117,
|
||||
SFX_TR5_XRAY_SCAN = 1118,
|
||||
SFX_TR5_MANHOLE_METAL = 1119,
|
||||
SFX_TR5_2GUNTEX_DEATH = 1120,
|
||||
SFX_TR5_2GUNTEX_FALL_BIG = 1121,
|
||||
SFX_TR5_2GUNTEX_FALL_END = 1122,
|
||||
SFX_TR5_2GUNTEX_FEET_LOUD = 1123,
|
||||
SFX_TR5_2GUNTEX_FEET_QUIET = 1124,
|
||||
SFX_TR5_2GUNTEX_HIT_GUNS = 1125,
|
||||
SFX_TR5_2GUNTEX_LASER_FIRE = 1126,
|
||||
SFX_TR5_2GUNTEX_DOUBLE_LASER_FIRE = 1127,
|
||||
SFX_TR5_2GUNTEX_LASER_MISFIRE = 1128,
|
||||
//Custom Footstep Sounds
|
||||
SFX_CUSTOM_FOOTSTEP_SOUNDS_1 = 1129,
|
||||
SFX_CUSTOM_FOOTSTEP_SOUNDS_2 = 1130,
|
||||
SFX_CUSTOM_FOOTSTEP_SOUNDS_3 = 1131,
|
||||
|
@ -1144,56 +1144,56 @@ enum SOUND_EFFECTS
|
|||
SFX_CUSTOM_FOOTSTEP_SOUNDS_6 = 1134,
|
||||
SFX_CUSTOM_FOOTSTEP_SOUNDS_7 = 1135,
|
||||
SFX_CUSTOM_FOOTSTEP_SOUNDS_8 = 1136,
|
||||
//Custom Level Builder slots
|
||||
SFX_CUSTOM_1=1137,
|
||||
SFX_CUSTOM_2=1138,
|
||||
SFX_CUSTOM_3=1139,
|
||||
SFX_CUSTOM_4=1140,
|
||||
SFX_CUSTOM_5=1141,
|
||||
SFX_CUSTOM_6=1142,
|
||||
SFX_CUSTOM_7=1143,
|
||||
SFX_CUSTOM_8=1144,
|
||||
SFX_CUSTOM_9=1145,
|
||||
SFX_CUSTOM_10=1146,
|
||||
SFX_CUSTOM_11=1147,
|
||||
SFX_CUSTOM_12=1148,
|
||||
SFX_CUSTOM_13=1149,
|
||||
SFX_CUSTOM_14=1150,
|
||||
SFX_CUSTOM_15=1151,
|
||||
SFX_CUSTOM_16=1152,
|
||||
SFX_CUSTOM_17=1153,
|
||||
SFX_CUSTOM_18=1154,
|
||||
SFX_CUSTOM_19=1155,
|
||||
SFX_CUSTOM_20=1156,
|
||||
SFX_CUSTOM_21=1157,
|
||||
SFX_CUSTOM_22=1158,
|
||||
SFX_CUSTOM_23=1159,
|
||||
SFX_CUSTOM_24=1160,
|
||||
SFX_CUSTOM_25=1161,
|
||||
SFX_CUSTOM_26=1162,
|
||||
SFX_CUSTOM_27=1163,
|
||||
SFX_CUSTOM_28=1164,
|
||||
SFX_CUSTOM_29=1165,
|
||||
SFX_CUSTOM_30=1166,
|
||||
SFX_CUSTOM_31=1167,
|
||||
SFX_CUSTOM_32=1168,
|
||||
SFX_CUSTOM_33=1169,
|
||||
SFX_CUSTOM_34=1170,
|
||||
SFX_CUSTOM_35=1171,
|
||||
SFX_CUSTOM_36=1172,
|
||||
SFX_CUSTOM_37=1173,
|
||||
SFX_CUSTOM_38=1174,
|
||||
SFX_CUSTOM_39=1175,
|
||||
SFX_CUSTOM_40=1176,
|
||||
SFX_CUSTOM_41=1177,
|
||||
SFX_CUSTOM_42=1178,
|
||||
SFX_CUSTOM_43=1179,
|
||||
SFX_CUSTOM_44=1180,
|
||||
SFX_CUSTOM_45=1181,
|
||||
SFX_CUSTOM_46=1182,
|
||||
SFX_CUSTOM_47=1183,
|
||||
SFX_CUSTOM_48=1184,
|
||||
SFX_CUSTOM_49=1185,
|
||||
SFX_CUSTOM_50=1186,
|
||||
NUM_SFX,
|
||||
//Custom Level Builder slots
|
||||
SFX_CUSTOM_1 = 1137,
|
||||
SFX_CUSTOM_2 = 1138,
|
||||
SFX_CUSTOM_3 = 1139,
|
||||
SFX_CUSTOM_4 = 1140,
|
||||
SFX_CUSTOM_5 = 1141,
|
||||
SFX_CUSTOM_6 = 1142,
|
||||
SFX_CUSTOM_7 = 1143,
|
||||
SFX_CUSTOM_8 = 1144,
|
||||
SFX_CUSTOM_9 = 1145,
|
||||
SFX_CUSTOM_10 = 1146,
|
||||
SFX_CUSTOM_11 = 1147,
|
||||
SFX_CUSTOM_12 = 1148,
|
||||
SFX_CUSTOM_13 = 1149,
|
||||
SFX_CUSTOM_14 = 1150,
|
||||
SFX_CUSTOM_15 = 1151,
|
||||
SFX_CUSTOM_16 = 1152,
|
||||
SFX_CUSTOM_17 = 1153,
|
||||
SFX_CUSTOM_18 = 1154,
|
||||
SFX_CUSTOM_19 = 1155,
|
||||
SFX_CUSTOM_20 = 1156,
|
||||
SFX_CUSTOM_21 = 1157,
|
||||
SFX_CUSTOM_22 = 1158,
|
||||
SFX_CUSTOM_23 = 1159,
|
||||
SFX_CUSTOM_24 = 1160,
|
||||
SFX_CUSTOM_25 = 1161,
|
||||
SFX_CUSTOM_26 = 1162,
|
||||
SFX_CUSTOM_27 = 1163,
|
||||
SFX_CUSTOM_28 = 1164,
|
||||
SFX_CUSTOM_29 = 1165,
|
||||
SFX_CUSTOM_30 = 1166,
|
||||
SFX_CUSTOM_31 = 1167,
|
||||
SFX_CUSTOM_32 = 1168,
|
||||
SFX_CUSTOM_33 = 1169,
|
||||
SFX_CUSTOM_34 = 1170,
|
||||
SFX_CUSTOM_35 = 1171,
|
||||
SFX_CUSTOM_36 = 1172,
|
||||
SFX_CUSTOM_37 = 1173,
|
||||
SFX_CUSTOM_38 = 1174,
|
||||
SFX_CUSTOM_39 = 1175,
|
||||
SFX_CUSTOM_40 = 1176,
|
||||
SFX_CUSTOM_41 = 1177,
|
||||
SFX_CUSTOM_42 = 1178,
|
||||
SFX_CUSTOM_43 = 1179,
|
||||
SFX_CUSTOM_44 = 1180,
|
||||
SFX_CUSTOM_45 = 1181,
|
||||
SFX_CUSTOM_46 = 1182,
|
||||
SFX_CUSTOM_47 = 1183,
|
||||
SFX_CUSTOM_48 = 1184,
|
||||
SFX_CUSTOM_49 = 1185,
|
||||
SFX_CUSTOM_50 = 1186,
|
||||
NUM_SFX
|
||||
};
|
||||
|
|
|
@ -255,7 +255,7 @@ int S_UpdateInput()
|
|||
LaraItem->Animation.ActiveState == LS_CRAWL_BACK ||
|
||||
LaraItem->Animation.ActiveState == LS_CRAWL_TO_HANG)
|
||||
{
|
||||
SoundEffect(SFX_TR4_LARA_NO, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_LARA_NO, nullptr, SoundEnvironment::Always);
|
||||
flareNo = true;
|
||||
}
|
||||
else
|
||||
|
@ -386,12 +386,12 @@ int S_UpdateInput()
|
|||
|
||||
Lara.PoisonPotency = 0;
|
||||
LaraItem->HitPoints += LARA_HEALTH_MAX / 2;
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SFX_ALWAYS); // TODO: Fix heal sound not triggering if small medi doesn't top off Lara's health. original tr4/5 issue
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SoundEnvironment::Always); // TODO: Fix heal sound not triggering if small medi doesn't top off Lara's health. original tr4/5 issue
|
||||
|
||||
if (LaraItem->HitPoints > LARA_HEALTH_MAX)
|
||||
{
|
||||
LaraItem->HitPoints = LARA_HEALTH_MAX;
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SoundEnvironment::Always);
|
||||
Statistics.Game.HealthUsed++;
|
||||
}
|
||||
}
|
||||
|
@ -417,7 +417,7 @@ int S_UpdateInput()
|
|||
if (LaraItem->HitPoints > LARA_HEALTH_MAX)
|
||||
{
|
||||
LaraItem->HitPoints = LARA_HEALTH_MAX;
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SFX_ALWAYS);
|
||||
SoundEffect(SFX_TR4_MENU_MEDI, nullptr, SoundEnvironment::Always);
|
||||
Statistics.Game.HealthUsed++;
|
||||
}
|
||||
}
|
||||
|
|
141
enc_temp_folder/89e862afcea7777746b2be68776129c1/room.h
Normal file
141
enc_temp_folder/89e862afcea7777746b2be68776129c1/room.h
Normal file
|
@ -0,0 +1,141 @@
|
|||
#pragma once
|
||||
#include "framework.h"
|
||||
#include "Game/collision/floordata.h"
|
||||
#include "Specific/newtypes.h"
|
||||
#include "Specific/phd_global.h"
|
||||
|
||||
struct TriggerVolume;
|
||||
|
||||
constexpr auto MAX_FLIPMAP = 256;
|
||||
|
||||
struct ROOM_VERTEX
|
||||
{
|
||||
Vector3 position;
|
||||
Vector3 normal;
|
||||
Vector2 textureCoordinates;
|
||||
Vector3 color;
|
||||
int effects;
|
||||
int index;
|
||||
};
|
||||
|
||||
struct ROOM_DOOR
|
||||
{
|
||||
short room;
|
||||
Vector3 normal;
|
||||
Vector3 vertices[4];
|
||||
};
|
||||
|
||||
struct ROOM_LIGHT
|
||||
{
|
||||
int x, y, z; // Position of light, in world coordinates
|
||||
float r, g, b; // Colour of the light
|
||||
float intensity;
|
||||
float in; // Cosine of the IN value for light / size of IN value
|
||||
float out; // Cosine of the OUT value for light / size of OUT value
|
||||
float length; // Range of light
|
||||
float cutoff; // Range of light
|
||||
float dx, dy, dz; // Direction - used only by sun and spot lights
|
||||
byte type;
|
||||
bool castShadows;
|
||||
};
|
||||
|
||||
struct MESH_INFO
|
||||
{
|
||||
PHD_3DPOS pos;
|
||||
short staticNumber;
|
||||
short flags;
|
||||
Vector4 color;
|
||||
short HitPoints;
|
||||
std::string luaName;
|
||||
};
|
||||
|
||||
struct LIGHTINFO
|
||||
{
|
||||
int x; // size=0, offset=0
|
||||
int y; // size=0, offset=4
|
||||
int z; // size=0, offset=8
|
||||
unsigned char Type; // size=0, offset=12
|
||||
unsigned char r; // size=0, offset=13
|
||||
unsigned char g; // size=0, offset=14
|
||||
unsigned char b; // size=0, offset=15
|
||||
short nx; // size=0, offset=16
|
||||
short ny; // size=0, offset=18
|
||||
short nz; // size=0, offset=20
|
||||
short Intensity; // size=0, offset=22
|
||||
unsigned char Inner; // size=0, offset=24
|
||||
unsigned char Outer; // size=0, offset=25
|
||||
short FalloffScale; // size=0, offset=26
|
||||
short Length; // size=0, offset=28
|
||||
short Cutoff; // size=0, offset=30
|
||||
};
|
||||
|
||||
enum RoomEnvFlags
|
||||
{
|
||||
ENV_FLAG_WATER = 0x0001,
|
||||
ENV_FLAG_SWAMP = 0x0004,
|
||||
ENV_FLAG_OUTSIDE = 0x0008,
|
||||
ENV_FLAG_DYNAMIC_LIT = 0x0010,
|
||||
ENV_FLAG_WIND = 0x0020,
|
||||
ENV_FLAG_NOT_NEAR_OUTSIDE = 0x0040,
|
||||
ENV_FLAG_NO_LENSFLARE = 0x0080, // Was quicksand in TR3.
|
||||
ENV_FLAG_MIST = 0x0100,
|
||||
ENV_FLAG_CAUSTICS = 0x0200,
|
||||
ENV_FLAG_UNKNOWN3 = 0x0400,
|
||||
ENV_FLAG_COLD = 0x1000
|
||||
};
|
||||
|
||||
enum StaticMeshFlags : short
|
||||
{
|
||||
SM_VISIBLE = 1,
|
||||
SM_SOLID = 2
|
||||
};
|
||||
|
||||
struct ROOM_INFO
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int z;
|
||||
int minfloor;
|
||||
int maxceiling;
|
||||
std::vector<Vector3> positions;
|
||||
std::vector<Vector3> normals;
|
||||
std::vector<Vector3> colors;
|
||||
std::vector<Vector3> effects;
|
||||
std::vector<BUCKET> buckets;
|
||||
std::vector<ROOM_DOOR> doors;
|
||||
int xSize;
|
||||
int zSize;
|
||||
std::vector<FloorInfo> floor;
|
||||
Vector3 ambient;
|
||||
std::vector<ROOM_LIGHT> lights;
|
||||
std::vector<MESH_INFO> mesh;
|
||||
int flippedRoom;
|
||||
int flags;
|
||||
int meshEffect;
|
||||
int reverbType;
|
||||
int flipNumber;
|
||||
short itemNumber;
|
||||
short fxNumber;
|
||||
bool boundActive;
|
||||
std::vector<TriggerVolume> triggerVolumes;
|
||||
};
|
||||
|
||||
constexpr auto NUM_ROOMS = 1024;
|
||||
constexpr auto NO_ROOM = -1;
|
||||
constexpr auto OUTSIDE_Z = 64;
|
||||
constexpr auto OUTSIDE_SIZE = 1024;
|
||||
|
||||
extern byte FlipStatus;
|
||||
extern int FlipStats[MAX_FLIPMAP];
|
||||
extern int FlipMap[MAX_FLIPMAP];
|
||||
|
||||
void DoFlipMap(short group);
|
||||
void AddRoomFlipItems(ROOM_INFO* room);
|
||||
void RemoveRoomFlipItems(ROOM_INFO* room);
|
||||
bool IsObjectInRoom(short roomNumber, short objectNumber);
|
||||
bool IsPointInRoom(PHD_3DPOS const& pos, int roomNumber);
|
||||
PHD_3DPOS GetRoomCenter(int roomNumber);
|
||||
int IsRoomOutside(int x, int y, int z);
|
||||
std::set<int> GetRoomList(int roomNumber);
|
||||
|
||||
FloorInfo* GetSector(ROOM_INFO* room, int x, int z);
|
Loading…
Add table
Add a link
Reference in a new issue