/* (non-Javadoc) * @see pcgen.core.facade.SpellSupportFacade#addToSpellBook(pcgen.core.facade.SpellSupportFacade.SpellNode, java.lang.String) */ @Override public void addToSpellBook(SpellNode spell, String spellBook) { String bookName = spellBook; if (bookName.endsWith("]") && bookName.contains(" [")) { bookName = bookName.substring(0, bookName.lastIndexOf(" [")); } SpellNode node = addSpellToCharacter(spell, bookName, new ArrayList<>()); if (node != null) { if (bookSpellNodes.containsElement(node)) { SpellNode spellNode = bookSpellNodes.getElementAt(bookSpellNodes.getIndexOfElement(node)); spellNode.addCount(1); // Remove and readd to ensure the display is updated bookSpellNodes.removeElement(spellNode); bookSpellNodes.addElement(spellNode); } else { bookSpellNodes.addElement(node); } // Remove dummy spellbook node from the list for (Iterator<SpellNode> iterator = bookSpellNodes.iterator(); iterator.hasNext(); ) { SpellNode sn = iterator.next(); if (sn.getSpell() == null && bookName.equals(sn.getRootNode().getName())) { iterator.remove(); } } } }
/* (non-Javadoc) * @see pcgen.core.facade.SpellSupportFacade#addPreparedSpell(pcgen.core.facade.SpellSupportFacade.SpellNode, java.lang.String) */ @Override public void addPreparedSpell(SpellNode spell, String spellList, boolean useMetamagic) { List<Ability> metamagicFeats = new ArrayList<>(); if (useMetamagic) { metamagicFeats = queryUserForMetamagic(spell); if (metamagicFeats == null) { return; } } SpellNode node = addSpellToCharacter(spell, spellList, metamagicFeats); if (node != null) { if (preparedSpellNodes.containsElement(node)) { SpellNode spellNode = preparedSpellNodes.getElementAt(preparedSpellNodes.getIndexOfElement(node)); spellNode.addCount(1); // Remove and readd to ensure the display is updated preparedSpellNodes.removeElement(spellNode); preparedSpellNodes.addElement(spellNode); } else { preparedSpellNodes.addElement(node); } // Remove dummy spelllist node from the list for (Iterator<SpellNode> iterator = preparedSpellNodes.iterator(); iterator.hasNext(); ) { SpellNode sn = iterator.next(); if (sn.getSpell() == null && spellList.equals(sn.getRootNode().getName())) { iterator.remove(); } } } }
/* (non-Javadoc) * @see pcgen.core.facade.SpellSupportFacade#removeFromSpellBook(pcgen.core.facade.SpellSupportFacade.SpellNode, java.lang.String) */ @Override public void removeFromSpellBook(SpellNode spell, String spellBook) { if (removeSpellFromCharacter(spell, spellBook)) { if (spell.getCount() > 1) { spell.addCount(-1); // Remove and readd to ensure the display is updated bookSpellNodes.removeElement(spell); bookSpellNodes.addElement(spell); } else { bookSpellNodes.removeElement(spell); } addDummyNodeIfSpellBookEmpty(spellBook); } }
/* (non-Javadoc) * @see pcgen.core.facade.SpellSupportFacade#removePreparedSpell(pcgen.core.facade.SpellSupportFacade.SpellNode, java.lang.String) */ @Override public void removePreparedSpell(SpellNode spell, String spellList) { if (removeSpellFromCharacter(spell, spellList)) { if (spell.getCount() > 1) { spell.addCount(-1); // Remove and readd to ensure the display is updated preparedSpellNodes.removeElement(spell); preparedSpellNodes.addElement(spell); } else { preparedSpellNodes.removeElement(spell); } addDummyNodeIfSpellListEmpty(spellList); } }