/*
* ******************************************************************************
* Copyright 2011-2015 CovertJaguar
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.md for details.
* ***************************************************************************
*/
package mods.railcraft.api.signals;
import mods.railcraft.api.core.WorldCoordinate;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* @author CovertJaguar <http://www.railcraft.info>
*/
public class SimpleSignalController extends SignalController {
private SignalAspect aspect = SignalAspect.BLINK_RED;
public SimpleSignalController(String locTag, TileEntity tile) {
super(locTag, tile, 1);
}
public SignalAspect getAspect() {
return aspect;
}
public void setAspect(SignalAspect aspect) {
if (this.aspect != aspect) {
this.aspect = aspect;
updateReceiver();
}
}
@Override
public SignalAspect getAspectFor(WorldCoordinate receiver) {
if (!pairings.contains(receiver)) {
return null;
}
return aspect;
}
private void updateReceiver() {
for (WorldCoordinate recv : pairings) {
SignalReceiver receiver = getReceiverAt(recv);
if (receiver != null) {
receiver.onControllerAspectChange(this, aspect);
}
}
cleanPairings();
}
@Override
protected void saveNBT(NBTTagCompound data) {
super.saveNBT(data);
data.setByte("aspect", (byte) aspect.ordinal());
}
@Override
protected void loadNBT(NBTTagCompound data) {
super.loadNBT(data);
aspect = SignalAspect.values()[data.getByte("aspect")];
}
public void writePacketData(DataOutputStream data) throws IOException {
data.writeByte(aspect.ordinal());
}
public void readPacketData(DataInputStream data) throws IOException {
aspect = SignalAspect.values()[data.readByte()];
}
@Override
public String toString() {
return "Controller: " + aspect.toString();
}
}