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); }
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); }