ParentScene.h
4.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//
// ParentScene.h
// SteveMaggieCpp
//
// Created by Katarzyna Kalinowska-Górska on 16.05.2017.
//
//
#ifndef ParentScene_h
#define ParentScene_h
#include "SceneWithUtils.h"
//#include "ScenarioHandler.h"
#include "ui/CocosGUI.h"
#include "TouchHandlerTypes.h"
#include "ScenarioObject.h"
#include "LayoutParser.h"
#include "audio/include/AudioEngine.h"
class ParentScene : public SceneWithUtils, public ScenarioObject, public LayoutViewInterface
{
// friend class ScenarioHandler;
public:
// create
static ParentScene* create(std::string layoutFilePath = "", std::string scenarioFilePath = "");
virtual bool initWithConfigurationFiles(std::string layoutFilePath = "", std::string scenarioFilePath = "");
// overrides
virtual void onEnter() override;
virtual void onExit() override;
// 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;
virtual void setupBackgroundMusic(std::string backgroundMusicPath) override;
virtual bool touchHandlerForWidget(std::string objectName, cocos2d::ui::Widget::TouchEventType touchEventType) override;
// Scenario Object
virtual ScenarioObject* getObjectByName(std::string objectName) override;
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<void()> callback = [](){}) override;
virtual std::string getPropertyAsString(std::string propertyName = "") override;
// other
virtual void addNewObject(std::string objectName, ScenarioObject* newObject);
virtual void disableButton(const std::string& buttonName);
virtual void enableButton(const std::string& buttonName);
virtual void disableFastForwardButton();
virtual void enableFastForwardButton();
virtual long long getLastScreenTouchTime();
virtual void setAlwaysSkipDemo(bool alwaysSkipDemo);
virtual void addTouchHandler(std::string key, TouchHandlerFunction touchHandler, TouchHandlerType touchType);
virtual void removeTouchHandler(std::string touchHandlerKey, TouchHandlerType touchHandlerType);
virtual void setLoadFromAssets(bool loadFromAssets);
protected:
// configuration file paths
std::string _layoutFilePath;
std::string _scenarioFilePath;
bool _loadFromAssets;
// layout objects
std::vector<cocos2d::Layer*> _layers;
std::map<std::string, cocos2d::Node*> _objects;
std::map<std::string, ScenarioObject*> _scenarioObjects; // other than cocos2d::Nodes
// state vars
bool _layoutLoaded;
// scenario handling
bool _alwaysSkipDemo;
// ScenarioHandler* _scenarioHandler;
// touch handling
std::map<std::string, TouchHandlerFunction> _touchBeganHandlers;
std::map<std::string, TouchHandlerFunction> _touchMovedHandlers;
std::map<std::string, TouchHandlerFunction> _touchEndedHandlers;
std::map<std::string, TouchHandlerType> _touchHandlersToRemove;
bool _isHandlingTouches;
long long _lastUserTouchEndedTime;
long long _lastUserTouchMovedTime;
bool _userTaskInteractionStarted;
std::map<std::string, bool> _userTaskInteractionStartedMap;
std::string _currentTask;
bool _rightObjectTouchedAlready;
bool isShowingLevelPicker;
// methods
virtual void adjustBgMusicButton(bool bgMusicPlaying);
virtual void reloadLayoutClean();
virtual void loadLayout(bool forceLoad);
virtual void loadScenario(bool skipDemoActions);
virtual void configureTransitionListeners();
virtual void onGameHide(cocos2d::EventCustom* event);
virtual void onGameShow(cocos2d::EventCustom* event);
virtual void resetLastUserTouchTimes();
virtual void configureTouchHandlers();
virtual void filterTouchHandlers();
virtual void clearTouchHandlers();
virtual std::map<std::string, TouchHandlerFunction>* pickTouchHandlersContainer(TouchHandlerType touchHandlerType);
virtual void addNewNodeToObjectLayer(cocos2d::Node* newNode);
virtual void addTouchBlockingLayer(cocos2d::Node* layer);
virtual void showTOSAcceptPopup(std::function<void()> onAccept);
virtual void showLevelPickerLayer(std::function<void()> onLayerDismissed, std::function<void(int)> onLevelChanged = [](int){});
virtual void repeatPickLevelPrompt();
};
#endif /* ParentScene_h */