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
()
| 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); |
no test coverage detected