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); } }
/// <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; }