Esempio n. 1
0
        public void AddBreakPoint(Camera sceneCamera)
        {
            float closestPoint    = 0;
            float closestDistance = 0;

            if (sceneCamera != null)
            {
                for (float i = 0; i <= 1; i = i + 0.01f)
                {
                    float   splinePoint = i;
                    Vector3 point       = sceneCamera.WorldToViewportPoint(this.GetPoint(i));
                    if (point.x >= 0 && point.x <= 1 && point.y >= 0 && point.y <= 1)
                    {
                        float distance = Mathf.Pow((point.x - 0.5f), 2) + Mathf.Pow((point.y - 0.5f), 2);
                        if (closestDistance == 0 || distance < closestDistance)
                        {
                            closestDistance = distance;
                            closestPoint    = splinePoint;
                        }
                    }
                }
                if (closestPoint != 0)
                {
                    BreakInterval interval = ScriptableObject.CreateInstance <BreakInterval> ();
                    interval._ProgressA = closestPoint - 0.01f;
                    interval._ProgressB = closestPoint + 0.01f;
                    interval.Calculate(this);
                    BreakIntervals.Add(interval);
                }
            }
        }
        /// <summary>
        /// Метод проверки статуса
        /// </summary>
        public void CheckStatus()
        {
            string message = "";

            BallonAction[] actions = new BallonAction[0];
            switch (_status)
            {
            case PomodoroStatuses.Idle:
                message = "Ожидание начала сессии";
                actions = new[] { new BallonAction()
                                  {
                                      Caption = "Начать", Action = StartSeries
                                  } };
                break;

            case PomodoroStatuses.WorkInterval:
                message = $"Рабочий интервал. До завершения интервала: {(int)WorkInterval.Subtract(DateTime.Now.TimeOfDay.Subtract(_intervalStart)).TotalMinutes} мин.";
                actions = new[] { new BallonAction()
                                  {
                                      Caption = "Отмена", Action = InterruptSeries
                                  } };
                break;

            case PomodoroStatuses.AfterWorkInterval:
                break;

            case PomodoroStatuses.BreakInterval:
                message = $"Интервал отдыха. До завершения интервала: {(int)BreakInterval.Subtract(DateTime.Now.TimeOfDay.Subtract(_intervalStart)).TotalMinutes} мин.";
                actions = new[] { new BallonAction()
                                  {
                                      Caption = "Помидорка", Action = StartWorkInterval
                                  } };
                break;

            case PomodoroStatuses.AfterBreakInterval:
                break;

            default:
                break;
            }
            if (!string.IsNullOrWhiteSpace(message))
            {
                NeedShowStatus?.Invoke(this, new StatusArgs()
                {
                    StatusMessage = message, Actions = actions
                });
            }
        }
Esempio n. 3
0
        private void adjustBreakInterval(BreakInterval breakInterval, Vector3 newPosition, BreakInterval.Points pointToHandle)
        {
            BezierSpline spline          = (BezierSpline)target;
            Vector3      pointToChange   = pointToHandle == BreakInterval.Points.PointA ? breakInterval._PointA : breakInterval._PointB;
            float        directionChange = (pointToChange - newPosition).x / spline.Length;

            if (pointToHandle == BreakInterval.Points.PointA)
            {
                breakInterval._ProgressA = breakInterval._ProgressA - directionChange;
                if (breakInterval._ProgressA > breakInterval._ProgressB)
                {
                    breakInterval._ProgressA = breakInterval._ProgressB;
                }
            }
            else
            {
                breakInterval._ProgressB = breakInterval._ProgressB - directionChange;
                if (breakInterval._ProgressB < breakInterval._ProgressA)
                {
                    breakInterval._ProgressB = breakInterval._ProgressA;
                }
            }
            breakInterval.Calculate(spline);
        }