示例#1
0
 private static bool HasCollectionReference(StageSet stageSet, Stage stage)
 {
     foreach (Stage bpStage in stageSet)
     {
         if (bpStage is IExpressionHolder)
         {
             foreach (MutableExpression expression in ((IExpressionHolder)bpStage).Expressions)
             {
                 if (expression.Value.Contains("[" + stage.Name + "."))
                 {
                     return(true);
                 }
             }
         }
         if (bpStage is IDataNameHolder)
         {
             foreach (MutableDataName dataName in ((IDataNameHolder)bpStage).DataNames)
             {
                 if (dataName.Value.StartsWith(stage.Name + "."))
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
示例#2
0
 private static Boolean HasDataReference(StageSet stageSet, Stage stage)
 {
     foreach (Stage bpStage in stageSet)
     {
         if (bpStage is IExpressionHolder)
         {
             foreach (MutableExpression expression in ((IExpressionHolder)bpStage).Expressions)
             {
                 if (expression.Value.Contains("[" + stage.Name + "]"))
                 {
                     return(true);
                 }
             }
         }
         if (bpStage is IDataNameHolder)
         {
             foreach (MutableDataName dataName in ((IDataNameHolder)bpStage).DataNames)
             {
                 if (dataName.Value.Equals(stage.Name))
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
示例#3
0
        public static void Rename(Stage stage, StageSet stageSet, string newName)
        {
            string originalName = stage.Name;

            stage.Name = newName;

            if (stage is StageData)
            {
                RenameDataReferences(stageSet, originalName, newName);
            }
            if (stage is StageCollection)
            {
                RenameDataReferences(stageSet, originalName, newName);
                RenameCollectionReferences(stageSet, originalName, newName);
            }
        }
示例#4
0
 private static void RenameCollectionReferences(StageSet stageSet, string originalName, string newName)
 {
     foreach (Stage bpStage in stageSet)
     {
         if (bpStage is IExpressionHolder)
         {
             foreach (MutableExpression expression in ((IExpressionHolder)bpStage).Expressions)
             {
                 expression.Value = expression.Value.Replace("[" + originalName + ".", "[" + newName + ".");
             }
         }
         if (bpStage is IDataNameHolder)
         {
             foreach (MutableDataName dataName in ((IDataNameHolder)bpStage).DataNames)
             {
                 if (dataName.Value.StartsWith(originalName + "."))
                 {
                     dataName.Value = Regex.Replace(dataName.Value, "^" + originalName + ".", newName + ".");
                 }
             }
         }
     }
 }
示例#5
0
 private static void RenameDataReferences(StageSet stageSet, string originalName, string newName)
 {
     foreach (Stage bpStage in stageSet)
     {
         if (bpStage is IExpressionHolder)
         {
             foreach (MutableExpression expression in ((IExpressionHolder)bpStage).Expressions)
             {
                 expression.Value = expression.Value.Replace("[" + originalName + "]", "[" + newName + "]");
             }
         }
         if (bpStage is IDataNameHolder)
         {
             foreach (MutableDataName dataName in ((IDataNameHolder)bpStage).DataNames)
             {
                 if (dataName.Value.Equals(originalName))
                 {
                     dataName.Value = newName;
                 }
             }
         }
     }
 }
示例#6
0
        private BpToolsLib.StageSet GetStageSet()
        {
            List <Stage> stages = new List <Stage>();

            BpToolsLib.StageSet stageSet = new StageSet();

            foreach (XmlClasses.Stage bpStage in Process.Stages)
            {
                Stage stage = new StageFactory(bpStage).GetStage();
                stageSet.Add(stage.GetStage());
                stages.Add(stage);
            }

            foreach (Stage stage in stages)
            {
                if (stage is ITraversable)
                {
                    ((ITraversable)stage).SetNextStages(stageSet);
                }
            }

            return(stageSet);
        }
示例#7
0
        public static void DeleteUnusedDataAndCollection(StageSet stageSet)
        {
            StageSet stageSetCopy = new StageSet(stageSet);

            foreach (Stage stage in stageSetCopy)
            {
                if (stage is StageData)
                {
                    if (!HasDataReference(stageSet, stage))
                    {
                        stageSet.Remove(stage);
                        continue;
                    }
                }
                else if (stage is StageCollection)
                {
                    if (!HasDataReference(stageSet, stage) && !HasCollectionReference(stageSet, stage))
                    {
                        stageSet.Remove(stage);
                        continue;
                    }
                }
            }
        }
    private void AddStageSetToDict()
    {
        if (StageSetDictionary.Count != 0)
        {
            StageSetDictionary.Clear();
        }

        if (scenarioContainer.StageSetList == null)
        {
            Debug.Log("XML파일 StageSet doesn't exist!");
            return;
        }

        for (int k = 0; k < scenarioContainer.StageSetList.Length; k++)
        {
            int      key          = scenarioContainer.StageSetList[k].ID;
            StageSet StageSetInfo = scenarioContainer.StageSetList[k];

            if (!StageSetDictionary.ContainsKey(key))
            {
                StageSetDictionary.Add(key, StageSetInfo);
            }
        }
    }
示例#9
0
 public void LevelChange(StageSet s)
 {
     currentStage = s;
     LevelHandler.Instance.LevelSetup(currentStage);
 }