From: <jde...@us...> - 2012-09-19 11:11:09
|
Revision: 17361 http://pcgen.svn.sourceforge.net/pcgen/?rev=17361&view=rev Author: jdempsey Date: 2012-09-19 11:10:58 +0000 (Wed, 19 Sep 2012) Log Message: ----------- Fix bug: Error switching to a character with companion Issue#: CODE-1641 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-09-19 10:40:09 UTC (rev 17360) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CompanionSupportFacadeImpl.java 2012-09-19 11:10:58 UTC (rev 17361) @@ -268,16 +268,7 @@ CharacterFacadeImpl compFacadeImpl = (CharacterFacadeImpl) companion; CompanionList compList = keyToCompanionListMap.get(companionType); Race compRace = (Race) compFacadeImpl.getRaceRef().getReference(); - FollowerOption followerOpt = null; - Map<FollowerOption, CDOMObject> fMap = theCharacter.getAvailableFollowers(compList.getKeyName(), null); - for (FollowerOption fOpt : fMap.keySet()) - { - if (compRace == fOpt.getRace()) - { - followerOpt = fOpt; - break; - } - } + FollowerOption followerOpt = getFollowerOpt(compList, compRace); if (followerOpt == null) { Logging.errorPrint("Unable to find follower option for companion " //$NON-NLS-1$ @@ -322,6 +313,21 @@ updateCompanionTodo(companionType); } + private FollowerOption getFollowerOpt(CompanionList compList, Race compRace) + { + FollowerOption followerOpt = null; + Map<FollowerOption, CDOMObject> fMap = theCharacter.getAvailableFollowers(compList.getKeyName(), null); + for (FollowerOption fOpt : fMap.keySet()) + { + if (compRace == fOpt.getRace()) + { + followerOpt = fOpt; + break; + } + } + return followerOpt; + } + /** * {@inheritDoc} */ @@ -365,7 +371,19 @@ if (file.equals(character.getFileRef().getReference()) && name.equals(character.getNameRef().getReference())) { + String companionType = delegate.getCompanionType(); delegate.setCompanionFacade(character); + if (character.getMaster() == null) + { + CompanionList compList = keyToCompanionListMap.get(companionType); + final Follower newMaster = + new Follower(theCharacter.getFileName(), theCharacter.getName(), compList); + FollowerOption followerOpt = + getFollowerOpt(compList, (Race) character + .getRaceRef().getReference()); + newMaster.setAdjustment(followerOpt.getAdjustment()); + ((CharacterFacadeImpl)character).getTheCharacter().setMaster(newMaster); + } return; } } Modified: Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-19 10:40:09 UTC (rev 17360) +++ Trunk/pcgen/code/src/java/pcgen/gui2/tabs/CompanionInfoTab.java 2012-09-19 11:10:58 UTC (rev 17361) @@ -74,6 +74,7 @@ import pcgen.system.ConfigurationSettings; import pcgen.system.LanguageBundle; import pcgen.util.Comparators; +import pcgen.util.Logging; /** * @@ -945,6 +946,12 @@ { String type = companion.getCompanionType(); int index = Collections.binarySearch(types, type, Comparators.toStringIgnoreCaseCollator()); + if (index < 0) + { + Logging.errorPrint("Unable to add companion " + companion + + " as the type " + type + " could not be found."); + return; + } CompanionTypeNode child = (CompanionTypeNode) getChildAt(index); child.addCompanion(companion, silently); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |