/// <summary>
 /// Notify the transition that it has been 'selected'
 /// By default, it does nothing but notifies the process instance
 /// that the transition has been selected
 /// </summary>
 public void NotifyTransitionSelected()
 {
     ActivationRequired(true);
     if (this.Status != TransitionStatus.ENABLED &&
         this.Status != TransitionStatus.STARTED)
         throw new Exception("Status invalid");
     OnTransitionSelected();
     this.Status = TransitionStatus.STARTED;
     _containerCallback.TransitionStarted(this.CorrelationId);
 }
 public ActiveTransition(Task tsk)
 {
     this.Status = TransitionStatus.ENABLED;
     this.TaskId = tsk.Id;
 }
 /// <summary>
 /// Initiate task (start the transition).
 /// If the transition is immediate, this operation will execute the task.
 /// If the transition is not immediate, this will initiate the transition.
 /// Subclasses should override this function, but should always call base.InitiateTask()
 /// </summary>
 public virtual void InitiateTask()
 {
     ActivationRequired(true);
     this.Status = TransitionStatus.ENABLED;
     DoInitiateTask();
 }
 /// <summary>
 /// Pass task completion information to active transition.
 /// As a result, task internal data is updated and
 /// OnTaskCompleted is invoked. Then the transition is marked
 /// as completed and TransitionCompleted callback is invoked.
 /// </summary>
 /// <param name="tci"></param>
 public void NotifyTaskCompleted(TaskCompletionInfo tci)
 {
     ActivationRequired(true);
     if (Status != TransitionStatus.STARTED &&
         Status != TransitionStatus.COMPLETED)
         throw new ApplicationException("Invalid transition status");
     if (tci.CorrelationId != this.CorrelationId)
         throw new ApplicationException("Invalid correlation id");
     if (tci.ResultXml != null)
     {
         DataObject dob = DataObject.ParseXml(tci.ResultXml);
         this.UpdateTaskData(dob);
     }
     OnTaskCompleted(tci);
     this.Status = TransitionStatus.COMPLETED;
     _containerCallback.TransitionCompleted(CorrelationId);
 }
 /// <summary>
 /// Invoked by runtime to cancel an active transition
 /// </summary>
 public virtual void CancelTask()
 {
     ActivationRequired(true);
     if (this.Status != TransitionStatus.ENABLED && Status != TransitionStatus.STARTED)
         throw new ApplicationException("Cannot cancel task - status invalid");
     DoCancelTask();
     this.Status = TransitionStatus.CANCELLED;
 }
 /// <summary>
 /// Execute an immediate task
 /// </summary>
 public virtual void ExecuteTask()
 {
     ActivationRequired(true);
     if (!IsImmediate) throw new ApplicationException("Execute is allowed only for immediate task");
     DoExecuteTask();
     this.Status = TransitionStatus.COMPLETED;
     this._containerCallback.TransitionCompleted(this.CorrelationId);
 }
Exemple #7
0
        public override void Update(GameTime gameTime, ScreenManager screenManager)
        {
            if (!Enabled) return;

            //control finished!
            if (status == TransitionStatus.Dead)
            {
                //call OnFinish event
                if (OnFinish != null)
                    OnFinish(this);

                return;
            }

            if (status == TransitionStatus.Dead) return;
            if (status == TransitionStatus.NotShown) status = TransitionStatus.TransitioningIn;

            //now this.status must among [FadingIn, Shown, FadingOut]
            switch (status)
            {
                case TransitionStatus.TransitioningIn:
                    if (!UpdateTransition(gameTime, transitionOnTime, 1))
                    {
                        status = TransitionStatus.Shown;
                    }
                    break;

                case TransitionStatus.Shown:
                    alreadyShownTime += gameTime.ElapsedGameTime;
                    if (stopTime != TimeSpan.Zero && alreadyShownTime > stopTime)
                    {
                        // clear alreadyShownTime for next texture
                        alreadyShownTime = TimeSpan.Zero;
                        status = TransitionStatus.TransitioningOut;
                    }
                    break;

                case TransitionStatus.TransitioningOut:
                    if (!UpdateTransition(gameTime, transitionOffTime, -1))
                    {
                        Textures.Remove(Textures.ElementAt(0).Key);

                        // do we reach the end?
                        status = Textures.Count == 0
                                     ? TransitionStatus.Dead
                                     : TransitionStatus.TransitioningIn;
                    }
                    break;

                default:
                    throw new ArgumentException("Transition status error.");
            }

            base.Update(gameTime, screenManager);
        }
Exemple #8
0
        public override void HandleInput(InputState inputState, bool isTopMost, ScreenManager screenManager)
        {
            if (!Enabled) return;

            if (!canInterrupt) return;
            if (!inputState.IsNewMouseLeftButtonReleased(Bounds)) return;

            // we only handle Mouse1
            if (status == TransitionStatus.TransitioningIn) transitionPosition = 1;
            else if (status == TransitionStatus.Shown) status = TransitionStatus.TransitioningOut;
            else if (status == TransitionStatus.TransitioningOut) transitionPosition = 0;

            base.HandleInput(inputState, isTopMost, screenManager);
        }
    private void Update()
    {
        float dt = Time.deltaTime;

        // Handle transitions while they're running
        if(transitionStatus == TransitionStatus.TransitionIn)
        {
            if(transitionCanvas.alpha < 1f)
            {
                transitionCanvas.alpha += dt;
            }
            else
            {
                transitionStatus = TransitionStatus.TransitionOut;
                AdvanceToNextSlide();
            }
        }

        if(transitionStatus == TransitionStatus.TransitionOut)
        {
            if(transitionCanvas.alpha > 0f)
            {
                transitionCanvas.alpha -= dt;
            }
            else
            {
                transitionStatus = TransitionStatus.Idle;
                transitionScreen.SetActive(false);
            }
        }

        transitionCanvas.alpha = Mathf.Clamp (transitionCanvas.alpha, 0f, 1f);

        // Handle current slide update.
        if(currentSlideScript != null)
        {
            currentSlideScript.UpdateSlide(dt);
        }

        // Allow arrow keys to trigger transitions.
        if(Input.GetKeyDown(KeyCode.RightArrow) && transitionStatus == TransitionStatus.Idle)
        {
            TransitionForwards();
        }
        else if(Input.GetKeyDown(KeyCode.LeftArrow) && transitionStatus == TransitionStatus.Idle)
        {
            TransitionBackwards();
        }
    }
 private void TransitionForwards()
 {
     transitionDirection = TransitionDirection.Forwards;
     transitionScreen.SetActive(true);
     transitionStatus = TransitionStatus.TransitionIn;
 }
Exemple #11
0
 /// <summary>
 /// Restore task shell's state
 /// </summary>
 /// <param name="state"></param>
 public virtual void RestoreState(DataObject state)
 {
     RequireActivation(false);
     CorrelationId = (string)state["CorrelationId"];
     TaskId = (string)state["TaskId"];
     _status = (TransitionStatus)Enum.Parse(typeof(TransitionStatus), (string)state["Status"]);
     SharedId = (string)state["SharedId"];
     IList lst = state.GetArray("AllocatedPlaces");
     if (lst != null)
     {
         List<string> ls = new List<string>();
         foreach (string s in lst) ls.Add(s);
         SetAllocatedPlaces(ls);
     }
     _taskState = (DataObject)state["Task"];
 }