/// <summary> /// Builds the action content /// </summary> /// <param name="actionRenderer">Action Renderer</param> /// <param name="actionNode">Action Node</param> /// <param name="data">Dialog data</param> /// <param name="flexFieldObject">Flex field object to which the dialog belongs</param> /// <returns>Action content</returns> private async Task <string> BuildActionContent(IActionRenderer actionRenderer, ActionNode actionNode, ExportDialogData data, FlexFieldObject flexFieldObject) { if (actionRenderer == null) { return(string.Empty); } return(await actionRenderer.BuildActionElement(actionNode, data, _project, _errorCollection, flexFieldObject, _exportSettings)); }
public DelayedActionRenderer( IActionRenderer <T> renderer, IComparer <BlockPerception> canonicalChainComparer, IStore store, int confirmations, long reorgResistantHeight = 0) : base(renderer, canonicalChainComparer, store, confirmations) { ActionRenderer = renderer; _bufferedActionRenders = new ConcurrentDictionary <BlockHash, List <ActionEvaluation> >(); _bufferedActionUnrenders = new ConcurrentDictionary <BlockHash, List <ActionEvaluation> >(); _reorgResistantHeight = reorgResistantHeight; }
/// <summary> /// 添加动作渲染 /// </summary> /// <param name="renderer"></param> public virtual void AddRenderer(IActionRenderer renderer) { if (_rendererDict.ContainsKey(renderer.type)) { return; } renderer.sortingIndex = _sortingIndex; renderer.sortingOrder = _sortingOrder; renderer.frames = _frames; if (_alpha != 1f) { renderer.alpha = _alpha; } if (_colorFilter != null) { renderer.colorFilter = _colorFilter; } // 设置动作渲染当前动作 if (renderer.lockActionAndDirection == false) { renderer.action = _action; renderer.direction = _direction; } // 设置动作渲染当前帧 if (renderer.loop == false) { renderer.maxFrameIndex = _maxFrameIndex; renderer.frameIndex = _frameIndex; } renderer.transform.SetParent(_transform, false); _rendererDict[renderer.type] = renderer; }
/// <summary> /// Renders a dialog step /// </summary> /// <param name="data">Dialog Step Data</param> /// <param name="flexFieldObject">Flex Field to which the dialog belongs</param> /// <returns>Dialog Step Render Result</returns> public async Task <ExportDialogStepRenderResult> RenderDialogStep(ExportDialogData data, FlexFieldObject flexFieldObject) { ActionNode actionNode = data.Action; if (actionNode == null) { return(null); } IActionRenderer actionRenderer = GetActionRenderForNode(actionNode); ExportDialogDataChild nextStep = null; if (data.Children != null) { if (actionRenderer != null) { nextStep = actionRenderer.GetNextStep(data.Children); } else { nextStep = data.Children.FirstOrDefault(); } } string actionContent = await BuildActionContent(actionRenderer, actionNode, data, flexFieldObject); ExportTemplate template = await _defaultTemplateProvider.GetDefaultTemplateByType(_project.Id, TemplateType.TaleAction); ExportDialogStepRenderResult renderResult = new ExportDialogStepRenderResult(); renderResult.StepCode = ExportUtil.BuildPlaceholderRegex(Placeholder_ActionContent).Replace(template.Code, actionContent); renderResult.StepCode = ReplaceBaseStepPlaceholders(renderResult.StepCode, data, nextStep != null ? nextStep.Child : null); return(renderResult); }
/// <summary> /// 移除动作渲染 /// </summary> /// <param name="renderer"></param> public virtual void RemoveRenderer(IActionRenderer renderer) { RemoveRenderer(renderer.type); }
/// <summary> /// Constructor /// </summary> /// <param name="templateType">Template type that is used for the dispatching</param> /// <param name="templateProvider">Export template provider</param> /// <param name="legacyRenderer">Legacy action renderer</param> /// <param name="scribanRenderer">Scriban action renderer</param> public ActionRendererDispatcher(TemplateType templateType, ICachedExportDefaultTemplateProvider templateProvider, IActionRenderer legacyRenderer, IActionRenderer scribanRenderer) { _templateType = templateType; _templateProvider = templateProvider; _renderers = new Dictionary <ExportTemplateRenderingEngine, IActionRenderer> { { ExportTemplateRenderingEngine.Legacy, legacyRenderer }, { ExportTemplateRenderingEngine.Scriban, scribanRenderer } }; }