/* * This file is part of Applied Energistics 2. * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. * * Applied Energistics 2 is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Applied Energistics 2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Applied Energistics 2. If not, see . */ package appeng.client.render; import net.minecraft.util.IIcon; import net.minecraftforge.common.util.ForgeDirection; import appeng.block.AEBaseBlock; import appeng.client.texture.FlippableIcon; import appeng.client.texture.TmpFlippableIcon; import appeng.tile.AEBaseTile; public class BlockRenderInfo { private final BaseBlockRender rendererInstance; private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpNorthIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpEastIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpWestIcon = new TmpFlippableIcon(); private boolean useTmp = false; private FlippableIcon topIcon = null; private FlippableIcon bottomIcon = null; private FlippableIcon southIcon = null; private FlippableIcon northIcon = null; private FlippableIcon eastIcon = null; private FlippableIcon westIcon = null; public BlockRenderInfo( final BaseBlockRender inst ) { this.rendererInstance = inst; } public void updateIcons( final FlippableIcon bottom, final FlippableIcon top, final FlippableIcon north, final FlippableIcon south, final FlippableIcon east, final FlippableIcon west ) { this.topIcon = top; this.bottomIcon = bottom; this.southIcon = south; this.northIcon = north; this.eastIcon = east; this.westIcon = west; } public void setTemporaryRenderIcon( final IIcon icon ) { if( icon == null ) { this.useTmp = false; } else { this.useTmp = true; this.tmpTopIcon.setOriginal( icon ); this.tmpBottomIcon.setOriginal( icon ); this.tmpSouthIcon.setOriginal( icon ); this.tmpNorthIcon.setOriginal( icon ); this.tmpEastIcon.setOriginal( icon ); this.tmpWestIcon.setOriginal( icon ); } } public void setTemporaryRenderIcons( final IIcon nTopIcon, final IIcon nBottomIcon, final IIcon nSouthIcon, final IIcon nNorthIcon, final IIcon nEastIcon, final IIcon nWestIcon ) { this.tmpTopIcon.setOriginal( nTopIcon == null ? this.getTexture( ForgeDirection.UP ) : nTopIcon ); this.tmpBottomIcon.setOriginal( nBottomIcon == null ? this.getTexture( ForgeDirection.DOWN ) : nBottomIcon ); this.tmpSouthIcon.setOriginal( nSouthIcon == null ? this.getTexture( ForgeDirection.SOUTH ) : nSouthIcon ); this.tmpNorthIcon.setOriginal( nNorthIcon == null ? this.getTexture( ForgeDirection.NORTH ) : nNorthIcon ); this.tmpEastIcon.setOriginal( nEastIcon == null ? this.getTexture( ForgeDirection.EAST ) : nEastIcon ); this.tmpWestIcon.setOriginal( nWestIcon == null ? this.getTexture( ForgeDirection.WEST ) : nWestIcon ); this.useTmp = true; } public FlippableIcon getTexture( final ForgeDirection dir ) { if( this.useTmp ) { switch( dir ) { case DOWN: return this.tmpBottomIcon; case UP: return this.tmpTopIcon; case NORTH: return this.tmpNorthIcon; case SOUTH: return this.tmpSouthIcon; case EAST: return this.tmpEastIcon; case WEST: return this.tmpWestIcon; default: break; } } switch( dir ) { case DOWN: return this.bottomIcon; case UP: return this.topIcon; case NORTH: return this.northIcon; case SOUTH: return this.southIcon; case EAST: return this.eastIcon; case WEST: return this.westIcon; default: break; } return this.topIcon; } boolean isValid() { return this.topIcon != null && this.bottomIcon != null && this.southIcon != null && this.northIcon != null && this.eastIcon != null && this.westIcon != null; } public BaseBlockRender getRendererInstance() { return this.rendererInstance; } }