// // TimeSliderNode.h // WattsenglishToyApp // // Created by Katarzyna Kalinowska-Górska on 27/12/2019. // #ifndef AniProgressSliderNode_h #define AniProgressSliderNode_h #include "cocos2d.h" #include "AniLayoutObject.h" #include "AniTimeIndicatorInterface.h" using AniProgressSliderNodeOrientation = int; static constexpr AniProgressSliderNodeOrientation AniProgressSliderNodeOrientationHorizontal {0}; static constexpr AniProgressSliderNodeOrientation AniProgressSliderNodeOrientationVertical {1}; class AniProgressSliderNode : public cocos2d::Node, public AniLayoutObject, public AniTimeIndicatorInterface { public: static AniProgressSliderNode* create(const std::string& sliderImageFilePath, const std::string& thumbImageFilePath, float minVal, float maxVal, AniProgressSliderNodeOrientation p_orientation); virtual bool init(const std::string& sliderImageFilePath, const std::string& thumbImageFilePath, float minVal, float maxVal, AniProgressSliderNodeOrientation p_orientations); virtual void loadPropertiesFromJSON(const rapidjson::Value& jsonValue, AniLayoutViewInterface* scene = NULL, const std::string resFolder = "", const std::string altResFolder = "") override; virtual void prepareSize(const rapidjson::Value& jsonValue, float& width, float& height) override; // AniScenarioObject virtual void setProperty(std::string propertyName, const rapidjson::Value& newValue, ActionParseDelegate* parseDelegate) override; virtual void callFunctionByName(std::string methodName, const rapidjson::Value* arguments, ActionParseDelegate* parseDelegate, std::function callback = [](){}) override; // slider's own methods virtual void setProgressFrac(float progressFrac) override; virtual void setProgress(float progress) override; virtual float currentProgress() { return _currentValue;}; virtual void startTimeAnimation(float timeDuration) override; virtual void pauseTimeAnimation() override; virtual void resumeTimeAnimation() override; virtual void pause() override { pauseTimeAnimation(); } virtual void resume() override { resumeTimeAnimation(); } virtual void stopTimeAnimation() override; virtual void setContentSize(const cocos2d::Size& contentSize) override; protected: cocos2d::Sprite* _sliderSprite; cocos2d::Sprite* _thumbSprite; float _minValue; float _maxValue; float _currentValue; float _indicatorInset { 0 }; AniProgressSliderNodeOrientation m_orientation { AniProgressSliderNodeOrientationHorizontal }; virtual void updateProgressUI(float value, bool animated = true); void adjustThumbSpritePosition(); }; #endif /* TimeSliderNode_h */