diff options
| author | robojumper <robojumper@gmail.com> | 2024-10-01 14:55:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-01 08:55:07 -0400 |
| commit | 4d9a0d6390f7c9a23666e93037e338d0c73c225e (patch) | |
| tree | 7d0002d80ee320f63832fbdc9e97f2bbd3a41ba8 /src/d/d_fader.cpp | |
| parent | d75f4c92efc8f0ca868b2f77f34fda49ce8c219d (diff) | |
d_fader OK (#46)
Diffstat (limited to 'src/d/d_fader.cpp')
| -rw-r--r-- | src/d/d_fader.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/d/d_fader.cpp b/src/d/d_fader.cpp new file mode 100644 index 00000000..34242d0c --- /dev/null +++ b/src/d/d_fader.cpp @@ -0,0 +1,98 @@ +#include <d/d_fader.h> +#include <m/m_fader.h> + +static mColor mFaderColor = mColor(200, 200, 200, 0xFF); + +dFader_c::~dFader_c() { + if (mpScreenFader != nullptr) { + delete mpScreenFader; + mpScreenFader = nullptr; + } + if (mpLytFader != nullptr) { + delete mpLytFader; + mpLytFader = nullptr; + } + if (mpColorFader != nullptr) { + delete mpColorFader; + mpColorFader = nullptr; + } +} + +bool dFader_c::create() { + mpColorFader = new mColorFader_c(mColor(0, 0, 0, 0x80), mFaderBase_c::FADED_OUT); + if (!mpColorFader) { + return false; + } + + mpLytFader = new dLytFader_c(mColor(0, 0, 0, 0xFF), mFaderBase_c::FADED_OUT); + if (!mpLytFader) { + return false; + } + + mpScreenFader = new dScreenFader_c(mColor(0, 0, 0, 0xFF), mFaderBase_c::FADED_OUT); + if (!mpScreenFader) { + return false; + } + + mFadeOutType = 0; + mFadeInType = 0; + field_0x20 = 0x1E; + field_0x22 = 0x1E; + setFader(0); + + return true; +} + +bool dFader_c::setFader(s32 fader) { + switch (fader) { + case 0: + if (mFader_c::setFader(mpColorFader)) { + if (mpColorFader->getStatus() == mFaderBase_c::FADED_IN) { + mpColorFader->setColor(mColor(0, 0, 0, 0xFF)); + } + return true; + } + break; + case 1: + if (mFader_c::setFader(mpColorFader)) { + if (mpColorFader->getStatus() == mFaderBase_c::FADED_IN) { + mpColorFader->setColor(mFaderColor); + } + return true; + } + break; + case 2: + if (mFader_c::setFader(mpLytFader)) { + if (mpLytFader->getStatus() == mFaderBase_c::FADED_IN) { + mpLytFader->setColor(mColor(0, 0, 0, 0xFF)); + } + return true; + } + break; + case 3: + if (mFader_c::setFader(mpScreenFader)) { + if (mpScreenFader->getStatus() == mFaderBase_c::FADED_IN) { + mpScreenFader->setColor(mColor(0, 0, 0, 0xFF)); + } + return true; + } + break; + } + + return false; +} + +u8 dFader_c::getColorFaderAlpha() { + if (mpColorFader != nullptr) { + return mpColorFader->mFaderColor.a; + } + return 0xFF; +} + +bool dFader_c::initForLyt() { + bool ok = false; + if (mpLytFader != nullptr) { + ok = mpLytFader->init(); + } + return ok; +} |
