Browse Source

Merge branch 'master' into ox-move

dmuratshin 8 years ago
parent
commit
574d48d99a
3 changed files with 30 additions and 6 deletions
  1. 1 0
      src/flow/Scene.h
  2. 24 6
      src/flow/flow.cpp
  3. 5 0
      src/flow/flow.h

+ 1 - 0
src/flow/Scene.h

@@ -119,6 +119,7 @@ namespace oxygine
             bool            isDialog() const { return _dialog; }
             bool            isInStackWide() const { return _instackWide; }
             bool            isVisibleWide() const { return _visibleWide; }
+            bool            isFinished() const { return _done; }
 
             void setPassBlockedTouch(bool v) { _passBlockedTouch = v; }
 

+ 24 - 6
src/flow/flow.cpp

@@ -60,6 +60,7 @@ namespace oxygine
             _transition = false;
             _transitionDone = false;
             _back = false;
+            _locked = false;
         }
 
         Flow::~Flow()
@@ -110,8 +111,12 @@ namespace oxygine
 
         void Flow::blockedTouch(Event* ev)
         {
+            if (_locked)
+                return;
+
             if (_tm + BLOCK_TOUCH_DURATION > getTimeMS())
                 return;
+
             TouchEvent* event = safeCast<TouchEvent*>(ev);
             _blockedTouchPosition = event->getPointer()->getPosition();
             _wasTouchBlocked = true;
@@ -139,6 +144,17 @@ namespace oxygine
             }
         }
 
+        void Flow::lockBlockedTouches()
+        {
+            _locked = true;
+        }
+
+        void Flow::unlockBlockedTouches()
+        {
+            _locked = false;
+        }
+
+
         void Flow::phaseBegin(spScene current, spScene next, bool back)
         {
             _back = back;
@@ -251,7 +267,7 @@ namespace oxygine
             {
                 if (scenes2show.empty())
                 {
-                    if (current->_passBlockedTouch)
+                    if (current->_passBlockedTouch && !_locked)
                     {
                         LOGD("send  blocked touch");
                         TouchEvent click(TouchEvent::CLICK, true, _blockedTouchPosition);
@@ -391,12 +407,14 @@ namespace oxygine
                 if (_wasBackBlocked)
                 {
                     _wasBackBlocked = false;
+                    if (!_locked)
+                    {
+                        LOGD("send  blocked BACK");
 
-                    LOGD("send  blocked BACK");
-
-                    Event ev(Scene::EVENT_BACK);
-                    current->dispatchEvent(&ev);
-                    checkDone();
+                        Event ev(Scene::EVENT_BACK);
+                        current->dispatchEvent(&ev);
+                        checkDone();
+                    }
                 }
                 else
                 {

+ 5 - 0
src/flow/flow.h

@@ -2,6 +2,7 @@
 #include "oxygine/core/Object.h"
 #include <functional>
 #include "Scene.h"
+#include "Transition.h"
 
 namespace oxygine
 {
@@ -57,11 +58,15 @@ namespace oxygine
             bool hasSceneInStack(spScene) const;
             void removeFromStack(spScene);
 
+            void lockBlockedTouches();
+            void unlockBlockedTouches();
+
             std::list<spScene> scenes;
             std::list<spScene> scenes2show;
 
             bool _transition;
             bool _back;
+            bool _locked;
 
             spTransition _trans;
             bool _transitionDone;