RectangleWH FieldCharacter::GetBoundsForInteraction()
{
    if (IsInteractionPointExact())
    {
        return RectangleWH(interactionLocation.GetX(), interactionLocation.GetY(), 1, 1);
    }

    RectangleWH hitboxBoundingBox = GetHitBox()->GetBoundingBox();

    return RectangleWH(
        GetVectorAnchorPosition().GetX() + hitboxBoundingBox.GetX(),
        GetVectorAnchorPosition().GetY() + hitboxBoundingBox.GetY(),
        hitboxBoundingBox.GetWidth(),
        hitboxBoundingBox.GetHeight());
}
Sprite::Sprite(XmlReader *pReader)
{
    pSpriteSheetImage = NULL;
    spriteDrawOffset = Vector2(0, 0);
    pSpriteSheetSemaphore = SDL_CreateSemaphore(1);
    managerSource = ManagerSourceCommonResources;

    pReader->StartElement("Sprite");

    if (pReader->ElementExists("SpriteSheetImageId"))
    {
        spriteSheetImageId = pReader->ReadTextElement("SpriteSheetImageId");

        pReader->StartElement("SpriteClipRect");
        spriteClipRect = RectangleWH(pReader);
        pReader->EndElement();

        if (pReader->ElementExists("Offset"))
        {
            pReader->StartElement("Offset");
            spriteDrawOffset = Vector2(pReader);
            pReader->EndElement();

            pReader->StartElement("OriginalSize");
            originalSize = Vector2(pReader);
            pReader->EndElement();
        }
    }

    pReader->EndElement();
}
void PromptButton::Update(int delta)
{
    if (isEnabled)
    {
        isClicked = false;
        isMouseDown = false;
        isMouseOver = false;

        RectangleWH positionRect = RectangleWH(position.GetX(), position.GetY(), pTextFont->GetWidth(text), pTextFont->GetHeight(text));
        bool isPressed = MouseHelper::PressedAndHeldAnywhere() || MouseHelper::DoublePressedAndHeldAnywhere();

        if (MouseHelper::ClickedOnRect(positionRect))
        {
            playSound(GetClickSoundEffect());
            isClicked = true;
            return;
        }

        if (MouseHelper::MouseDownOnRect(positionRect) && !isPressed)
        {
            isMouseDown = true;
        }
        else if (MouseHelper::MouseOverRect(positionRect) && !isPressed)
        {
            isMouseOver = true;
        }
    }
}
RectangleWH Crowd::GetBoundsForInteraction()
{
    if (IsInteractionPointExact())
    {
        return RectangleWH(interactionLocation.GetX(), interactionLocation.GetY(), 1, 1);
    }

    return clickPolygon.GetBoundingBox();
}
void Button::Update(int delta)
{
    isMouseOver = false;
    isMouseDown = false;

    if (pOutEase->GetIsStarted() && !pOutEase->GetIsFinished())
    {
        pOutEase->Update(delta);
        animationOffset = (int)pOutEase->GetCurrentValue();
    }
    else if (pOutEase->GetIsFinished())
    {
        SetIsHidden(true);
    }
    else if (pInEase->GetIsStarted() && !pInEase->GetIsFinished())
    {
        pInEase->Update(delta);
        animationOffset = (int)pInEase->GetCurrentValue();
    }
    else
    {
        if (GetUnlockedLockCount() > 0 && !pUnlockingAnimation->IsFinished())
        {
            pUnlockingAnimation->Update(delta);

            AnimationSound * pSoundToPlay = pUnlockingAnimation->GetSoundToPlay();

            if (pSoundToPlay != NULL)
            {
                pSoundToPlay->Play(gSoundEffectsVolume);
            }
        }
        else if (!GetIsDisabled())
        {
            RectangleWH positionRect = RectangleWH(GetXPosition(), GetYPosition(), pTextFont->GetWidth(GetText()), TextHeight);
            bool isPressed = MouseHelper::PressedAndHeldAnywhere() || MouseHelper::DoublePressedAndHeldAnywhere();

            if (MouseHelper::ClickedOnRect(positionRect))
            {
                OnClicked();
            }

            if (MouseHelper::MouseDownOnRect(positionRect) && !isPressed)
            {
                isMouseDown = true;
            }
            else if (MouseHelper::MouseOverRect(positionRect) && !isPressed)
            {
                isMouseOver = true;
            }
        }
    }
}
void Dialog::Initialize(
    int textAreaLeft,
    int textAreaTop,
    int textAreaWidth,
    int textAreaHeight,
    double desiredPadding,
    MLIFont *pDialogFont)
{
    NormalTextColor = Color::White;
    Dialog::textAreaRect = RectangleWH(textAreaLeft, textAreaTop, textAreaWidth, textAreaHeight);
    Dialog::desiredPadding = desiredPadding;
    Dialog::pDialogFont = pDialogFont;
}
ButtonArray::ButtonArray(int maxVisibleButtonCount, int x, int y, int width, int height, int desiredPadding)
    : dialogRect(RectangleWH(x, y, width, height))
{
    this->buttonClicked = false;
    this->topButtonIndex = 0;
    this->maxVisibleButtonCount = maxVisibleButtonCount;
    this->visibleButtonCount = 0;
    this->desiredPadding = desiredPadding;
    ppVisibleButtons = new Button*[maxVisibleButtonCount];
    pUpArrow = new Arrow((int)dialogRect.GetX() + (int)dialogRect.GetWidth() / 2 - 12, (int)dialogRect.GetY() + 10, ArrowDirectionUp, 10 /* bounceDistance */, true /* isClickable */);
    pDownArrow = new Arrow((int)dialogRect.GetX() + (int)dialogRect.GetWidth() / 2 - 12, (int)dialogRect.GetY() + (int)dialogRect.GetHeight() - 20 - 10, ArrowDirectionDown, 10 /* bounceDistance */, true /* isClickable */);
    pBackTab = new Tab(gScreenWidth - TabWidth, true /* isClickable */, "BACK", true /* isCancel */);
    isCancelable = false;
}
Sprite::Sprite(XmlReader *pReader)
{
    pSpriteSheetImage = NULL;
    pSpriteSheetSemaphore = SDL_CreateSemaphore(1);
    managerSource = ManagerSourceCommonResources;

    pReader->StartElement("Sprite");
    spriteSheetImageId = pReader->ReadTextElement("SpriteSheetImageId");

    pReader->StartElement("SpriteClipRect");
    spriteClipRect = RectangleWH(pReader);
    pReader->EndElement();

    pReader->EndElement();
}
void Notification::Initialize(
        int textAreaLeft,
        int textAreaTop,
        int textAreaWidth,
        int textAreaHeight,
        double desiredPadding,
        Font *pTextFont,
        int evidenceCenterPointX,
        int evidenceCenterPointY,
        Image *pDirectionArrow)
{
    Notification::textAreaRect = RectangleWH(textAreaLeft, textAreaTop, textAreaWidth, textAreaHeight);
    Notification::desiredPadding = desiredPadding;
    Notification::pTextFont = pTextFont;
    Notification::evidenceCenterPoint = Vector2(evidenceCenterPointX, evidenceCenterPointY);
    Notification::pDirectionArrow = pDirectionArrow;
}
示例#10
0
void Sprite::DrawClipped(Vector2 position, RectangleWH clipRect, bool flipHorizontally, Color color)
{
    if (GetSpriteSheetImage() == NULL)
    {
        return;
    }

    // Adjust the clip rect to account for the fact that we've eliminated blank space
    // that was around the source image.
    if (spriteDrawOffset.GetX() > 0 || spriteDrawOffset.GetY() > 0)
    {
        Vector2 oldClipRectPosition(clipRect.GetX(), clipRect.GetY());

        clipRect.SetX(clipRect.GetX() - spriteDrawOffset.GetX());
        clipRect.SetY(clipRect.GetY() - spriteDrawOffset.GetY());

        position += Vector2(clipRect.GetX(), clipRect.GetY()) - oldClipRectPosition;

        if (clipRect.GetX() + clipRect.GetWidth() > GetWidth())
        {
            clipRect.SetWidth(GetWidth() - clipRect.GetX());
        }

        if (clipRect.GetY() + clipRect.GetHeight() > GetHeight())
        {
            clipRect.SetHeight(GetHeight() - clipRect.GetY());
        }
    }

    Vector2 pixelSnappedPosition =
        Vector2(
            (int)(position.GetX() + (originalSize.GetX() > 0 && flipHorizontally ? originalSize.GetX() - GetWidth() - spriteDrawOffset.GetX() : spriteDrawOffset.GetX())),
            (int)(position.GetY() + spriteDrawOffset.GetY()));

    GetSpriteSheetImage()->Draw(
        pixelSnappedPosition,
        RectangleWH(
            spriteClipRect.GetX() + clipRect.GetX(),
            spriteClipRect.GetY() + clipRect.GetY(),
            clipRect.GetWidth(),
            clipRect.GetHeight()),
        flipHorizontally,
        false /* flipVertically */,
        1.0,
        color);
}
void Location::CutsceneView::CameraManipulatable::SetWindowRect(RectangleWH windowRect)
{
    RectangleWH adjustedWindowRect =
        RectangleWH(
                min(max(windowRect.GetX(), 0.0), backgroundSize.GetX() - gameWindowSize.GetX()),
                min(max(windowRect.GetY(), 0.0), backgroundSize.GetY() - gameWindowSize.GetY()),
                gameWindowSize.GetX(),
                gameWindowSize.GetY());

    if (adjustedWindowRect != this->windowRect)
    {
        this->windowRect = adjustedWindowRect;
        Update();

        emit WindowRectChanged(adjustedWindowRect);
    }
}
void Sprite::DrawClipped(Vector2 position, RectangleWH clipRect, bool flipHorizontally, Color color)
{
    if (GetSpriteSheetImage() == NULL)
    {
        return;
    }

    Vector2 pixelSnappedPosition = Vector2((int)position.GetX(), (int)position.GetY());

    GetSpriteSheetImage()->Draw(
        pixelSnappedPosition,
        RectangleWH(
            spriteClipRect.GetX() + clipRect.GetX(),
            spriteClipRect.GetY() + clipRect.GetY(),
            clipRect.GetWidth(),
            clipRect.GetHeight()),
        flipHorizontally,
        false /* flipVertically */,
        1.0,
        color);
}
RectangleWH HitBox::GetBoundingBox() const
{
    double left = numeric_limits<double>::infinity();
    double top = numeric_limits<double>::infinity();
    double right = -numeric_limits<double>::infinity();
    double bottom = -numeric_limits<double>::infinity();

    for (unsigned int i = 0; i < collidableObjectList.size(); i++)
    {
        vector<Vector2> *pVertices = collidableObjectList[i]->GetVertices();

        for (unsigned int j = 0; j < pVertices->size(); j++)
        {
            Vector2 vertex = (*pVertices)[j];

            if (vertex.GetX() < left)
            {
                left = vertex.GetX();
            }

            if (vertex.GetX() > right)
            {
                right = vertex.GetX();
            }

            if (vertex.GetY() < top)
            {
                top = vertex.GetY();
            }

            if (vertex.GetY() > bottom)
            {
                bottom = vertex.GetY();
            }
        }
    }

    return RectangleWH(left, top, right - left, bottom - top);
}
HitBox::HitBox(XmlReader *pReader)
{
    pReader->StartElement("HitBox");
    pReader->StartElement("CollidableObjectList");

    pReader->StartList("Entry");

    while (pReader->MoveToNextListItem())
    {
        collidableObjectList.push_back(new CollidableObject(pReader));
    }

    pReader->EndElement();

    if (pReader->ElementExists("AreaBoundsRectangle"))
    {
        pReader->StartElement("AreaBoundsRectangle");
        areaBoundsRectangle = RectangleWH(pReader);
        pReader->EndElement();
    }

    pReader->EndElement();
}
示例#15
0
#endif

int Dialog::Height = 180; // px

const double DefaultMillisecondsPerCharacterUpdate = 33;
const double FullStopMillisecondPause = 500;
const double HalfStopMillisecondPause = 250;
const double EllipsisMillisecondPause = 150;

Color NormalTextColor;
const Color AsideTextColor = Color(1.0, 0.529, 0.809, 0.921); //Color.SkyBlue from C#
const Color EmphasisTextColor = Color(1.0, 1.0, 0.2, 0.2);

const string LetterBlipSoundEffect = "LetterBlip";

RectangleWH Dialog::textAreaRect = RectangleWH(0, 0, 0, 0);
double Dialog::desiredPadding = 0;
MLIFont *Dialog::pDialogFont = NULL;

Dialog::Dialog(const string &filePath, int timeBeforeDialogInitial, int delayBeforeContinuing, bool isInterrogation, bool isPassive, bool isConfrontation, bool canNavigateBack, bool canNavigateForward, bool presentEvidenceAutomatically, bool canStopPresentingEvidence)
{
    this->curTextPosition = 0;

    this->millisecondsPerCharacterUpdate = 0;
    this->millisecondsSinceLastUpdate = 0;
    this->millisecondsUntilPauseCompletes = 0;
    this->millisecondsUntilAudioPauseCompletes = 0;
    this->lastPausePosition = -1;

    this->dialogEventIterator = dialogEventList.end();
    this->pCurrentDialogEvent = NULL;
void TitleScreen::LoadResources()
{
    finishedLoadingAnimations = false;

    MLIFont *pTitleScreenFont = CommonCaseResources::GetInstance()->GetFontManager()->GetFontFromId("MenuFont");

    delete pBackgroundSprite;
    pBackgroundSprite = ResourceLoader::GetInstance()->LoadImage("image/TitleScreen/Background.png");
    delete pTitleSprite;
    pTitleSprite = ResourceLoader::GetInstance()->LoadImage("image/TitleScreen/GameTitle.png");
    delete pFadeInSprite;
    pFadeInSprite = ResourceLoader::GetInstance()->LoadImage("image/TitleScreen/FadeInBackground.png");

    delete pNewGameButton;
    pNewGameButton = new TextButton("TitleScreen/NewGameText", pTitleScreenFont);
    delete pLoadGameButton;
    pLoadGameButton = new TextButton("TitleScreen/LoadGameText", pTitleScreenFont);
    delete pOptionsButton;
    pOptionsButton = new TextButton("TitleScreen/OptionsText", pTitleScreenFont);
    delete pSelectLanguageButton;
    pSelectLanguageButton = new TextButton("TitleScreen/SelectLanguageText", pTitleScreenFont);
    delete pExitButton;
    pExitButton = new TextButton("TitleScreen/ExitText", pTitleScreenFont);

    int totalButtonHeight =
        pNewGameButton->GetHeight() +
        pLoadGameButton->GetHeight() +
        pOptionsButton->GetHeight() +
        pSelectLanguageButton->GetHeight() +
        pExitButton->GetHeight() +
        ButtonSpacing * 2 + 12;

    int currentButtonHeight = ButtonAreaStartHeight + (gScreenHeight - ButtonAreaStartHeight - totalButtonHeight) / 2;

    pNewGameButton->SetX(gScreenWidth / 2, HAlignmentCenter);
    pNewGameButton->SetY(currentButtonHeight);
    currentButtonHeight += pNewGameButton->GetHeight() + ButtonSpacing;

    pLoadGameButton->SetX(gScreenWidth / 2, HAlignmentCenter);
    pLoadGameButton->SetY(currentButtonHeight);
    currentButtonHeight += pLoadGameButton->GetHeight() + ButtonSpacing;

    pOptionsButton->SetX(gScreenWidth / 2, HAlignmentCenter);
    pOptionsButton->SetY(currentButtonHeight);
    currentButtonHeight += pOptionsButton->GetHeight() + ButtonSpacing;

    pSelectLanguageButton->SetX(gScreenWidth / 2, HAlignmentCenter);
    pSelectLanguageButton->SetY(currentButtonHeight);
    currentButtonHeight += pSelectLanguageButton->GetHeight() + ButtonSpacing;

    pExitButton->SetX(gScreenWidth / 2, HAlignmentCenter);
    pExitButton->SetY(currentButtonHeight);
    currentButtonHeight += pExitButton->GetHeight() + ButtonSpacing;

    delete pSpikeVideo;
    pSpikeVideo = new Video(true /* shouldLoop */);
    pSpikeVideo->SetVideoAttributes("video/TitleScreenSpike.mov", 95, 83, 240, 200);
    pSpikeVideo->LoadFile();
    delete pTwilightVideo;
    pTwilightVideo = new Video(true /* shouldLoop */);
    pTwilightVideo->SetVideoAttributes("video/TitleScreenTwilight.mov", 125, 42, 256, 360);
    pTwilightVideo->LoadFile();

    if (CommonCaseResources::GetInstance()->GetAnimationManager()->GetAnimationFromId(CandleAnimationId) == NULL)
    {
        Image *pCandleSpriteSheet = ResourceLoader::GetInstance()->LoadImage("image/TitleScreen/CandleSpriteSheet.png");
        CommonCaseResources::GetInstance()->GetSpriteManager()->AddImage(CandleSpriteSheetId, pCandleSpriteSheet);
        CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(CandleAnimationId, &pCandleAnimation);

        for (int i = 0; i < 47; i++)
        {
            char spriteId[256] = { '\0' };

            snprintf(&spriteId[0], 256, CandleSpriteIdFormat, i + 1);
            string spriteIdString = string(spriteId);

            int x = (i % 16) * CandleDimensionsPx;
            int y = (i / 16) * CandleDimensionsPx;

            CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(spriteIdString, CandleSpriteSheetId, RectangleWH(x, y, CandleDimensionsPx, CandleDimensionsPx));
            pCandleAnimation->AddFrame(83, spriteIdString);
        }
    }

    finishedLoadingAnimations = true;
}
void MouseHelper::LoadCursors()
{
    Image *pCursorSpriteSheet = ResourceLoader::GetInstance()->LoadImage("image/CursorSpriteSheet.png");

    //// NORMAL CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddImage(cursorSpriteSheetId, pCursorSpriteSheet);

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(normalCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   0, 30, 30));

    Animation *pNormalCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(normalCursorAnimationId, &pNormalCursorAnimation);
    pNormalCursorAnimation->AddFrame(5000, normalCursorSpriteId01);

    animationByCursorTypeMap[CursorTypeNormal] = pNormalCursorAnimation;

    //// LOOK CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lookCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   30, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lookCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  30, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lookCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  30, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lookCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  30, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lookCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 30, 30, 30));

    Animation *pLookCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(lookCursorAnimationId, &pLookCursorAnimation);
    pLookCursorAnimation->AddFrame(1932, lookCursorSpriteId01);
    pLookCursorAnimation->AddFrame(84, lookCursorSpriteId02);
    pLookCursorAnimation->AddFrame(84, lookCursorSpriteId03);
    pLookCursorAnimation->AddFrame(84, lookCursorSpriteId04);
    pLookCursorAnimation->AddFrame(84, lookCursorSpriteId05);

    animationByCursorTypeMap[CursorTypeLook] = pLookCursorAnimation;

    //// TALK CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(talkCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   60, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(talkCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  60, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(talkCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  60, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(talkCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  60, 30, 30));

    Animation *pTalkCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(talkCursorAnimationId, &pTalkCursorAnimation);
    pTalkCursorAnimation->AddFrame(210, talkCursorSpriteId01);
    pTalkCursorAnimation->AddFrame(210, talkCursorSpriteId02);
    pTalkCursorAnimation->AddFrame(210, talkCursorSpriteId03);
    pTalkCursorAnimation->AddFrame(500, talkCursorSpriteId04);

    animationByCursorTypeMap[CursorTypeTalk] = pTalkCursorAnimation;

    //// EXIT NORTH CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 90, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 90, 30, 30));

    Animation *pExitNorthCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitNorthCursorAnimationId, &pExitNorthCursorAnimation);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId01);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId02);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId03);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId04);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId05);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId06);
    pExitNorthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthCursorSpriteId07);
    pExitNorthCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitNorthCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitNorth] = pExitNorthCursorAnimation;

    //// EXIT NORTHEAST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 120, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthEastCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 120, 30, 30));

    Animation *pExitNorthEastCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitNorthEastCursorAnimationId, &pExitNorthEastCursorAnimation);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId01);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId02);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId03);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId04);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId05);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId06);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthEastCursorSpriteId07);
    pExitNorthEastCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitNorthEastCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitNorthEast] = pExitNorthEastCursorAnimation;

    //// EXIT EAST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 150, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitEastCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 150, 30, 30));

    Animation *pExitEastCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitEastCursorAnimationId, &pExitEastCursorAnimation);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId01);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId02);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId03);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId04);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId05);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId06);
    pExitEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitEastCursorSpriteId07);
    pExitEastCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitEastCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitEast] = pExitEastCursorAnimation;

    //// EXIT SOUTHEAST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 180, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthEastCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 180, 30, 30));

    Animation *pExitSouthEastCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitSouthEastCursorAnimationId, &pExitSouthEastCursorAnimation);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId01);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId02);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId03);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId04);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId05);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId06);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthEastCursorSpriteId07);
    pExitSouthEastCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitSouthEastCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitSouthEast] = pExitSouthEastCursorAnimation;

    //// EXIT SOUTH CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 210, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 210, 30, 30));

    Animation *pExitSouthCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitSouthCursorAnimationId, &pExitSouthCursorAnimation);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId01);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId02);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId03);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId04);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId05);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId06);
    pExitSouthCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthCursorSpriteId07);
    pExitSouthCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitSouthCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitSouth] = pExitSouthCursorAnimation;

    //// EXIT SOUTHWEST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 240, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitSouthWestCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 240, 30, 30));

    Animation *pExitSouthWestCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitSouthWestCursorAnimationId, &pExitSouthWestCursorAnimation);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId01);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId02);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId03);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId04);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId05);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId06);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitSouthWestCursorSpriteId07);
    pExitSouthWestCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitSouthWestCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitSouthWest] = pExitSouthWestCursorAnimation;

    //// EXIT WEST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 270, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitWestCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 270, 30, 30));

    Animation *pExitWestCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitWestCursorAnimationId, &pExitWestCursorAnimation);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId01);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId02);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId03);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId04);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId05);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId06);
    pExitWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitWestCursorSpriteId07);
    pExitWestCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitWestCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitWest] = pExitWestCursorAnimation;

    //// EXIT NORTHWEST CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId03, cursorSpriteSheetId, RectangleWH(60,  300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId04, cursorSpriteSheetId, RectangleWH(90,  300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId05, cursorSpriteSheetId, RectangleWH(120, 300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId06, cursorSpriteSheetId, RectangleWH(150, 300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId07, cursorSpriteSheetId, RectangleWH(180, 300, 30, 30));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitNorthWestCursorSpriteId08, cursorSpriteSheetId, RectangleWH(210, 300, 30, 30));

    Animation *pExitNorthWestCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitNorthWestCursorAnimationId, &pExitNorthWestCursorAnimation);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId01);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId02);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId03);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId04);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId05);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId06);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitNorthWestCursorSpriteId07);
    pExitNorthWestCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitNorthWestCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitNorthWest] = pExitNorthWestCursorAnimation;

    //// EXIT DOOR CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId02, cursorSpriteSheetId, RectangleWH(40,  330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId03, cursorSpriteSheetId, RectangleWH(80,  330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId04, cursorSpriteSheetId, RectangleWH(120, 330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId05, cursorSpriteSheetId, RectangleWH(160, 330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId06, cursorSpriteSheetId, RectangleWH(200, 330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId07, cursorSpriteSheetId, RectangleWH(240, 330, 40, 40));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(exitDoorCursorSpriteId08, cursorSpriteSheetId, RectangleWH(280, 330, 40, 40));

    Animation *pExitDoorCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(exitDoorCursorAnimationId, &pExitDoorCursorAnimation);
    pExitDoorCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, exitDoorCursorSpriteId01);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId02);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId03);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId04);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId05);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId06);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId07);
    pExitDoorCursorAnimation->AddFrame(exitAnimationNormalFrameDurationMs, exitDoorCursorSpriteId08);

    animationByCursorTypeMap[CursorTypeExitDoor] = pExitDoorCursorAnimation;

    //// NO EXIT CURSOR ////

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(noExitCursorSpriteId01, cursorSpriteSheetId, RectangleWH(0,   370, 30, 30));
    //CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(noExitCursorSpriteId02, cursorSpriteSheetId, RectangleWH(30,  370, 30, 30));

    Animation *pNoExitCursorAnimation = NULL;
    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(noExitCursorAnimationId, &pNoExitCursorAnimation);
    pNoExitCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, noExitCursorSpriteId01);
    //pNoExitCursorAnimation->AddFrame(exitAnimationHoldFrameDurationMs, noExitCursorSpriteId02);

    animationByCursorTypeMap[CursorTypeNoExit] = pNoExitCursorAnimation;

    pCurrentCursorAnimation = animationByCursorTypeMap[CursorTypeNormal];
    pCurrentCursorAnimation->Begin();
}
示例#18
0
void MLIFont::Draw(const string &s, Vector2 position, Color color)
{
    DrawInternal(s, position, color, 1.0, RectangleWH(0, 0, -1, -1));
}
示例#19
0
void MLIFont::Draw(const string &s, Vector2 position, Color color, double scale)
{
    DrawInternal(s, position, color, scale, RectangleWH(0, 0, -1, -1));
}
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#include "PartnerInformation.h"
#include "../Utils.h"
#include "../CaseInformation/Case.h"
#include <math.h>

Vector2 PartnerInformation::backgroundImagePosition = Vector2(60, 45);
RectangleWH PartnerInformation::partnerNameRectangle = RectangleWH(63, 47, 220, 42);
Vector2 PartnerInformation::profileImagePosition = Vector2(63, 92);
Vector2 PartnerInformation::passiveAbilityHeadingPosition = Vector2(305, 64);
Vector2 PartnerInformation::passiveAbilityDescriptionPosition = Vector2(312, 106);
Vector2 PartnerInformation::activeAbilityHeadingPosition = Vector2(305, 185);
Vector2 PartnerInformation::activeAbilityDescriptionPosition = Vector2(312, 228);

Image *PartnerInformation::pBackgroundImage = NULL;
MLIFont *PartnerInformation::pHeadingFont = NULL;
MLIFont *PartnerInformation::pBodyFont = NULL;

const int AbilityDescriptionWidth = 558;
const int AbilityDescriptionHeight = 63;
const int AbilityDescriptionExtraLineHeight = 5;

void PartnerInformation::Initialize(Image *pBackgroundImage, MLIFont *pHeadingFont, MLIFont *pBodyFont)
bool MouseHelper::IsMouseInViewport()
{
    return IsMouseInRect(RectangleWH(0, 0, gScreenWidth, gScreenHeight));
}
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#include "SharedUtils.h"

#include "MLIException.h"

#ifndef LAUNCHER
RectangleWH dialogTextArea = RectangleWH(3, 370, 954, 167);
double dialogPadding = 30;

const double FullStopMillisecondPause = 500;
const double HalfStopMillisecondPause = 250;
const double EllipsisMillisecondPause = 150;
#endif

#ifndef CASE_CREATOR
#include <algorithm>
#include <cctype>
#include <cstdlib>
#include <limits>
#else
#include <QtGlobal>
#endif
FieldCharacter::FieldCharacter(XmlReader *pReader)
{
    for (int i = 0; i < FieldCharacterDirectionCount; i++)
    {
        characterStandingAnimationIds[i] = "";
        characterWalkingAnimationIds[i] = "";
        characterRunningAnimationIds[i] = "";

        pCharacterStandingAnimations[i] = NULL;
        pCharacterWalkingAnimations[i] = NULL;
        pCharacterRunningAnimations[i] = NULL;
    }

    isBegun = false;
    state = FieldCharacterStateNone;
    pCurrentAnimation = NULL;

    pClickEncounter = NULL;
    pClickCutscene = NULL;

    extraHeight = 0;

    id = "";
    name = "";
    position = Vector2(0, 0);
    pHitBox = NULL;
    direction = CharacterDirectionLeft;
    spriteDirection = FieldCharacterDirectionSide;
    anchorPosition = 0;
    clickEncounterId = "";
    clickCutsceneId = "";
    isMouseOver = false;
    isClicked = false;
    pCondition = NULL;

    pReader->StartElement("FieldCharacter");
    id = pReader->ReadTextElement("Id");
    name = pReader->ReadTextElement("Name");

    pReader->StartElement("CharacterStandingAnimationIds");
    pReader->StartList("Entry");

    while (pReader->MoveToNextListItem())
    {
        FieldCharacterDirection direction = StringToFieldCharacterDirection(pReader->ReadTextElement("Direction"));
        characterStandingAnimationIds[(int)direction] = pReader->ReadTextElement("Id");
    }

    pReader->EndElement();

    pReader->StartElement("CharacterWalkingAnimationIds");
    pReader->StartList("Entry");

    while (pReader->MoveToNextListItem())
    {
        FieldCharacterDirection direction = StringToFieldCharacterDirection(pReader->ReadTextElement("Direction"));
        characterWalkingAnimationIds[(int)direction] = pReader->ReadTextElement("Id");
    }

    pReader->EndElement();

    pReader->StartElement("CharacterRunningAnimationIds");
    pReader->StartList("Entry");

    while (pReader->MoveToNextListItem())
    {
        FieldCharacterDirection direction = StringToFieldCharacterDirection(pReader->ReadTextElement("Direction"));
        characterRunningAnimationIds[(int)direction] = pReader->ReadTextElement("Id");
    }

    pReader->EndElement();

    pReader->StartElement("Position");
    position = Vector2(pReader);
    pReader->EndElement();

    pHitBox = new HitBox(pReader);
    direction = StringToCharacterDirection(pReader->ReadTextElement("Direction"));
    spriteDirection = StringToFieldCharacterDirection(pReader->ReadTextElement("SpriteDirection"));
    anchorPosition = pReader->ReadIntElement("AnchorPosition");

    pReader->StartElement("ClickRect");
    clickRect = RectangleWH(pReader);
    pReader->EndElement();

    if (pReader->ElementExists("ClickEncounterId"))
    {
        clickEncounterId = pReader->ReadTextElement("ClickEncounterId");
    }

    if (pReader->ElementExists("ClickCutsceneId"))
    {
        clickCutsceneId = pReader->ReadTextElement("ClickCutsceneId");
    }

    if (pReader->ElementExists("InteractionLocation"))
    {
        pReader->StartElement("InteractionLocation");
        interactionLocation = Vector2(pReader);
        pReader->EndElement();
    }
    else
    {
        interactionLocation = Vector2(-1, -1);
    }

    interactFromAnywhere = pReader->ReadBooleanElement("InteractFromAnywhere");

    if (pReader->ElementExists("Condition"))
    {
        pReader->StartElement("Condition");
        pCondition = new Condition(pReader);
        pReader->EndElement();
    }

    pReader->EndElement();
}
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#include "Notification.h"
#include "../globals.h"
#include "../mli_audio.h"
#include "../MouseHelper.h"
#include "../Utils.h"

const int AnimationDuration = 200;
const int PartnerAnimationDelay = 200;

RectangleWH Notification::textAreaRect = RectangleWH(0, 0, 0, 0);
double Notification::desiredPadding = 0;
Font *Notification::pTextFont = NULL;

Vector2 Notification::evidenceCenterPoint;
Image *Notification::pDirectionArrow = NULL;

void Notification::Initialize(
        int textAreaLeft,
        int textAreaTop,
        int textAreaWidth,
        int textAreaHeight,
        double desiredPadding,
        Font *pTextFont,
        int evidenceCenterPointX,
        int evidenceCenterPointY,
void FieldCharacter::Update(int delta)
{
    RectangleWH adjustedClickRect = RectangleWH((int)(GetPosition().GetX() + GetClickRect().GetX()), (int)(GetPosition().GetY() + GetClickRect().GetY() - extraHeight), GetClickRect().GetWidth(), GetClickRect().GetHeight());
    Update(delta, adjustedClickRect);
}
void FieldCharacter::UpdateClickState(Vector2 offsetVector)
{
    RectangleWH adjustedClickRect = RectangleWH((int)(GetPosition().GetX() - offsetVector.GetX() + GetClickRect().GetX()), (int)(GetPosition().GetY() - offsetVector.GetY() + GetClickRect().GetY() - extraHeight), GetClickRect().GetWidth(), GetClickRect().GetHeight());
    UpdateClickState(adjustedClickRect);
}
void Button::Initialize(MLIFont *pTextFont, Image *pCheckMarkImage)
{
    Button::pTextFont = pTextFont;
    Button::pCheckMarkImage = pCheckMarkImage;

    Image *pLockSpriteSheet = ResourceLoader::GetInstance()->LoadImage("image/LockSpriteSheet.png");

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddImage(lockSpriteSheetId, pLockSpriteSheet);

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId01, lockSpriteSheetId, RectangleWH(0,   0,   40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId02, lockSpriteSheetId, RectangleWH(40,  0,   40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId03, lockSpriteSheetId, RectangleWH(80,  0,   40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId04, lockSpriteSheetId, RectangleWH(120, 0,   40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId05, lockSpriteSheetId, RectangleWH(160, 0,   40, 36));

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId06, lockSpriteSheetId, RectangleWH(0,   36,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId07, lockSpriteSheetId, RectangleWH(40,  36,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId08, lockSpriteSheetId, RectangleWH(80,  36,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId09, lockSpriteSheetId, RectangleWH(120, 36,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId10, lockSpriteSheetId, RectangleWH(160, 36,  40, 36));

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId11, lockSpriteSheetId, RectangleWH(0,   72,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId12, lockSpriteSheetId, RectangleWH(40,  72,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId13, lockSpriteSheetId, RectangleWH(80,  72,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId14, lockSpriteSheetId, RectangleWH(120, 72,  40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId15, lockSpriteSheetId, RectangleWH(160, 72,  40, 36));

    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId16, lockSpriteSheetId, RectangleWH(0,   108, 40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId17, lockSpriteSheetId, RectangleWH(40,  108, 40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId18, lockSpriteSheetId, RectangleWH(80,  108, 40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId19, lockSpriteSheetId, RectangleWH(120, 108, 40, 36));
    CommonCaseResources::GetInstance()->GetSpriteManager()->AddSprite(lockAnimationSpriteId20, lockSpriteSheetId, RectangleWH(160, 108, 40, 36));

    pLockSprite = CommonCaseResources::GetInstance()->GetSpriteManager()->GetSpriteFromId(lockAnimationSpriteId01);

    CommonCaseResources::GetInstance()->GetAnimationManager()->AddAnimation(lockAnimationId, &pUnlockingAnimation);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId01);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId02);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId03);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId04);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId05);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId06);
    pUnlockingAnimation->AddSound("Unlocking");
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId07);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId08);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId09);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId10);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId11);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId12);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId13);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId14);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId15);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId16);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId17);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId18);
    pUnlockingAnimation->AddFrame(42, lockAnimationSpriteId19);
    pUnlockingAnimation->AddFrame(0, lockAnimationSpriteId20);
}
void Video::Draw(Vector2 position, bool flipHorizontally, Color color)
{
    Draw(position, flipHorizontally, color, RectangleWH(0, 0, width, height));
}