Blame view

ios/Runner/Wowgame/Classes/game_toy/ToyActionSequenceHandler.cpp 5.55 KB
cb213901   xiaoyu   添加一个游戏的源码和编译选项
1
  //
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
2
  //  ToyActionSequenceHandler.cpp
cb213901   xiaoyu   添加一个游戏的源码和编译选项
3
4
5
6
7
8
9
  //  SteveMaggieCpp
  //
  //  Created by Katarzyna Kalinowska-Górska on 29.06.2017.
  //
  //
  
  #include <stdio.h>
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
10
11
12
  #include "ToyActionSequenceHandler.h"
  #include "ToyResourceUtilities.h"
  #include "ToyValueStorage.h"
cb213901   xiaoyu   添加一个游戏的源码和编译选项
13
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
14
  ToyActionSequenceHandler::ToyActionSequenceHandler(ToyScenarioObject* containerNode, const rapidjson::Value& actionsArray)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  {
      _containerNode = containerNode;
      _JSONDataStorage = new (std::nothrow) rapidjson::Document();
      _actions = new (std::nothrow) rapidjson::Value();
      _actions->CopyFrom(actionsArray, _JSONDataStorage->GetAllocator());
      
      static int valueStorageKeyNumber = 0;
      valueStorageKeyNumber = (valueStorageKeyNumber + 1)%100;
      _valueStorageContainerName = "ActionSequenceHandlerValues" + std::to_string(valueStorageKeyNumber);
      _lastActionIndex = -1;
      _onLastActionFinished = [](){};
      _currentAction = nullptr;
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
29
  ToyActionSequenceHandler::~ToyActionSequenceHandler()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
30
31
32
33
34
  {
      delete _JSONDataStorage;
      delete _actions;
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
35
  void ToyActionSequenceHandler::runNext()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
36
37
38
39
40
41
42
43
44
45
  {
      auto i = _lastActionIndex+1;
      auto actionsArray = _actions->GetArray();
      
      if(i >= actionsArray.Size()){
          return;
      }
      
      const auto& currentAction = actionsArray[i];
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
46
      auto parsedAction = ToyActionParser::getInstance().parseJSONAction(currentAction, this);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
47
48
49
50
51
52
53
54
55
56
57
58
      
      _lastActionIndex = i;
      
      if(parsedAction){
          this->runAction(parsedAction);
      } else {
          this->actionFinished(currentAction);
      }
      
      _currentAction = parsedAction;
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
59
  void ToyActionSequenceHandler::reset()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
60
61
62
63
64
  {
      _lastActionIndex = -1;
      _currentAction = nullptr;
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
65
  void ToyActionSequenceHandler::stop()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
66
67
68
69
70
71
72
  {
      if(_currentAction){
          auto containerNode = dynamic_cast<cocos2d::Node*>(_containerNode);
          if(containerNode){
              containerNode->stopAction(_currentAction);
          }
      }
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
73
      ToyActionParser::getInstance().cleanUp(this);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
74
75
76
77
78
      this->reset();
  }
  
  // methods for parseDelegate
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
79
  ToyScenarioObject* ToyActionSequenceHandler::getObjectByName (std::string objectName)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
80
  {
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
81
      return _containerNode->getToyScenarioObjectByName(objectName);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
82
83
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
84
  ToyScenarioObject* ToyActionSequenceHandler::getDefaultObjectForAction(std::string actionType)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
85
  {
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
86
      return dynamic_cast<ToyScenarioObject*>(_containerNode);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
87
88
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
89
  ToyScenarioObject* ToyActionSequenceHandler::getDefaultObjectForConditionCheck()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
90
  {
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
91
      return dynamic_cast<ToyScenarioObject*>(_containerNode);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
92
93
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
94
  void ToyActionSequenceHandler::addNewObject(std::string objectName, ToyScenarioObject* newObject)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
95
96
97
98
  {
      // do nothing
  }
          
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
99
  std::string ToyActionSequenceHandler::getDefaultSoundsPath()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
100
  {
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
101
      return ToyResourceUtilities::getInstance().getDownloadedResourcesPath(false);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
102
103
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
104
  std::string ToyActionSequenceHandler::getAlternativeSoundsPath()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
105
  {
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
106
      return ToyResourceUtilities::getInstance().getDownloadedResourcesPath(false);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
107
108
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
109
  std::string ToyActionSequenceHandler::getToyValueStorageContainerName()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
110
111
112
113
  {
      return _valueStorageContainerName;
  }
   
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
114
  void ToyActionSequenceHandler::runAction(cocos2d::Action* action)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
115
116
117
118
119
120
121
  {
      auto containerNode = dynamic_cast<cocos2d::Node*>(_containerNode);
      if(containerNode){
          containerNode->runAction(action);
      }
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
122
  void ToyActionSequenceHandler::actionFinished(const rapidjson::Value& jsonActionObject)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
123
124
125
126
127
  {
      if(_lastActionIndex < _actions->GetArray().Size() - 1){
          this->runNext();
      } else {
          _onLastActionFinished();
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
128
          ToyActionParser::getInstance().cleanUp(this);
cb213901   xiaoyu   添加一个游戏的源码和编译选项
129
130
131
      }
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
132
  void ToyActionSequenceHandler::runInstantly(std::function<void()> actionFunction)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
133
134
135
136
  {
      actionFunction();
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
137
  void ToyActionSequenceHandler::runCompletingAction(cocos2d::Action* action)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
138
139
140
141
  {
      // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
142
  void ToyActionSequenceHandler::cancelAllCompletingActions()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
143
144
145
146
  {
      // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
147
  void ToyActionSequenceHandler::schedule(std::function<void(float)> callback, std::string key, float delay)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
148
149
150
151
152
153
154
  {
      auto containerNode = dynamic_cast<cocos2d::Node*>(_containerNode);
      if(containerNode){
          containerNode->schedule(callback, delay, key);
      }
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
155
  void ToyActionSequenceHandler::scheduleOnce(const std::function<void(float)> callback, float delay, std::string key)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
156
157
158
159
160
161
162
  {
      auto containerNode = dynamic_cast<cocos2d::Node*>(_containerNode);
      if(containerNode){
          containerNode->scheduleOnce(callback, delay, key);
      }
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
163
  void ToyActionSequenceHandler::unschedule(std::string key)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
164
165
166
167
168
169
170
  {
      auto containerNode = dynamic_cast<cocos2d::Node*>(_containerNode);
      if(containerNode){
          containerNode->unschedule(key);
      }
  }
  
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
171
  void ToyActionSequenceHandler::newTouchHandler(std::string key, TouchHandlerFunction touchHandler, TouchHandlerType touchType)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
172
173
174
175
  {
      // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
176
  void ToyActionSequenceHandler::removeTouchHandler(std::string key, TouchHandlerType touchHandlerType)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
177
178
179
180
  {
      // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
181
  long long ToyActionSequenceHandler::getLastScreenTouchTime()
cb213901   xiaoyu   添加一个游戏的源码和编译选项
182
183
184
185
  {
      return 0;
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
186
  int ToyActionSequenceHandler::getLoopActionCounter(std::string loopId)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
187
188
189
190
  {
      return 0;
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
191
  int ToyActionSequenceHandler::addNewLoopActionCounter(std::string loopId, int timesRepeated)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
192
193
194
195
  {
      return 0;
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
196
  int ToyActionSequenceHandler::decrementLoopActionCounter(std::string loopId)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
197
198
199
200
  {
       return 0;
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
201
  void ToyActionSequenceHandler::deleteLoopActionCounter(std::string loopId)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
202
203
204
205
  {
       // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
206
  void ToyActionSequenceHandler::setLastActionIndex(int index)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
207
208
209
210
  {
      _lastActionIndex = index;
  }
   
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
211
  void ToyActionSequenceHandler::storeSoundId(std::string soundPath, unsigned int newSoundId)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
212
213
214
215
  {
      // do nothing
  }
      
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
216
  unsigned int ToyActionSequenceHandler::removeStoredSoundId(std::string soundPath)
cb213901   xiaoyu   添加一个游戏的源码和编译选项
217
218
219
  {
      return -1;
  }