mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-28 15:57:59 +03:00
Convert FirefliesItemFlags enum to enum class
This commit is contained in:
parent
d21bbc499d
commit
b2570cb3ec
3 changed files with 42 additions and 42 deletions
|
@ -53,15 +53,15 @@ namespace TEN::Effects::Fireflies
|
||||||
|
|
||||||
item.HitPoints = FIREFLY_COUNT_DEFAULT;
|
item.HitPoints = FIREFLY_COUNT_DEFAULT;
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::TargetItemPtr] = item.Index;
|
item.ItemFlags[(int)FirefliesItemFlags::TargetItemPtr] = item.Index;
|
||||||
item.ItemFlags[FirefliesItemFlags::Light] = 1; // 1 = light effect, 0 = no light effect.
|
item.ItemFlags[(int)FirefliesItemFlags::Light] = 1; // 1 = light effect, 0 = no light effect.
|
||||||
item.ItemFlags[FirefliesItemFlags::TriggerFlags] = std::clamp((int)item.TriggerFlags, -FIREFLY_RANGE_MAX, FIREFLY_RANGE_MAX);
|
item.ItemFlags[(int)FirefliesItemFlags::TriggerFlags] = std::clamp((int)item.TriggerFlags, -FIREFLY_RANGE_MAX, FIREFLY_RANGE_MAX);
|
||||||
item.ItemFlags[FirefliesItemFlags::SpawnCounter] = 0;
|
item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter] = 0;
|
||||||
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 0;
|
item.ItemFlags[(int)FirefliesItemFlags::RemoveFliesEffect] = 0;
|
||||||
|
|
||||||
// Firefly IDs with light.
|
// Firefly IDs with light.
|
||||||
item.ItemFlags[FirefliesItemFlags::LightID0] = NO_VALUE;
|
item.ItemFlags[(int)FirefliesItemFlags::LightID0] = NO_VALUE;
|
||||||
item.ItemFlags[FirefliesItemFlags::LightID1] = NO_VALUE;
|
item.ItemFlags[(int)FirefliesItemFlags::LightID1] = NO_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpawnFireflySwarm(ItemInfo& item, int triggerFlags)
|
void SpawnFireflySwarm(ItemInfo& item, int triggerFlags)
|
||||||
|
@ -114,7 +114,7 @@ namespace TEN::Effects::Fireflies
|
||||||
// TODO: Demagic.
|
// TODO: Demagic.
|
||||||
firefly.Life = Random::GenerateFloat(1.0f, 400.0f);
|
firefly.Life = Random::GenerateFloat(1.0f, 400.0f);
|
||||||
|
|
||||||
firefly.TargetItem = &g_Level.Items[item.ItemFlags[FirefliesItemFlags::TargetItemPtr]];
|
firefly.TargetItem = &g_Level.Items[item.ItemFlags[(int)FirefliesItemFlags::TargetItemPtr]];
|
||||||
|
|
||||||
int& nextFireflyID = NextFireflyIDMap[item.Index];
|
int& nextFireflyID = NextFireflyIDMap[item.Index];
|
||||||
firefly.ID = nextFireflyID++; // TODO: Increment should be on separate line for clarity.
|
firefly.ID = nextFireflyID++; // TODO: Increment should be on separate line for clarity.
|
||||||
|
@ -133,11 +133,11 @@ namespace TEN::Effects::Fireflies
|
||||||
|
|
||||||
// Reset ItemFlags.
|
// Reset ItemFlags.
|
||||||
if (item.HitPoints == NOT_TARGETABLE)
|
if (item.HitPoints == NOT_TARGETABLE)
|
||||||
item.HitPoints = item.ItemFlags[FirefliesItemFlags::SpawnCounter];
|
item.HitPoints = item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter];
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::SpawnCounter] = 0;
|
item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter] = 0;
|
||||||
item.ItemFlags[FirefliesItemFlags::LightID0] = NO_VALUE;
|
item.ItemFlags[(int)FirefliesItemFlags::LightID0] = NO_VALUE;
|
||||||
item.ItemFlags[FirefliesItemFlags::LightID1] = NO_VALUE;
|
item.ItemFlags[(int)FirefliesItemFlags::LightID1] = NO_VALUE;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ namespace TEN::Effects::Fireflies
|
||||||
|
|
||||||
if (item.HitPoints != NOT_TARGETABLE)
|
if (item.HitPoints != NOT_TARGETABLE)
|
||||||
{
|
{
|
||||||
int fireflyCount = item.HitPoints - item.ItemFlags[FirefliesItemFlags::SpawnCounter];
|
int fireflyCount = item.HitPoints - item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter];
|
||||||
|
|
||||||
if (fireflyCount < 0)
|
if (fireflyCount < 0)
|
||||||
{
|
{
|
||||||
|
@ -174,7 +174,7 @@ namespace TEN::Effects::Fireflies
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::SpawnCounter] = item.HitPoints;
|
item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter] = item.HitPoints;
|
||||||
item.HitPoints = NOT_TARGETABLE;
|
item.HitPoints = NOT_TARGETABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,14 +188,14 @@ namespace TEN::Effects::Fireflies
|
||||||
if (targetItem == &item)
|
if (targetItem == &item)
|
||||||
{
|
{
|
||||||
// Choose one available firefly ID that has light.
|
// Choose one available firefly ID that has light.
|
||||||
if (targetItem->ItemFlags[FirefliesItemFlags::LightID0] == NO_VALUE && targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
|
if (targetItem->ItemFlags[(int)FirefliesItemFlags::LightID0] == NO_VALUE && targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] >= 0)
|
||||||
{
|
{
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::LightID0] = Random::GenerateInt(0, targetItem->TriggerFlags);
|
targetItem->ItemFlags[(int)FirefliesItemFlags::LightID0] = Random::GenerateInt(0, targetItem->TriggerFlags);
|
||||||
}
|
}
|
||||||
// Two lights max for each cluster.
|
// Two lights max for each cluster.
|
||||||
if (targetItem->ItemFlags[FirefliesItemFlags::LightID1] == NO_VALUE && targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
|
if (targetItem->ItemFlags[(int)FirefliesItemFlags::LightID1] == NO_VALUE && targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] >= 0)
|
||||||
{
|
{
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::LightID1] = Random::GenerateInt(0, targetItem->TriggerFlags);
|
targetItem->ItemFlags[(int)FirefliesItemFlags::LightID1] = Random::GenerateInt(0, targetItem->TriggerFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto posBase = firefly.Position;
|
auto posBase = firefly.Position;
|
||||||
|
@ -204,7 +204,7 @@ namespace TEN::Effects::Fireflies
|
||||||
auto dir0 = Geometry::RotatePoint(posBase, EulerAngles::Identity);
|
auto dir0 = Geometry::RotatePoint(posBase, EulerAngles::Identity);
|
||||||
short orient2D = firefly.Orientation.z;
|
short orient2D = firefly.Orientation.z;
|
||||||
|
|
||||||
if (targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
|
if (targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] >= 0)
|
||||||
{
|
{
|
||||||
StreamerEffect.Spawn(
|
StreamerEffect.Spawn(
|
||||||
targetItem->Index, firefly.ID, pos, dir0, orient2D,
|
targetItem->Index, firefly.ID, pos, dir0, orient2D,
|
||||||
|
@ -212,7 +212,7 @@ namespace TEN::Effects::Fireflies
|
||||||
Vector4::Zero,
|
Vector4::Zero,
|
||||||
6.3f - (firefly.zVel / 12), ((firefly.Velocity / 8) + firefly.zVel * 3) / (float)UCHAR_MAX, 0.0f, -0.1f, 90.0f, StreamerFeatherMode::None, BlendMode::Additive);
|
6.3f - (firefly.zVel / 12), ((firefly.Velocity / 8) + firefly.zVel * 3) / (float)UCHAR_MAX, 0.0f, -0.1f, 90.0f, StreamerFeatherMode::None, BlendMode::Additive);
|
||||||
}
|
}
|
||||||
else if (targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] < 0)
|
else if (targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] < 0)
|
||||||
{
|
{
|
||||||
StreamerEffect.Spawn(
|
StreamerEffect.Spawn(
|
||||||
targetItem->Index, firefly.ID, pos, dir0, orient2D,
|
targetItem->Index, firefly.ID, pos, dir0, orient2D,
|
||||||
|
@ -221,8 +221,8 @@ namespace TEN::Effects::Fireflies
|
||||||
0.0f, 0.4f, 0.0f, 0.2f, 0.0f, StreamerFeatherMode::None, BlendMode::Subtractive);
|
0.0f, 0.4f, 0.0f, 0.2f, 0.0f, StreamerFeatherMode::None, BlendMode::Subtractive);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((targetItem->ItemFlags[FirefliesItemFlags::LightID0] == firefly.ID || targetItem->ItemFlags[FirefliesItemFlags::LightID1] == firefly.ID) &&
|
if ((targetItem->ItemFlags[(int)FirefliesItemFlags::LightID0] == firefly.ID || targetItem->ItemFlags[(int)FirefliesItemFlags::LightID1] == firefly.ID) &&
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::Light] == 1)
|
targetItem->ItemFlags[(int)FirefliesItemFlags::Light] == 1)
|
||||||
{
|
{
|
||||||
float totalCycleDuration = 2 * (FIREFLY_LIGHT_ALPHA_CYCLE_DURATION + ALPHA_PAUSE_DURATION);
|
float totalCycleDuration = 2 * (FIREFLY_LIGHT_ALPHA_CYCLE_DURATION + ALPHA_PAUSE_DURATION);
|
||||||
float alphaTime = fmod(frameCounter, totalCycleDuration);
|
float alphaTime = fmod(frameCounter, totalCycleDuration);
|
||||||
|
@ -238,8 +238,8 @@ namespace TEN::Effects::Fireflies
|
||||||
else if (alphaTime < 2 * ALPHA_PAUSE_DURATION + FIREFLY_LIGHT_ALPHA_CYCLE_DURATION)
|
else if (alphaTime < 2 * ALPHA_PAUSE_DURATION + FIREFLY_LIGHT_ALPHA_CYCLE_DURATION)
|
||||||
{
|
{
|
||||||
alphaFactor = 0.0f; // Pause on Alpha 0.
|
alphaFactor = 0.0f; // Pause on Alpha 0.
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::LightID0] = NO_VALUE;
|
targetItem->ItemFlags[(int)FirefliesItemFlags::LightID0] = NO_VALUE;
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::LightID1] = NO_VALUE;
|
targetItem->ItemFlags[(int)FirefliesItemFlags::LightID1] = NO_VALUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -279,7 +279,7 @@ namespace TEN::Effects::Fireflies
|
||||||
|
|
||||||
auto targetItem = firefly.TargetItem;
|
auto targetItem = firefly.TargetItem;
|
||||||
|
|
||||||
if (targetItem->ItemFlags[FirefliesItemFlags::RemoveFliesEffect])
|
if (targetItem->ItemFlags[(int)FirefliesItemFlags::RemoveFliesEffect])
|
||||||
{
|
{
|
||||||
firefly.r = 0;
|
firefly.r = 0;
|
||||||
firefly.g = 0;
|
firefly.g = 0;
|
||||||
|
@ -292,9 +292,9 @@ namespace TEN::Effects::Fireflies
|
||||||
firefly.PositionTarget = Random::GeneratePointInSphere(SPHERE);
|
firefly.PositionTarget = Random::GeneratePointInSphere(SPHERE);
|
||||||
|
|
||||||
auto spheroidAxis = Vector3(
|
auto spheroidAxis = Vector3(
|
||||||
CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 2),
|
CLICK(targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] * 2),
|
||||||
CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 4),
|
CLICK(targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] * 4),
|
||||||
CLICK(targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] * 2));
|
CLICK(targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] * 2));
|
||||||
|
|
||||||
auto itemPos = Vector3i(targetItem->Pose.Position.x, targetItem->Pose.Position.y - FIREFLY_ASCENT_FACTOR, targetItem->Pose.Position.z);
|
auto itemPos = Vector3i(targetItem->Pose.Position.x, targetItem->Pose.Position.y - FIREFLY_ASCENT_FACTOR, targetItem->Pose.Position.z);
|
||||||
|
|
||||||
|
@ -377,8 +377,8 @@ namespace TEN::Effects::Fireflies
|
||||||
firefly.Velocity -= std::min(FLEE_VEL, firefly.TargetItem->Animation.Velocity.z - 1.0f);
|
firefly.Velocity -= std::min(FLEE_VEL, firefly.TargetItem->Animation.Velocity.z - 1.0f);
|
||||||
|
|
||||||
if (Random::TestProbability(1.0f / 700.0f) &&
|
if (Random::TestProbability(1.0f / 700.0f) &&
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::Light] == 1 &&
|
targetItem->ItemFlags[(int)FirefliesItemFlags::Light] == 1 &&
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
|
targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] >= 0)
|
||||||
{
|
{
|
||||||
if (firefly.zVel == 0.3f)
|
if (firefly.zVel == 0.3f)
|
||||||
{
|
{
|
||||||
|
@ -408,10 +408,10 @@ namespace TEN::Effects::Fireflies
|
||||||
firefly.RoomNumber = pointColl.GetRoomNumber();
|
firefly.RoomNumber = pointColl.GetRoomNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetItem->ItemFlags[FirefliesItemFlags::Light] == 1 &&
|
if (targetItem->ItemFlags[(int)FirefliesItemFlags::Light] == 1 &&
|
||||||
targetItem->ItemFlags[FirefliesItemFlags::TriggerFlags] >= 0)
|
targetItem->ItemFlags[(int)FirefliesItemFlags::TriggerFlags] >= 0)
|
||||||
{
|
{
|
||||||
if (Random::TestProbability(1.0f / (700.0f - float(targetItem->ItemFlags[FirefliesItemFlags::SpawnCounter] * 2))))
|
if (Random::TestProbability(1.0f / (700.0f - float(targetItem->ItemFlags[(int)FirefliesItemFlags::SpawnCounter] * 2))))
|
||||||
firefly.zVel = 100.0f;
|
firefly.zVel = 100.0f;
|
||||||
|
|
||||||
if (firefly.zVel > 1.0f)
|
if (firefly.zVel > 1.0f)
|
||||||
|
|
|
@ -10,7 +10,7 @@ using namespace TEN::Math;
|
||||||
|
|
||||||
namespace TEN::Effects::Fireflies
|
namespace TEN::Effects::Fireflies
|
||||||
{
|
{
|
||||||
enum FirefliesItemFlags
|
enum class FirefliesItemFlags
|
||||||
{
|
{
|
||||||
TargetItemPtr,
|
TargetItemPtr,
|
||||||
Light,
|
Light,
|
||||||
|
|
|
@ -67,13 +67,13 @@ namespace TEN::Entities::TR3
|
||||||
item.Animation.ActiveState = CORPSE_STATE_GROUNDED;
|
item.Animation.ActiveState = CORPSE_STATE_GROUNDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 0;
|
item.ItemFlags[(int)FirefliesItemFlags::RemoveFliesEffect] = 0;
|
||||||
|
|
||||||
AddActiveItem(itemNumber);
|
AddActiveItem(itemNumber);
|
||||||
item.Status = ITEM_ACTIVE;
|
item.Status = ITEM_ACTIVE;
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::TargetItemPtr] = item.Index;
|
item.ItemFlags[(int)FirefliesItemFlags::TargetItemPtr] = item.Index;
|
||||||
item.ItemFlags[FirefliesItemFlags::TriggerFlags] = NO_VALUE;
|
item.ItemFlags[(int)FirefliesItemFlags::TriggerFlags] = NO_VALUE;
|
||||||
item.HitPoints = FLY_COUNT;
|
item.HitPoints = FLY_COUNT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ namespace TEN::Entities::TR3
|
||||||
|
|
||||||
// Remove fly effect when in water.
|
// Remove fly effect when in water.
|
||||||
if (isWater || isSwamp)
|
if (isWater || isSwamp)
|
||||||
item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] = 1;
|
item.ItemFlags[(int)FirefliesItemFlags::RemoveFliesEffect] = 1;
|
||||||
|
|
||||||
auto bounds = GameBoundingBox(&item);
|
auto bounds = GameBoundingBox(&item);
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ namespace TEN::Entities::TR3
|
||||||
|
|
||||||
AnimateItem(&item);
|
AnimateItem(&item);
|
||||||
|
|
||||||
if (!TriggerActive(&item) || item.ItemFlags[FirefliesItemFlags::RemoveFliesEffect] == 1)
|
if (!TriggerActive(&item) || item.ItemFlags[(int)FirefliesItemFlags::RemoveFliesEffect] == 1)
|
||||||
{
|
{
|
||||||
// Remove all fireflies associated with this item.
|
// Remove all fireflies associated with this item.
|
||||||
ClearInactiveFireflies(item);
|
ClearInactiveFireflies(item);
|
||||||
|
@ -159,7 +159,7 @@ namespace TEN::Entities::TR3
|
||||||
if (item.HitPoints == NOT_TARGETABLE)
|
if (item.HitPoints == NOT_TARGETABLE)
|
||||||
item.HitPoints = FLY_COUNT;
|
item.HitPoints = FLY_COUNT;
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::SpawnCounter] = 0;
|
item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter] = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -171,7 +171,7 @@ namespace TEN::Entities::TR3
|
||||||
// Spawn fly effect.
|
// Spawn fly effect.
|
||||||
if (item.HitPoints != NOT_TARGETABLE)
|
if (item.HitPoints != NOT_TARGETABLE)
|
||||||
{
|
{
|
||||||
int fireflyCount = item.HitPoints - item.ItemFlags[FirefliesItemFlags::SpawnCounter];
|
int fireflyCount = item.HitPoints - item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter];
|
||||||
|
|
||||||
if (fireflyCount < 0)
|
if (fireflyCount < 0)
|
||||||
{
|
{
|
||||||
|
@ -196,7 +196,7 @@ namespace TEN::Entities::TR3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.ItemFlags[FirefliesItemFlags::SpawnCounter] = item.HitPoints;
|
item.ItemFlags[(int)FirefliesItemFlags::SpawnCounter] = item.HitPoints;
|
||||||
item.HitPoints = NOT_TARGETABLE;
|
item.HitPoints = NOT_TARGETABLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue