#include #include #include "msgbox.h" class dPalaceDude_c : public dStageActor_c { public: static dPalaceDude_c *build(); bool hasBeenActivated; bool hasExitedStage; int onExecute(); }; /*****************************************************************************/ // Glue Code dPalaceDude_c *dPalaceDude_c::build() { void *buffer = AllocFromGameHeap1(sizeof(dPalaceDude_c)); dPalaceDude_c *c = new(buffer) dPalaceDude_c; return c; } int dPalaceDude_c::onExecute() { if (dFlagMgr_c::instance->flags & spriteFlagMask) { if (hasBeenActivated) return true; //OSReport("Activating Palace Dude\n"); hasBeenActivated = true; dMsgBoxManager_c::instance->showMessage(settings & 0xFFFFFFF); SaveBlock *save = GetSaveFile()->GetBlock(-1); save->switch_on |= (1 << (settings >> 28)); } if (hasBeenActivated) { if (hasExitedStage) return true; //OSReport("Palace Dude is activated, %d\n", dMsgBoxManager_c::instance->visible); if (!dMsgBoxManager_c::instance->visible) { ExitStage(WORLD_MAP, 0, BEAT_LEVEL, MARIO_WIPE); hasExitedStage = true; } } return true; }