From: <jde...@us...> - 2012-03-18 01:11:39
|
Revision: 16536 http://pcgen.svn.sourceforge.net/pcgen/?rev=16536&view=rev Author: jdempsey Date: 2012-03-18 01:11:32 +0000 (Sun, 18 Mar 2012) Log Message: ----------- Fix bug: IndexOutOfBoundsException Increasing beyond allowed Monster HD error Issue#: CODE-1343 Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java Modified: Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-03-18 00:37:04 UTC (rev 16535) +++ Trunk/pcgen/code/src/java/pcgen/gui2/facade/CharacterFacadeImpl.java 2012-03-18 01:11:32 UTC (rev 16536) @@ -676,11 +676,17 @@ { if (classFacade instanceof PCClass) { + int totalLevels = theCharacter.getTotalLevels(); if (!validateAddLevel((PCClass) classFacade)) { return; } theCharacter.incrementClassLevel(1, (PCClass) classFacade); + if (totalLevels == theCharacter.getTotalLevels()) + { + // The level change was rejected - no further processing needed. + return; + } } if (!pcClasses.contains(classFacade)) { @@ -781,9 +787,11 @@ public int getClassLevel(ClassFacade c) { int clsLevel = 0; + // We have to compare by class key as classes get cloned and we may have multiple instances of the same class in our level list + String classKey = c.getKeyName(); for (CharacterLevelFacade charLevel : pcClassLevels) { - if (charLevelsFacade.getClassTaken(charLevel) == c) + if (charLevelsFacade.getClassTaken(charLevel).getKeyName().equals(classKey)) { clsLevel++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |