Package forestry.core.circuits

Source Code of forestry.core.circuits.CircuitBoard

/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
******************************************************************************/
package forestry.core.circuits;

import java.util.ArrayList;
import java.util.List;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;

import forestry.api.circuits.ChipsetManager;
import forestry.api.circuits.ICircuit;
import forestry.api.circuits.ICircuitBoard;
import forestry.api.circuits.ICircuitLayout;

public class CircuitBoard implements ICircuitBoard {

  EnumCircuitBoardType type;
  ICircuitLayout layout;
  ICircuit[] circuits;

  public CircuitBoard(EnumCircuitBoardType type, ICircuitLayout layout, ICircuit[] circuits) {
    this.type = type;
    this.layout = layout;
    this.circuits = circuits;
  }

  public CircuitBoard(NBTTagCompound nbttagcompound) {
    readFromNBT(nbttagcompound);
  }

  @Override
  public int getPrimaryColor() {
    return type.primaryColor;
  }

  @Override
  public int getSecondaryColor() {
    return type.secondaryColor;
  }

  @Override
  public void addTooltip(List<String> list) {
    if (layout != null)
      list.add("\u00A76" + layout.getUsage() + ":");

    for (ICircuit circuit : circuits)
      if (circuit != null)
        circuit.addTooltip(list);
  }

  @Override
  public void readFromNBT(NBTTagCompound nbttagcompound) {

    type = EnumCircuitBoardType.values()[nbttagcompound.getShort("T")];

    // Layout
    if (nbttagcompound.hasKey("LY"))
      layout = ChipsetManager.circuitRegistry.getLayout(nbttagcompound.getString("LY"));
    if (layout == null)
      ChipsetManager.circuitRegistry.getDefaultLayout();

    ArrayList<ICircuit> readcircuits = new ArrayList<ICircuit>();

    // FIXME: Legacy I
    if (nbttagcompound.hasKey("CS")) {

      NBTTagList nbttaglist = nbttagcompound.getTagList("CS", 10);
      for (int i = 0; i < nbttaglist.tagCount(); i++) {
        NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
        readcircuits.add(ChipsetManager.circuitRegistry.getFromLegacyMap(nbttagcompound1.getInteger("I")));
      }

      circuits = readcircuits.toArray(new ICircuit[0]);
      return;

    }

    // FIXME: Legacy II
    if (nbttagcompound.hasKey("CL")) {
      NBTTagList nbttaglist = nbttagcompound.getTagList("CL", 10);
      for (int i = 0; i < nbttaglist.tagCount(); i++) {
        NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
        readcircuits.add(ChipsetManager.circuitRegistry.getCircuit(nbttagcompound1.getString("I")));
      }

      circuits = readcircuits.toArray(new ICircuit[0]);
      return;
    }

    // New
    if (circuits != null)
      return;

    for (int i = 0; i < 4; i++) {
      if (!nbttagcompound.hasKey("CA.I" + i))
        continue;
      ICircuit circuit = ChipsetManager.circuitRegistry.getCircuit(nbttagcompound.getString("CA.I" + i));
      if (circuit != null)
        readcircuits.add(circuit);
    }
    circuits = readcircuits.toArray(new ICircuit[readcircuits.size()]);
  }

  @Override
  public void writeToNBT(NBTTagCompound nbttagcompound) {

    nbttagcompound.setShort("T", (short) type.ordinal());

    // Layout
    if (layout != null)
      nbttagcompound.setString("LY", layout.getUID());

    // Circuits
    for (int i = 0; i < circuits.length; i++) {
      ICircuit circuit = circuits[i];
      if (circuit == null)
        continue;

      nbttagcompound.setString("CA.I" + i, circuit.getUID());
    }

  }

  @Override
  public void onInsertion(TileEntity tile) {
    for (int i = 0; i < circuits.length; i++) {
      if (circuits[i] == null)
        continue;
      circuits[i].onInsertion(i, tile);
    }
  }

  @Override
  public void onLoad(TileEntity tile) {
    for (int i = 0; i < circuits.length; i++) {
      if (circuits[i] == null)
        continue;
      circuits[i].onLoad(i, tile);
    }
  }

  @Override
  public void onRemoval(TileEntity tile) {
    for (int i = 0; i < circuits.length; i++) {
      if (circuits[i] == null)
        continue;
      circuits[i].onRemoval(i, tile);
    }
  }

  @Override
  public void onTick(TileEntity tile) {
    for (int i = 0; i < circuits.length; i++) {
      if (circuits[i] == null)
        continue;
      circuits[i].onTick(i, tile);
    }
  }

  @Override
  public ICircuit[] getCircuits() {
    return circuits;
  }
}
TOP

Related Classes of forestry.core.circuits.CircuitBoard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.