Blame view

ios/Runner/Wowgame/Classes/game_toy/ToyDragAndDropHandler.h 3.81 KB
5daad4bc   xiaoyu   游戏源码添加编译(现存问题:游戏内...
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
  //
  //  ToyDragAndDropHandler.h
  //  SteveMaggieCpp
  //
  //  Created by Katarzyna Kalinowska-Górska on 02.06.2017.
  //
  //
  
  #ifndef ToyDragAndDropHandler_h
  #define ToyDragAndDropHandler_h
  
  #include <stdio.h>
  #include <vector>
  #include "cocos2d.h"
  #include "ToyScenarioObject.h"
  #include "TouchHandlerTypes.h"
  
  
  class ToyDragAndDropHandler : public ToyScenarioObject
  {
      public:
      
          typedef enum DragState {
              NotDragging,
              Dragging,
              DraggingOverCorrectDestination,
              DraggingOverWrongDestination
          } DragState;
      
          ToyDragAndDropHandler(std::vector<cocos2d::Node*> objectsToDrag, cocos2d::Node* destinationObject, std::vector<cocos2d::Node*> wrongDraggedObjects = std::vector<cocos2d::Node*>(), std::vector<cocos2d::Node*> wrongDestinationObjects = std::vector<cocos2d::Node*>());
      
          virtual TouchHandlerFunction prepareTouchBeganHandler();
          virtual TouchHandlerFunction prepareTouchMovedHandler();
          virtual TouchHandlerFunction prepareTouchEndedHandler();
      
          virtual void setObjectToDragExtendPercentValues(std::vector<float>);
          virtual void setAccurateDestinationCheck(bool accurateDstCheck);
          virtual void setFingerOnlyDestinationCheck(bool fingerOnlyDstCheck);
      
          friend class ToyBlockingActionParser; //temporary. will prepare setters when I have more time
      
      protected:
      
          bool _allowDraggingWrongObjects;
          bool _allowDraggingInvisibleObjects;
          bool _allowMultipleDrag;
          bool _moreAccurateDestinationCheck;
          bool _fingerOnlyDestinationCheck;
      
          std::vector<cocos2d::Node*> _objectsToDrag;
          std::vector<float> _extendPercentValues;
          std::vector<cocos2d::Node*> _wrongDestinationObjects;
          std::vector<cocos2d::Node*> _wrongDraggedObjects;
          std::vector<int> _cachedDraggedObjectRFActionTags;
      
          cocos2d::Node* _draggedObject;
          cocos2d::Node* _destinationObject;
          int _draggedObjectOriginalZ;
      
          bool _draggingWrongObject;
          cocos2d::Node* _draggingOverWrongDestinationObject;
          DragState _currentDraggingState;
      
          cocos2d::Point _startLocation;
          cocos2d::Point _startingObjectPosition;
      
          std::function<void(cocos2d::Node*, cocos2d::Node*)> _finalSuccessCallback;
          std::function<void(cocos2d::Node*, cocos2d::Node*)> _successCallback;
          std::function<void(cocos2d::Node*)> _wrongDestinationObjectCallback;
          std::function<void(cocos2d::Node*)> _startDraggingWrongObjectCallback;
          std::function<void(cocos2d::Node*)> _startDraggingCorrectObjectCallback;
  //        std::map<std::string, std::function<void(cocos2d::Node*)>> _startDraggingConcreteObjectCallbacks;
          std::function<void(cocos2d::Node*, cocos2d::Node*)> _draggedObjectEnterCorrectDestinationCallback;
          std::function<void(cocos2d::Node*, cocos2d::Node*)> _draggedObjectEnterWrongDestinationCallback;
          std::function<void()> _dropTooSoonCallback;
          std::function<void(cocos2d::Node*)> _draggedWrongObjectCallback;
      
          std::function<void(cocos2d::Node*, cocos2d::Node*, cocos2d::Point)> _objectDragNDropSuccessBehaviour;
      
          virtual void onMovingOverCorrectDestination();
          virtual void onMovingOverWrongDestination(cocos2d::Node* wrongDestinationObject);
          virtual void onMovingOverNothing();
          virtual void onTouchEndedOverCorrectDestination();
          virtual void draggedObjectMoveBack(bool restoreActions);
          virtual cocos2d::Node* detectDestination(const cocos2d::Point& touchLocation, bool& isRightObject, bool& isWrongObject);
          virtual bool checkDraggingOverCorrectDestination(const cocos2d::Point& touchLocation);
          virtual cocos2d::Node* checkDraggingOverWrongDestination(const cocos2d::Point& touchLocation);
  };
  
  #endif /* ToyDragAndDropHandler_h */