Watches for new PCClassLevel objects to be granted to the Player Character. When called, this then triggers the determination of the Hit Points for that PCClassLevel. Triggered when one of the Facets to which FollowerOptionFacet listens fires a DataFacetChangeEvent to indicate a FollowerOption was
(DataFacetChangeEvent<CharID, CDOMObject> dfce)
| 112 | * change |
| 113 | */ |
| 114 | @Override |
| 115 | public void dataAdded(DataFacetChangeEvent<CharID, CDOMObject> dfce) |
| 116 | { |
| 117 | CharID id = dfce.getCharID(); |
| 118 | CDOMObject cdo = dfce.getCDOMObject(); |
| 119 | PlayerCharacter pc = trackingFacet.getPC(id); |
| 120 | if (!pc.isImporting()) |
| 121 | { |
| 122 | boolean first = true; |
| 123 | for (PCClass pcClass : classFacet.getSet(id)) |
| 124 | { |
| 125 | // |
| 126 | // Recalculate HPs in case HD have changed. |
| 127 | // |
| 128 | Processor<HitDie> dieLock = cdo.get(ObjectKey.HITDIE); |
| 129 | if (dieLock != null) |
| 130 | { |
| 131 | for (int level = 1; level <= classFacet.getLevel(id, pcClass); level++) |
| 132 | { |
| 133 | HitDie baseHD = pcClass.getSafe(ObjectKey.LEVEL_HITDIE); |
| 134 | if (!baseHD.equals(getLevelHitDie(id, pcClass, level))) |
| 135 | { |
| 136 | // If the HD has changed from base reroll |
| 137 | rollHP(id, pcClass, level, first); |
| 138 | pc.setDirty(true); |
| 139 | } |
| 140 | } |
| 141 | } |
| 142 | first = false; |
| 143 | } |
| 144 | } |
| 145 | } |
| 146 | |
| 147 | @Override |
| 148 | public void dataRemoved(DataFacetChangeEvent<CharID, CDOMObject> dfce) |
nothing calls this directly
no test coverage detected