/** * Copyright (c) 2005-2017, KoLmafia development team * http://kolmafia.sourceforge.net/ * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * [1] Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * [2] Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * [3] Neither the name "KoLmafia" nor the names of its contributors may * be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ package net.sourceforge.kolmafia.webui; import net.sourceforge.kolmafia.objectpool.ItemPool; import net.sourceforge.kolmafia.request.UseItemRequest; public class UseItemDecorator { public static final void decorate( final String location, final StringBuffer buffer ) { if ( location.startsWith( "inventory.php" ) && !location.contains( "action=message" ) ) { return; } // Saved when we executed inv_use.php, whether or not it // redirected to inventory.php int itemId = UseItemRequest.currentItemId(); switch ( itemId ) { case ItemPool.BOO_CLUE: UseItemDecorator.decorateBooClue( buffer ); break; case ItemPool.PALINDROME_BOOK_1: UseItemDecorator.decorateVolume1( buffer ); break; case ItemPool.PALINDROME_BOOK_2: UseItemDecorator.decorateVolume2( buffer ); break; } } private static void decorateItem( final StringBuffer buffer, final StringBuilder insert ) { String search = "</blockquote></td></tr>"; int index = buffer.indexOf( search ); if ( index == -1 ) { return; } // We will insert things before the end of the table index += search.length(); StringBuilder link = new StringBuilder(); link.append( "<tr align=center><td>" ); link.append( insert ); link.append( "</td></tr>" ); buffer.insert( index, link.toString() ); } // <table width=95% cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Results:</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><img src="http://images.kingdomofloathing.com/itemimages/ratchet.gif" width=30 height=30><br></center><blockquote>TEXT</blockquote></td></tr></table> private static void decorateBooClue( final StringBuffer buffer ) { if ( buffer.indexOf( "A-Boo Peak" ) == -1 ) { return; } // Add the link to adventure in A-Boo Peak StringBuilder link = new StringBuilder(); link.append( "<a href=\"adventure.php?snarfblat=296\">" ); link.append( "[Adventure at A-Boo Peak]" ); link.append( "</a>" ); UseItemDecorator.decorateItem( buffer, link ); } private static void decorateVolume1( final StringBuffer buffer ) { // Add the link StringBuilder link = new StringBuilder(); link.append( "<a href=\"place.php?whichplace=palindome&action=pal_droffice\">" ); link.append( "[Place stuff on the shelves]" ); link.append( "</a>" ); UseItemDecorator.decorateItem( buffer, link ); } private static void decorateVolume2( final StringBuffer buffer ) { // Add the link StringBuilder link = new StringBuilder(); link.append( "<a href=\"place.php?whichplace=palindome&action=pal_mroffice\">" ); link.append( "[Talk to Mr. Alarm]" ); link.append( "</a>" ); UseItemDecorator.decorateItem( buffer, link ); } }