AniMultipleTouchGestureRecognizer.h 2.67 KB
//
//  AniMultipleTouchGestureRecognizer.h
//  SteveMaggieCpp
//
//  Created by Katarzyna Kalinowska-Górska on 19.05.2017.
//
//

#ifndef AniMultipleTouchGestureRecognizer_h
#define AniMultipleTouchGestureRecognizer_h

#include "AniGestureRecognizer.h"

class AniMultipleTouchGestureRecognizer : public AniGestureRecognizer
{
    public:
        AniMultipleTouchGestureRecognizer();
        virtual ~AniMultipleTouchGestureRecognizer();
    
        virtual void setOnSingleTouchDetectedCallback(std::function<void(AniGestureRecognizer::TouchData touchData)> callback);
        virtual void setOnSingleTouchMovedCallback(std::function<void(AniGestureRecognizer::TouchData touchData)> callback);
        virtual void setOnSingleTouchEndedCallback(std::function<void(AniGestureRecognizer::TouchData touchData)> callback);
    
        virtual void setOnMultipleTouchDetectedCallback(std::function<void(std::vector<AniGestureRecognizer::TouchData>)> callback);
        virtual void setOnMultipleTouchMovedCallback(std::function<void(std::vector<AniGestureRecognizer::TouchData>)> callback);
        virtual void setOnMultipleTouchEndedCallback(std::function<void(std::vector<AniGestureRecognizer::TouchData>)> callback);
    
    protected:
    
        std::function<void(AniGestureRecognizer::TouchData)> _onSingleTouchDetectedCallback;
        std::function<void(AniGestureRecognizer::TouchData)> _onSingleTouchMovedCallback;
        std::function<void(AniGestureRecognizer::TouchData)> _onSingleTouchEndedCallback;
    
        std::function<void(std::vector<AniGestureRecognizer::TouchData>)> _onMultipleTouchDetectedCallback;
        std::function<void(std::vector<AniGestureRecognizer::TouchData>)> _onMultipleTouchMovedCallback;
        std::function<void(std::vector<AniGestureRecognizer::TouchData>)> _onMultipleTouchEndedCallback;
    
//    onMultipleTouchFingerAdded : function(touches){ //TODO, now unhandled
//    onMultipleTouchFingerRemoved : function(touches){ //TODO, now unhandled

        std::function<void(float)> _singleTouchHelperCallback;
        bool _singleTouchHelperCallbackScheduled;
        bool _singleTouchInProgress;
        bool _multipleTouchInProgress;
    
        const std::string SingleTouchHelperCallbackKey = "AniMultipleTouchGestureRecognizer_singleTouchHelperCallback";
    
        //////
        virtual bool onTouchesBegan(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event) override;
        virtual void onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event) override;
        virtual void onTouchesEnded(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event) override;
};

#endif /* AniMultipleTouchGestureRecognizer_h */