MCPcopy Create free account
hub / github.com/PCGen/pcgen / clone

Method clone

code/src/java/pcgen/core/PlayerCharacter.java:6821–6922  ·  view source on GitHub ↗

Returns a deep copy of the PlayerCharacter. Note: This method does a shallow copy of many lists in here that seem to point to "system" objects. These copies should be validated before using this method. @return a new deep copy of the PlayerCharacter

()

Source from the content-addressed store, hash-verified

6819 * @return a new deep copy of the {@code PlayerCharacter}
6820 */
6821 @Override
6822 public PlayerCharacter clone()
6823 {
6824 PlayerCharacter aClone;
6825
6826 // calling super.clone won't work because it will not create
6827 // new data instances for all the final variables and I won't
6828 // be able to reset them. Need to call new PlayerCharacter()
6829 // aClone = (PlayerCharacter)super.clone();
6830 aClone = new PlayerCharacter(this);
6831 try
6832 {
6833 aClone.assocSupt = assocSupt.clone();
6834 } catch (CloneNotSupportedException e)
6835 {
6836 Logging.errorPrint("PlayerCharacter.clone failed", e);
6837 }
6838 Collection<AbstractStorageFacet> beans = SpringHelper.getStorageBeans();
6839 for (AbstractStorageFacet bean : beans)
6840 {
6841 bean.copyContents(id, aClone.id);
6842 }
6843 SolverManager sm = solverManagerFacet.get(id);
6844 if (sm != null)
6845 {
6846 SolverManager replacement = sm.createReplacement(variableStoreFacet.get(aClone.id));
6847 solverManagerFacet.set(aClone.id, replacement);
6848 }
6849 aClone.bonusManager = bonusManager.buildDeepClone(aClone);
6850
6851 for (PCClass cloneClass : aClone.classFacet.getSet(aClone.id))
6852 {
6853 cloneClass.addFeatPoolBonus(aClone);
6854 }
6855 Follower followerMaster = masterFacet.get(id);
6856 if (followerMaster != null)
6857 {
6858 aClone.masterFacet.set(id, followerMaster.clone());
6859 } else
6860 {
6861 aClone.masterFacet.remove(id);
6862 }
6863 aClone.equipSetFacet.removeAll(aClone.id);
6864 for (EquipSet eqSet : equipSetFacet.getSet(id))
6865 {
6866 aClone.addEquipSet(eqSet.clone());
6867 }
6868 List<Equipment> equipmentMasterList = aClone.getEquipmentMasterList();
6869 aClone.userEquipmentFacet.removeAll(aClone.id);
6870 aClone.equipmentFacet.removeAll(aClone.id);
6871 aClone.equippedFacet.removeAll(aClone.id);
6872 FacetLibrary.getFacet(SourcedEquipmentFacet.class).removeAll(aClone.id);
6873 for (Equipment equip : equipmentMasterList)
6874 {
6875 aClone.addEquipment(equip.clone());
6876 }
6877
6878 aClone.levelInfoFacet.removeAll(aClone.id);

Callers 3

incrementClassLevelMethod · 0.45
setSubstitutionLevelMethod · 0.45

Calls 15

errorPrintMethod · 0.95
getStorageBeansMethod · 0.95
createReplacementMethod · 0.95
cloneMethod · 0.95
addEquipSetMethod · 0.95
getFacetMethod · 0.95
addEquipmentMethod · 0.95
getLevelInfoMethod · 0.95
addSpellBookMethod · 0.95
adjustMoveRatesMethod · 0.95
calcActiveBonusesMethod · 0.95

Tested by

no test coverage detected