/// <summary> /// Замена конструктора, процедура инициализации компонента отображения /// </summary> /// <param name="parModelSideProviderComponent">Связанный компонент на стороне модели</param> /// <param name="parLinkedEventsHandler">Связанный обработчик событий отображения</param> public override void InitAndLink(ViewProviderComponent parModelSideProviderComponent, ViewEventsOpenTkHandler parLinkedEventsHandler) { base.InitAndLink(parModelSideProviderComponent, parLinkedEventsHandler); _modelProviderComponent = (PocketGameViewProvider)parModelSideProviderComponent; _choosingShotAnimationInfobar = new PlayableAnimationObject(ActualSubassetsDataLibrary.GetAnimation(ANIM_INFOBAR_SHOT)); _choosingShotPlayerCueAnimation = new PlayableAnimationObject(ActualSubassetsDataLibrary.GetAnimation(SHOT_HAND_CUE_ANIM)); }
/// <summary> /// Обработать следующую анимацию /// </summary> private void ProcessNextAnimationSheet() { void PlayNextSheet() { string animationAssetName = $"{ANIM_NAME_INTRO_CUTSCENE_START}{_currentAnimSheetIndex}{ANIM_NAME_INTRO_CUTSCENE_END}"; _introCutsceneAnimation = new PlayableAnimationObject(ActualSubassetsDataLibrary.GetAnimation(animationAssetName), 60); _introCutsceneAnimation.EventFullAnimCompleted += ProcessNextAnimationSheet; } _isAnimInProgress = true; if (_introCutsceneAnimation == null) { PlayNextSheet(); } else { _currentFrameTotal += _introCutsceneAnimation.FrameCount; _introCutsceneAnimation.EventFullAnimCompleted -= ProcessNextAnimationSheet; _introCutsceneAnimation = null; _currentAnimSheetIndex++; if (_currentAnimSheetIndex > ANIM_NAME_INTRO_CUTSCENE_INDEX_TO) { _isAnimInProgress = false; _modelProviderComponent.OnIntroCutsceneEndedPerform?.Invoke(); } else { PlayNextSheet(); } } }