示例#1
0
        private void PerformTableSearch(TableParams inTableParams)
        {
            m_LineRefs.Clear();

            if (m_TableMgr == null)
            {
                Debug.LogError("No rule table manager found");
                return;
            }

            AbstractTableRefVisitor visitor = null;

            switch (inTableParams.Mode)
            {
            case TableMode.Action:
            {
                visitor = new TableUtils.ActionIdRefVisitor(inTableParams.ElementSearchId);
                break;
            }

            case TableMode.Query:
            {
                visitor = new TableUtils.QueryIdRefVisitor(inTableParams.ElementSearchId);
                break;
            }

            case TableMode.Trigger:
            {
                visitor = new TableUtils.TriggerIdRefVisitor(new RSTriggerId(inTableParams.ElementSearchId));
                break;
            }

            case TableMode.Entity:
            {
                visitor = new TableUtils.EntityIdRefVisitor(inTableParams.EntitySearch);
                break;
            }

            case TableMode.String:
            {
                visitor = new TableUtils.StringRefVisitor(inTableParams.StringSearch);
                break;
            }

            case TableMode.Issues:
            {
                var validationContext = new RSValidationContext(RSEditorUtility.EditorPlugin.Library);
                validationContext = validationContext.WithManager(m_EntityMgr);
                foreach (var table in m_TableMgr.AllTableSources())
                {
                    var validationState = RSValidator.Validate(table.TableData, validationContext);
                    if (validationState.IssueCount > 0)
                    {
                        m_LineRefs.Add(TableLineRef.FromTable(table).WithDescriptor("{0} errors, {1} warnings", validationState.ErrorCount, validationState.WarningCount));
                    }
                }
                break;
            }
            }

            if (visitor != null)
            {
                foreach (var table in m_TableMgr.AllTableSources())
                {
                    visitor.Visit(table);
                }
                m_LineRefs.AddRange(visitor.CollectedRefs);
            }
        }
 private void ScanForIssues()
 {
     m_LastValidationState = RSValidator.Validate(m_SelectionState.Table, m_Context);
 }