Пример #1
0
        virtual public Object Clone()
        {
            //TODO: make cloning work properly for duplication of entire plot fragments and author goals
            //- add a new clone method or something to
            //stop the creation of new unique names/variable names

            Constraint newClone = (Constraint)MemberwiseClone();

            newClone.Id = StoryWorldDataProvider.getStoryData().getNewId();

            newClone.ComparisonValue = (Parameter)_comparisonValue.Clone();
            newClone.SavedVariable   = (Trait)_savedVariable.Clone();

            //Make a new unique variable name
            if (newClone.ContainsSavedVariable)
            {
                string newName    = newClone.SavedVariable.Name;
                int    cloneCount = 1;


                Action        nullAction = null;
                List <string> prevVars   = StoryWorldDataProvider.getStoryData().findPlotFragmentById(_parentPlotFragmentId).getAllPreviouslyBoundVariableNames(nullAction, true);

                while (prevVars.Contains(newName))
                {
                    newName = newClone.SavedVariable.Name + cloneCount.ToString();
                    cloneCount++;
                }

                newClone.SavedVariable.Name = newName;
            }


            return(newClone);
        }
Пример #2
0
        override public Object Clone()
        {
            //TODO: make cloning work properly for duplication of entire plot fragments and author goals
            //- add a new clone method or something to
            //stop the creation of new unique names/variable names
            ActionCalculation newClone = (ActionCalculation)MemberwiseClone();

            newClone.Id         = StoryWorldDataProvider.getStoryData().getNewId();
            newClone.Result     = (Trait)_resultVar.Clone();
            newClone.ParamLeft  = (Parameter)_paramLeft.Clone();
            newClone.ParamRight = (Parameter)_paramRight.Clone();


            //Give the new var a unique name, making sure the new name is actually unique.
            //If name is not unique, keep increment suffix number until it is
            string       newName    = newClone.ResultVarName;
            int          cloneCount = 1;
            PlotFragment parentFrag = StoryWorldDataProvider.getStoryData().findPlotFragmentById(_parentPlotFragmentId);

            Action        nullAction = null;
            List <string> prevVars   = parentFrag.getAllPreviouslyBoundVariableNames(nullAction, true);


            while (prevVars.Contains(newName))
            {
                newName = newClone.ResultVarName + cloneCount.ToString();
                cloneCount++;
            }

            newClone.ResultVarName = newName;


            return(newClone);
        }