#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) { // OSReport("Activating Palace Dude\n"); hasBeenActivated = true; StopBGMMusic(); dMsgBoxManager_c::instance->showMessage(settings & 0xFFFFFFF); SaveBlock *save = GetSaveFile()->GetBlock(-1); GameMgrP->switchPalaceFlag|= (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) { // OSReport("Exiting\n"); ExitStage(WORLD_MAP, 0, BEAT_LEVEL, MARIO_WIPE); hasExitedStage = true; } } return true; }