summaryrefslogtreecommitdiff
path: root/src/d/d_fader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/d_fader.cpp')
-rw-r--r--src/d/d_fader.cpp98
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;
+}