Skip to content

Commit

Permalink
ChaosMod/EffectDispatcher: Set non-timed effect time to effect dur * 3
Browse files Browse the repository at this point in the history
Clean up FakeName and ActiveEffect stuff as well
  • Loading branch information
pongo1231 committed Jan 18, 2025
1 parent 30e2913 commit 4fa3704
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
26 changes: 21 additions & 5 deletions ChaosMod/Components/EffectDispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,14 @@ static void _DispatchEffect(EffectDispatcher *effectDispatcher, const EffectDisp
if (!entry.Suffix.empty())
effectName << " " << entry.Suffix;

int effectDuration;
int effectDuration = 0;
switch (effectData.TimedType)
{
case EffectTimedType::NotTimed:
effectDuration = (effectData.IsMeta() ? effectDispatcher->SharedState.MetaEffectTimedDur
: effectDispatcher->SharedState.EffectTimedDur)
* 3.f;
break;
case EffectTimedType::Normal:
effectDuration = effectData.IsMeta() ? effectDispatcher->SharedState.MetaEffectTimedDur
: effectDispatcher->SharedState.EffectTimedDur;
Expand All @@ -144,14 +149,25 @@ static void _DispatchEffect(EffectDispatcher *effectDispatcher, const EffectDisp
effectDuration = effectData.CustomTime;
break;
default:
LOG("WARNING: No effectDuration set for effect "
<< entry.Identifier.GetEffectId() << " with EffectTimedType "
<< static_cast<int>(effectData.TimedType) << ", reverting to default!");
effectDuration = effectData.IsMeta() ? effectDispatcher->SharedState.MetaEffectTimedDur
: effectDispatcher->SharedState.EffectTimedDur;
break;
}

auto &activeEffect = effectDispatcher->SharedState.ActiveEffects.emplace_back(
entry.Identifier, registeredEffect, effectName.str(), effectData, effectDuration,
effectData.TimedType != EffectTimedType::NotTimed);
EffectDispatcher::ActiveEffect activeEffect = {
.Identifier = entry.Identifier,
.Name = effectName.str(),
.ThreadId = EffectThreads::CreateThread(registeredEffect),
.Timer = static_cast<float>(effectDuration),
.MaxTime = static_cast<float>(effectDuration),
.IsTimed = effectData.TimedType != EffectTimedType::NotTimed,
.IsMeta = effectData.IsMeta(),
.HideEffectName = effectData.ShouldHideRealNameOnStart(),
};
effectDispatcher->SharedState.ActiveEffects.push_back(activeEffect);

playEffectDispatchSound(activeEffect);

Expand Down Expand Up @@ -330,7 +346,7 @@ void EffectDispatcher::UpdateEffects(int deltaTime)
if (g_EnabledEffects.contains(effectSharedData->OverrideEffectId))
{
auto &fakeEffect = g_EnabledEffects.at(effectSharedData->OverrideEffectId);
activeEffect.FakeName = fakeEffect.HasCustomName() ? fakeEffect.CustomName : fakeEffect.Name;
activeEffect.FakeName = !fakeEffect.HasCustomName() ? "" : fakeEffect.CustomName;
}
else
{
Expand Down
17 changes: 1 addition & 16 deletions ChaosMod/Components/EffectDispatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,8 @@ class EffectDispatcher : public Component
};
std::queue<EffectDispatchEntry> EffectDispatchQueue;

class ActiveEffect
struct ActiveEffect
{
public:
EffectIdentifier Identifier;

std::string Name;
Expand All @@ -55,20 +54,6 @@ class EffectDispatcher : public Component
bool IsStopping = false;

DWORD64 SoundId = 0;

ActiveEffect(const EffectIdentifier &effectIdentifier, RegisteredEffect *registeredEffect,
const std::string &name, const EffectData &effectData, float effectDuration, bool isTimed)
{
Identifier = effectIdentifier;
Name = name;
FakeName = effectData.FakeName;
Timer = effectDuration;
MaxTime = effectDuration;
IsTimed = isTimed;
HideEffectName = effectData.ShouldHideRealNameOnStart();
IsMeta = effectData.IsMeta();
ThreadId = EffectThreads::CreateThread(registeredEffect);
}
};
struct
{
Expand Down
2 changes: 0 additions & 2 deletions ChaosMod/Util/Script.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ inline void WAIT(DWORD timeMs)
{
auto currentFiber = GetCurrentFiber();
if (currentFiber == g_MainThread || currentFiber == g_EffectDispatcherThread)
{
scriptWait(timeMs);
}
else
{
EffectThreads::PauseThisThread(timeMs);
Expand Down

0 comments on commit 4fa3704

Please sign in to comment.