HTOSAcceptPopupView.cpp 4.16 KB
//
// Created by Katarzyna Kalinowska-Górska on 2019-10-14.
//

#include "HTOSAcceptPopupView.h"
#include "HTouchInterceptingLayer.h"
#include "HalloweenSimpleButton.h"
#include "HScalingUtils.h"
#include "HParentalGateView.h"
#include "HMiscUtils.h"
#include "HStrings.h"
#include <stdio.h>

HTOSAcceptPopupView * HTOSAcceptPopupView::create(std::function<void()> onAcceptCallback){
    HTOSAcceptPopupView * view = new (std::nothrow) HTOSAcceptPopupView();

    if(view && view->init(onAcceptCallback))
    {
        view->autorelease();
        return view;
    }
    CC_SAFE_DELETE(view);
    return nullptr;
}

bool HTOSAcceptPopupView::init(std::function<void()> onAcceptCallback){
    if(!cocos2d::LayerColor::initWithColor(cocos2d::Color4B(0, 0, 0, 220))){
        return false;
    }

    _onAcceptCallback = onAcceptCallback;
    setupAppearance();
    
    return true;
}

void HTOSAcceptPopupView::setupAppearance(){
    auto popup = cocos2d::Sprite::create("graphics/accept_popup.png"); //TODO hard-coded stirng
    auto wholeSize = cocos2d::Director::getInstance()->getWinSize();
    setContentSize(wholeSize);
    addChild(popup);
    popup->setPosition(cocos2d::Vec2(wholeSize.width/2, wholeSize.height/2));
    
    auto menuItemColor = cocos2d::Color3B(40, 80, 160);
    cocos2d::MenuItemFont::setFontSize(120*HScalingUtils::getScaleForFont()); //TODO MAGIC NUMBER
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    cocos2d::MenuItemFont::setFontName("ComicSansMS-Bold");
#else
    cocos2d::MenuItemFont::setFontName("fonts/ComicSansMSBold.ttf");
#endif
    
//    auto paddingBottom = 40*HScalingUtils::scaleAspectFillToDesignIpadProSize();
    auto menuPadding = 40*HScalingUtils::scaleAspectFillToDesignIpadProSize();//TODO magic number
    auto menuItemAbout = cocos2d::MenuItemFont::create("Terms of Use", CC_CALLBACK_1(HTOSAcceptPopupView::aboutMenuButtonTapped, this));
    auto menuItemPrivacyPolicy = cocos2d::MenuItemFont::create("Privacy Policy", CC_CALLBACK_1(HTOSAcceptPopupView::privacyPolicyMenuButtonTapped, this));
    auto menuCenter = cocos2d::Menu::create(menuItemAbout,menuItemPrivacyPolicy, NULL);
    menuCenter->setContentSize(cocos2d::Size(MAX(menuItemAbout->getBoundingBox().size.width, menuItemPrivacyPolicy->getBoundingBox().size.width), menuItemAbout->getBoundingBox().size.height + menuItemPrivacyPolicy->getBoundingBox().size.height + 3*menuPadding));
    menuCenter->setColor(menuItemColor);
    menuCenter->alignItemsVerticallyWithPadding(menuPadding);
    addChild(menuCenter);
    menuCenter->setPosition(wholeSize.width/2, wholeSize.height/2);
    menuCenter->setVisible(false);
    
    auto buttonAccept = HalloweenSimpleButton::create();
    auto acceptButtonTexturePath = "graphics/accept_button.png";
    buttonAccept->loadTextures(acceptButtonTexturePath, acceptButtonTexturePath, acceptButtonTexturePath);
    addChild(buttonAccept);
    buttonAccept->setAnchorPoint(cocos2d::Vec2(0.5, 1));
    buttonAccept->cocos2d::Node::setPosition(wholeSize.width/2, menuCenter->getPositionY() - menuCenter->getContentSize().height/2 - menuPadding);
    buttonAccept->setOnTouchEndedCallback([&](std::string name, cocos2d::ui::Widget::TouchEventType eventType){
        _onAcceptCallback();
        HMiscUtils::hideAndRemoveView(this, true);
//        presentParentalGate([&](){
//            hideParentalGate();
//            _onAcceptCallback();
//            HMiscUtils::hideAndRemoveView(this, true);
//        }, [&](){
//            hideParentalGate();
//        });
    });
}

void HTOSAcceptPopupView::aboutMenuButtonTapped(cocos2d::Ref* pSender){
    presentParentalGate([&](){
        hideParentalGate();
        //cocos2d::Application::getInstance()->openURL(HStrings::LINK_TERMS_OF_SERVICE);
        cocos2d::Application::getInstance()->openURL(HStrings::LINK_TERMS_OF_SERVICE);
    }, [&](){
        hideParentalGate();
    });
}

void HTOSAcceptPopupView::privacyPolicyMenuButtonTapped(cocos2d::Ref* pSender){
    presentParentalGate([&](){
        hideParentalGate();
        cocos2d::Application::getInstance()->openURL(HStrings::LINK_PRIVACY_POLICY);
//        cocos2d::Application::getInstance()->openURL(HStrings::LINK_PRIVACY_POLICY);
    }, [&](){
        hideParentalGate();
    });
}