SceneWithUtils.h 2.25 KB
//
//  SceneWithUtils.h
//  SteveMaggieCpp
//
//  Created by Katarzyna Kalinowska-Górska on 11.05.2017.
//
//

#ifndef SceneWithUtils_h
#define SceneWithUtils_h

#include "cocos2d.h"

class SceneWithUtils : public cocos2d::Scene
{

    public:
    
        // enums
    
        typedef enum AnimationType {
            NONE,
            SCALE_DOWN,
            SCALE_UP,
            FADE_OUT,
            FADE_IN
        } AnimationType;
    
        // presenting dialogs
    
        virtual void presentDialog(cocos2d::Node* dialogView, AnimationType presentAnimationType, AnimationType dismissAnimationType, const std::function<void()> presentCallback = [](){});
        virtual void presentDialog(cocos2d::Node* dialogView, AnimationType presentAnimationType, AnimationType dismissAnimationType, cocos2d::Point dialogViewPosition, cocos2d::Point dialogViewAnchorPoint, const std::function<void()> presentCallback = [](){});

        virtual void dismissCurrentDialog();
        virtual void dismissCurrentDialog(const std::function<void()> dismissCallback);

        virtual void presetDialogDismissCallback(const std::function<void()> dismissCallback);
    
        static AnimationType animationTypeFromString(std::string animationType);
    
        // other
        virtual void setScenePresentCallback(std::function<void()> callback);
        virtual void setSceneDismissCallback(std::function<void()> callback);
    
        // overrides
        
        virtual bool init() override;
        virtual void onEnterTransitionDidFinish() override;
        virtual void onExit() override;
    
    protected:
    
        cocos2d::Node* _currentDialogView;
        SceneWithUtils::AnimationType _dialogDismissAnimationType;
        std::function<void()> _dialogDismissCallback;
        std::function<void()> _dialogPresentCallback;
        std::function<void()> _fullDismissCallback;

        bool _touchOutsideDismissesDialog;

        cocos2d::Node* _currentLoadingView;

        std::string _backgroundMusicFilePath;

        std::function<void()> _scenePresentCallback;
        std::function<void()> _sceneDismissCallback;

        virtual void _animateDialogView(cocos2d::Node* dialogView, AnimationType animationType, const std::function<void()>& callback);
};

#endif /* SceneWithUtils_h */