CustomLayerView.h 1.98 KB
//
//  CustomLayerView.h
//  SteveMaggieCpp
//
//  Created by Katarzyna Kalinowska-Górska on 19.05.2017.
//
//

#ifndef CustomLayerView_h
#define CustomLayerView_h

#include "ScenarioObject.h"
#include "LayoutParser.h"
#include "ActionSequenceHandler.h"

class CustomLayerView : public cocos2d::Layer, public LayoutViewInterface, public ScenarioObject
{
    public:
        static CustomLayerView* create(std::string layoutFilePath, std::string scenarioFilePath = "");
        virtual bool init(std::string layoutFilePath, std::string scenarioFilePath = "");
        virtual ~CustomLayerView();
    
        virtual void onEnter() override;
        virtual void onExit() override;
        virtual void loadLayout(bool forceLoad);
        virtual void layoutLoaded();
        virtual void resetActionSequence();
    
        virtual bool touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType) override;
    
        virtual void setWidgetTouchEventCallback(std::function<void(std::string widgetName, cocos2d::ui::Widget::TouchEventType touchEventType)> widgetTouchEventCallback);
    
        //LayoutViewInterface
        virtual void addLayer(cocos2d::Layer* layer) override;
        virtual void addObject(std::string objectName, cocos2d::Node* object) override;
        virtual void addScenarioObject(std::string objectName, ScenarioObject* object) override;
    
        //ScenarioObject - for ActionSequenceHandler
        virtual ScenarioObject* getScenarioObjectByName(std::string name) override;
    
    protected:
        std::string _layoutFilePath;
        ActionSequenceHandler* _actionSequenceHandler;
        bool _layoutLoaded;
        std::vector<cocos2d::Layer*> _layers;
        std::map<std::string, cocos2d::Node*> _objects;
        std::map<std::string, ScenarioObject*> _scenarioObjects;
        bool _loadFromAssets;
    
        std::function<void(std::string, cocos2d::ui::Widget::TouchEventType)> _widgetTouchEventCallback;
};

#endif /* CustomLayerView_h */