ToySceneWithUtils.h 2.34 KB
//
//  ToySceneWithUtils.h
//  SteveMaggieCpp
//
//  Created by Katarzyna Kalinowska-Górska on 11.05.2017.
//
//

#ifndef ToySceneWithUtils_h
#define ToySceneWithUtils_h

#include "cocos2d.h"

class ToySceneWithUtils : public cocos2d::Scene
{

    public:
    
        // enums
    
        typedef enum AnimationType {
            NONE,
            SCALE_DOWN,
            SCALE_UP,
            FADE_OUT,
            FADE_IN
        } AnimationType;
    
        static const std::string BG_MUSIC_PLAYING_USER_DEFAULTS_KEY;
    
        // 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;
        ToySceneWithUtils::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 /* ToySceneWithUtils_h */