package emasher.api;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class RSPulseModule extends RSGateModule {
public RSPulseModule( int id, String... textureFiles ) {
super( id, textureFiles );
}
@Override
public int getCurrentTexture( SideConfig config ) {
return 0;
}
@SideOnly( Side.CLIENT )
public String getInternalTexture( SocketTileAccess ts, SideConfig config, ForgeDirection side ) {
if( ( config.meta & 1 ) == 0 ) return "eng_toolbox:inner_redstone_inactive";
return "eng_toolbox:inner_redstone_active";
}
@SideOnly( Side.CLIENT )
public String[] getAllInternalTextures() {
return new String[] {
"eng_toolbox:inner_redstone_inactive",
"eng_toolbox:inner_redstone_active"
};
}
@Override
public boolean isOutputtingRedstone( SideConfig config, SocketTileAccess ts ) {
return config.meta >= 1;
}
@Override
public boolean hasLatchIndicator() {
return false;
}
@Override
public void updateOutput( SocketTileAccess ts, SideConfig config ) {
}
@Override
public void updateSide( SideConfig config, SocketTileAccess ts, ForgeDirection side ) {
if( config.meta > 0 ) {
config.meta++;
if( config.meta >= 4 ) {
config.meta = 0;
ts.updateAdj( side );
ts.sendClientSideState( side.ordinal() );
for( int i = 0; i < 3; i++ ) {
if( config.rsControl[i] ) {
ts.modifyRS( i, false );
}
}
}
}
}
@Override
public void onRSInterfaceChange( SideConfig config, int index, SocketTileAccess ts, ForgeDirection side, boolean on ) {
if( !on ) {
if( config.rsControl[index] && config.meta > 0 ) {
ts.modifyRS( index, true );
}
}
}
}