package rabbitescape.ui.swing; import static rabbitescape.engine.util.Util.*; import java.io.IOException; import java.util.Arrays; import rabbitescape.render.BitmapLoader; import rabbitescape.render.FailedToLoadImage; public class SwingBitmapLoader implements BitmapLoader<SwingBitmap> { private static int[] SIZES = new int[] { 32, 64, 128 }; @Override public SwingBitmap load( String name, int tileSize ) { reAssert( Arrays.binarySearch( SIZES, tileSize ) >= 0 ); String resourcePath = "/rabbitescape/ui/swing/images" + tileSize + "/" + name + ".png"; try { return new SwingBitmap( name, javax.imageio.ImageIO.read( getClass().getResource( resourcePath ) ) ); } catch ( IOException | IllegalArgumentException e ) { throw new FailedToLoadImage( resourcePath, e ); } } @Override public int sizeFor( int tileSize ) { // Return the smallest size that is >= tileSize for ( int size : SIZES ) { if ( tileSize <= size ) { return size; } } return SIZES[ SIZES.length - 1 ]; } }