summaryrefslogtreecommitdiff
path: root/src/m/m_fader.cpp
blob: 7e537c4693ae0a8ced7a6cb1cb02c7c7ce80bdd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <m/m_fader.h>
#include <m/m3d/m3d.h>
#include <nw4r/g3d/g3d_state.h>

void mFader_c::draw() {
    nw4r::g3d::G3DState::Invalidate(0x7ff);
    m3d::resetMaterial();
    mpFader->draw();
}

bool mFader_c::setFader(mFaderBase_c *fader) {
    if (mpFader != nullptr) {
        bool isFading = isStatus(mFaderBase_c::FADING_IN) || isStatus(mFaderBase_c::FADING_OUT);

        if (isFading) {
            return false;
        }
    }

    mFaderBase_c::EStatus status = mpFader != nullptr ? mpFader->getStatus() : fader->getStatus();

    mpFader = fader;
    switch (status) {
    case mFaderBase_c::FADED_OUT:
        fader->setStatus(mFaderBase_c::FADED_OUT);
        break;
    case mFaderBase_c::FADED_IN:
        fader->setStatus(mFaderBase_c::FADED_IN);
        break;
    }

    return true;
}