示例#1
0
        private void InitializeState()
        {
            var factory = new VideoNodeStateFactory();
            var first   = new OpeningState(factory, this);

            CurrentState = factory.GetOrCreate(delegate { return(first); });
        }
    private void StartNextAnimation(OpeningState newState)
    {
        switch (newState)
        {
        case OpeningState.StartLogo:
            this.mainLogo.transform.DOMoveY(0, animationTime).SetEase(Ease.Linear);
            this.mainLogo.transform.DOMoveY(-this.mainLogo.transform.position.y, 0.5f).SetDelay(this.animateLogoOutTime);
            break;

        case OpeningState.StartFirstDivision:
            // Move after the delay.
            this.division1Image.transform.DOMoveX(this.divisionImageXFirst, 0.25f).SetEase(Ease.Linear).SetDelay(songDelay);
            this.division1Image.transform.DOMoveX(this.divisionImageXSecond, 1.75f).SetEase(Ease.Linear).SetDelay(songDelay + 0.25f).OnComplete(() => this.StartNextAnimation(OpeningState.StartSecondDivision));
            this.division1Image.transform.DOMoveX(this.divisionImageXLast, 0.25f).SetEase(Ease.Linear).SetDelay(songDelay + 2.0f);
            break;

        case OpeningState.StartSecondDivision:
            this.mainLogo.transform.position = this.mainLogoStartPosition;
            // Moving in from the right side.
            this.division2Image.transform.DOMoveX(-this.divisionImageXFirst, 0.25f).SetEase(Ease.Linear);
            this.division2Image.transform.DOMoveX(-this.divisionImageXSecond, 1.5f).SetEase(Ease.Linear).SetDelay(0.25f).OnComplete(() => this.StartNextAnimation(OpeningState.StartThirdDivision));
            this.division2Image.transform.DOMoveX(-this.divisionImageXLast, 0.25f).SetEase(Ease.Linear).SetDelay(1.75f);
            break;

        case OpeningState.StartThirdDivision:
            this.division3Image.transform.DOMoveX(this.divisionImageXFirst, 0.25f).SetEase(Ease.Linear);
            this.division3Image.transform.DOMoveX(this.divisionImageXSecond, 1.5f).SetEase(Ease.Linear).SetDelay(0.25f).OnComplete(() => this.StartNextAnimation(OpeningState.StartNextDraftOrder));
            this.division3Image.transform.DOMoveX(this.divisionImageXLast, 0.25f).SetEase(Ease.Linear).SetDelay(1.75f);
            break;

        case OpeningState.StartNextDraftOrder:
            ++draftOrderIndex;
            if (this.draftOrderIndex >= draftOrderStrings.Length)
            {
                this.StartNextAnimation(OpeningState.GoToMainDraft);
                return;
            }

            this.draftOrderText.GetComponent <TextMeshPro>().text = this.draftOrderStrings[this.draftOrderIndex];

            // Restart draft order.
            this.draftOrderText.transform.position = this.draftOrderTextStartPosition;
            this.draftOrderText.transform.DOMoveY(this.draftOrderTextEndYPos, 5).SetEase(Ease.Linear).OnComplete(() => this.StartNextAnimation(OpeningState.StartNextDraftOrder));
            break;

        case OpeningState.GoToMainDraft:
            this.mainLogo.transform.DOMoveY(0, 2.0f);
            break;
        }
    }
        public VideoNodeState SetState(MediaElementState mediaState, IVideoNode context)
        {
            if (_states.ContainsKey(mediaState + "State"))
            {
                return(_states[mediaState + "State"]);
            }

            switch (mediaState)
            {
            case MediaElementState.Buffering:
                var bufferingState = new BufferingState(this, context);
                _states.Add(bufferingState.GetType().Name, bufferingState);
                return(bufferingState);

            case MediaElementState.Playing:
                var playingState = new PlayingState(this, context);
                _states.Add(playingState.GetType().Name, playingState);
                return(playingState);

            case MediaElementState.Stopped:
                var stoppedState = new StoppedState(this, context);
                _states.Add(stoppedState.GetType().Name, stoppedState);
                return(stoppedState);

            case MediaElementState.Opening:
                var openingState = new OpeningState(this, context);
                _states.Add(openingState.GetType().Name, openingState);
                return(openingState);

            case MediaElementState.Paused:
                var pausedState = new PausedState(this, context);
                _states.Add(pausedState.GetType().Name, pausedState);
                return(pausedState);

            default:
                return(null);
            }
        }
示例#4
0
        /// <summary>
        /// Creates a new instance of a Opening object, and initializes it with the specified property values.
        /// </summary>
        /// <param name="activity"></param>
        /// <param name="name"></param>
        /// <param name="minParticipants"></param>
        /// <param name="maxParticipants"></param>
        /// <param name="type"></param>
        /// <param name="process"></param>
        public Opening(Activity activity, string name, int minParticipants, int maxParticipants, OpeningType type, ApplicationProcess process, CriteriaRule criteriaRule = CriteriaRule.Participate, OpeningState state = OpeningState.Published)
        {
            if (String.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException($"Argument 'name' cannot be null, empty or whitespace.");
            }
            if (minParticipants <= 0)
            {
                throw new ArgumentException($"Argument 'minParticipants' must be greater than 0.");
            }
            if (maxParticipants < minParticipants)
            {
                throw new ArgumentException($"Argument 'maxParticipants' must be greater than or equal to 'minParticipants'.");
            }

            this.ActivityId         = activity?.Id ?? throw new ArgumentNullException(nameof(activity));
            this.Activity           = activity;
            this.Name               = name;
            this.MinParticipants    = minParticipants;
            this.MaxParticipants    = maxParticipants;
            this.OpeningType        = type;
            this.ApplicationProcess = process;
            this.Key          = Guid.NewGuid();
            this.State        = state;
            this.CriteriaRule = criteriaRule;
        }