/** * @param location The location to search * @param needForCancel If true, excludes noCancel spells * @return A list of ALL breakable spells (currently Combat,Day,Permanent) that are in the * clearing. */ public ArrayList getAllSpellsInClearing(TileLocation location, boolean needForCancel) { ArrayList ret = new ArrayList(); for (Iterator i = getSpells(null).iterator(); i.hasNext(); ) { SpellWrapper spell = (SpellWrapper) i.next(); if (!needForCancel || !spell.isNoCancelSpell()) { TileLocation test = spell.getCurrentLocation(); if (test != null) { // test might be null if the spell is targeting a treasure that hasn't yet // been seen if (test.equals(location)) { ret.add(spell); } else if (test.isTileOnly()) { ret.add(spell); } } } } return ret; }
private boolean spellCanEnergize( GameWrapper game, TileLocation loc, SpellWrapper spell, boolean includeCalendar) { RealmCalendar cal = RealmCalendar.getCalendar(game.getGameObject().getGameData()); ArrayList infiniteSources = new ArrayList(); if (loc.isInClearing()) { infiniteSources.addAll(loc.clearing.getAllSourcesOfColor(true)); } else if (loc.isBetweenClearings()) { infiniteSources.addAll(loc.clearing.getAllSourcesOfColor(true)); infiniteSources.addAll(loc.getOther().clearing.getAllSourcesOfColor(true)); } else if (loc.isTileOnly()) { infiniteSources.addAll(loc.tile.getAllSourcesOfColor()); } else if (loc.isBetweenTiles()) { infiniteSources.addAll(loc.tile.getAllSourcesOfColor()); infiniteSources.addAll(loc.getOther().tile.getAllSourcesOfColor()); } if (includeCalendar) { // 7th day color magic! infiniteSources.addAll(cal.getColorMagic(game.getMonth(), game.getDay())); } if (infiniteSources.size() > 0) { ColorMagic spellColor = spell.getRequiredColorMagic(); if (spellColor == null || infiniteSources.contains(spellColor)) { // We got it! return true; // spell.affectTargets(frame,game,false); } } return false; }