2025-11-10 16:01:53 +08:00
|
|
|
using System;
|
2025-11-13 11:16:31 +08:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2025-11-10 16:01:53 +08:00
|
|
|
using AlicizaX.UI.Runtime;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace AlicizaX.UI.Editor
|
|
|
|
|
{
|
2026-03-16 18:33:06 +08:00
|
|
|
internal interface IContextualUIGeneratorRuleHelper
|
|
|
|
|
{
|
|
|
|
|
string GetClassGenerateName(UIGenerationContext context);
|
|
|
|
|
|
|
|
|
|
string GetUIResourceSavePath(UIGenerationContext context);
|
|
|
|
|
|
|
|
|
|
bool CheckCanGenerate(UIGenerationContext context);
|
|
|
|
|
|
|
|
|
|
string GetReferenceNamespace(UIGenerationContext context);
|
|
|
|
|
|
|
|
|
|
string GetVariableContent(UIGenerationContext context);
|
|
|
|
|
|
|
|
|
|
void WriteUIScriptContent(UIGenerationContext context, string scriptContent);
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-10 16:01:53 +08:00
|
|
|
public interface IUIGeneratorRuleHelper
|
|
|
|
|
{
|
|
|
|
|
string GetPrivateComponentByNameRule(string regexName, string componetName, EBindType bindType);
|
|
|
|
|
|
|
|
|
|
string GetPublicComponentByNameRule(string variableName);
|
|
|
|
|
|
|
|
|
|
string GetClassGenerateName(GameObject targetObject, UIScriptGenerateData scriptGenerateData);
|
|
|
|
|
|
|
|
|
|
string GetUIResourceSavePath(GameObject targetObject, UIScriptGenerateData scriptGenerateData);
|
|
|
|
|
|
2025-12-01 16:45:42 +08:00
|
|
|
void WriteUIScriptContent(GameObject targetObject, string className, string scriptContent, UIScriptGenerateData scriptGenerateData);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
|
|
|
|
bool CheckCanGenerate(GameObject targetObject, UIScriptGenerateData scriptGenerateData);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
|
|
|
|
string GetReferenceNamespace(List<UIBindData> uiBindDatas);
|
|
|
|
|
|
|
|
|
|
string GetVariableContent(List<UIBindData> uiBindDatas);
|
2025-11-10 16:01:53 +08:00
|
|
|
}
|
|
|
|
|
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
public class DefaultUIGeneratorRuleHelper : IUIGeneratorRuleHelper, IContextualUIGeneratorRuleHelper
|
2025-11-10 16:01:53 +08:00
|
|
|
{
|
2026-03-16 18:33:06 +08:00
|
|
|
private readonly IUIIdentifierFormatter _identifierFormatter;
|
|
|
|
|
private readonly IUIResourcePathResolver _resourcePathResolver;
|
|
|
|
|
private readonly IUIScriptCodeEmitter _scriptCodeEmitter;
|
|
|
|
|
private readonly IUIScriptFileWriter _scriptFileWriter;
|
|
|
|
|
|
|
|
|
|
public DefaultUIGeneratorRuleHelper()
|
|
|
|
|
: this(
|
|
|
|
|
new DefaultUIIdentifierFormatter(),
|
|
|
|
|
new DefaultUIResourcePathResolver(),
|
|
|
|
|
new DefaultUIScriptCodeEmitter(),
|
|
|
|
|
new DefaultUIScriptFileWriter())
|
2025-11-10 16:01:53 +08:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
internal DefaultUIGeneratorRuleHelper(
|
|
|
|
|
IUIIdentifierFormatter identifierFormatter,
|
|
|
|
|
IUIResourcePathResolver resourcePathResolver,
|
|
|
|
|
IUIScriptCodeEmitter scriptCodeEmitter,
|
|
|
|
|
IUIScriptFileWriter scriptFileWriter)
|
2025-11-10 16:01:53 +08:00
|
|
|
{
|
2026-03-16 18:33:06 +08:00
|
|
|
_identifierFormatter = identifierFormatter ?? throw new ArgumentNullException(nameof(identifierFormatter));
|
|
|
|
|
_resourcePathResolver = resourcePathResolver ?? throw new ArgumentNullException(nameof(resourcePathResolver));
|
|
|
|
|
_scriptCodeEmitter = scriptCodeEmitter ?? throw new ArgumentNullException(nameof(scriptCodeEmitter));
|
|
|
|
|
_scriptFileWriter = scriptFileWriter ?? throw new ArgumentNullException(nameof(scriptFileWriter));
|
2025-11-10 16:01:53 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
public string GetPrivateComponentByNameRule(string regexName, string componentName, EBindType bindType)
|
|
|
|
|
=> _identifierFormatter.GetPrivateComponentName(regexName, componentName, bindType);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
public string GetPublicComponentByNameRule(string variableName)
|
|
|
|
|
=> _identifierFormatter.GetPublicComponentName(variableName);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
public string GetClassGenerateName(GameObject targetObject, UIScriptGenerateData scriptGenerateData)
|
|
|
|
|
=> _identifierFormatter.GetClassName(targetObject);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
string IContextualUIGeneratorRuleHelper.GetClassGenerateName(UIGenerationContext context)
|
|
|
|
|
=> _identifierFormatter.GetClassName(context.TargetObject);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
public string GetUIResourceSavePath(GameObject targetObject, UIScriptGenerateData scriptGenerateData)
|
|
|
|
|
=> _resourcePathResolver.GetResourcePath(targetObject, scriptGenerateData);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
string IContextualUIGeneratorRuleHelper.GetUIResourceSavePath(UIGenerationContext context)
|
|
|
|
|
=> _resourcePathResolver.GetResourcePath(context.TargetObject, context.ScriptGenerateData);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
2025-12-01 16:45:42 +08:00
|
|
|
public void WriteUIScriptContent(GameObject targetObject, string className, string scriptContent, UIScriptGenerateData scriptGenerateData)
|
2026-03-16 18:33:06 +08:00
|
|
|
=> _scriptFileWriter.Write(targetObject, className, scriptContent, scriptGenerateData);
|
2025-11-10 16:01:53 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
void IContextualUIGeneratorRuleHelper.WriteUIScriptContent(UIGenerationContext context, string scriptContent)
|
|
|
|
|
=> _scriptFileWriter.Write(context.TargetObject, context.ClassName, scriptContent, context.ScriptGenerateData);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2025-11-10 16:01:53 +08:00
|
|
|
public bool CheckCanGenerate(GameObject targetObject, UIScriptGenerateData scriptGenerateData)
|
2026-03-16 18:33:06 +08:00
|
|
|
=> _resourcePathResolver.CanGenerate(targetObject, scriptGenerateData);
|
2025-11-11 10:57:35 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
bool IContextualUIGeneratorRuleHelper.CheckCanGenerate(UIGenerationContext context)
|
|
|
|
|
=> _resourcePathResolver.CanGenerate(context.TargetObject, context.ScriptGenerateData);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
|
|
|
|
public string GetReferenceNamespace(List<UIBindData> uiBindDatas)
|
2026-03-16 18:33:06 +08:00
|
|
|
=> _scriptCodeEmitter.GetReferenceNamespaces(uiBindDatas);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
string IContextualUIGeneratorRuleHelper.GetReferenceNamespace(UIGenerationContext context)
|
|
|
|
|
=> _scriptCodeEmitter.GetReferenceNamespaces(context.BindDatas?.ToList());
|
2025-11-13 11:16:31 +08:00
|
|
|
|
|
|
|
|
public string GetVariableContent(List<UIBindData> uiBindDatas)
|
2026-03-16 18:33:06 +08:00
|
|
|
=> _scriptCodeEmitter.GetVariableContent(uiBindDatas, GetPublicComponentByNameRule);
|
2025-11-13 11:16:31 +08:00
|
|
|
|
2026-03-16 18:33:06 +08:00
|
|
|
string IContextualUIGeneratorRuleHelper.GetVariableContent(UIGenerationContext context)
|
|
|
|
|
=> _scriptCodeEmitter.GetVariableContent(context.BindDatas?.ToList(), GetPublicComponentByNameRule);
|
2025-11-10 16:01:53 +08:00
|
|
|
}
|
|
|
|
|
}
|