summaryrefslogtreecommitdiff
path: root/src/m/m_fader.cpp
blob: 8677530f6f95c86e810b2363d49c090e02c75d65 (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
#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;
}