#ifndef EVENT_MANAGER_UTIL_H
#define EVENT_MANAGER_UTIL_H

#include "d/d_base.h"
#include "d/d_message.h"
#include "d/lyt/d_lyt_deposit.h"
#include "d/lyt/d_lyt_map.h"
#include "d/lyt/d_lyt_shop.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/misc_actor.h"

// Pulling these functions out into a separate file to avoid circular dependencies

inline bool EventManagerNotDrawControl0x80() {
    return EventManager::isInEvent() && (dBase_c::s_DrawControlFlags & 0x80) == 0;
}

inline bool EventManagerNotSkyKeepPuzzle() {
    return EventManager::isInEvent() && !checkIsInSkykeepPuzzle();
}

inline bool EventManagerNotInShop() {
    return EventManager::isInEvent() && dLytShop_c::GetInstance() == nullptr;
}

inline bool EventManagerNotInDeposit() {
    return EventManager::isInEvent() && dLytDeposit_c::GetInstance() == nullptr;
}

inline bool EventManagerIsInMap() {
    return EventManager::isInEvent() && dLytMap_c::GetInstance() != nullptr;
}

inline bool EventManagerIsMapOpen() {
    return EventManagerIsInMap() && dLytMap_c::GetInstance()->isOpen();
}

inline bool EventManagerIsMapOpenNormal() {
    return EventManagerIsMapOpen() && !dMessage_c::getInstance()->getInMapEvent();
}

inline bool EventManagerIsMapEventSaveObj() {
    return EventManagerIsMapOpen() && dLytMap_c::GetInstance()->isMapEventSaveObj();
}

#endif
