Package buildcraft.api.statements

Examples of buildcraft.api.statements.IStatement


  }

  private void rotateGateLeft(NBTTagCompound gateNBT) {
    for (int i = 0; i < Gate.MAX_STATEMENTS; ++i) {
      if (gateNBT.hasKey("trigger[" + i + "]")) {
        IStatement t = StatementManager.statements.get(gateNBT.getString("trigger[" + i + "]"));
        t = t.rotateLeft();
        gateNBT.setString("trigger[" + i + "]", t.getUniqueTag());
      }

      if (gateNBT.hasKey("action[" + i + "]")) {
        IStatement a = StatementManager.statements.get(gateNBT.getString("action[" + i + "]"));
        a = a.rotateLeft();
        gateNBT.setString("action[" + i + "]", a.getUniqueTag());
      }
     
      for (int j = 0; j < Gate.MAX_PARAMETERS; ++j) {
        if (gateNBT.hasKey("triggerParameters[" + i + "][" + j + "]")) {
          NBTTagCompound cpt = gateNBT.getCompoundTag("triggerParameters[" + i + "][" + j + "]");
View Full Code Here


    AdvancedSlot slot = getSlotAtLocation(i, j);

    if (slot instanceof TriggerSlot && container.hasTriggers()) {
      TriggerSlot triggerSlot = (TriggerSlot) slot;

      IStatement changed = null;

      if (triggerSlot.getStatement() == null) {

        if (k == 0) {
          changed = container.getFirstTrigger();
        } else {
          changed = container.getLastTrigger();
        }

      } else {
        Iterator<IStatement> it = container.getTriggerIterator(k != 0);

        for (; it.hasNext();) {
          IStatement trigger = it.next();

          if (!it.hasNext()) {
            changed = null;
            break;
          }

          if (trigger == triggerSlot.getStatement()) {
            changed = it.next();
            break;
          }
        }
      }

      if (changed == null) {
        container.setTrigger(triggerSlot.slot, null, true);
      } else {
        container.setTrigger(triggerSlot.slot, changed.getUniqueTag(), true);
      }

      for (StatementParameterSlot p : triggerSlot.parameters) {
        IStatementParameter parameter = null;
        if (changed != null && p.slot < changed.minParameters()) {
          parameter = changed.createParameter(p.slot);
        }
        container.setTriggerParameter(triggerSlot.slot, p.slot, parameter, true);
      }
    } else if (slot instanceof ActionSlot) {
      ActionSlot actionSlot = (ActionSlot) slot;

      IStatement changed = null;
      if (actionSlot.getStatement() == null) {

        if (k == 0) {
          changed = container.getFirstAction();
        } else {
          changed = container.getLastAction();
        }

      } else {
        Iterator<IStatement> it = container.getActionIterator(k != 0);

        for (; it.hasNext();) {
          IStatement action = it.next();

          if (!it.hasNext()) {
            changed = null;
            break;
          }
View Full Code Here

      this.slot = slot;
    }

    @Override
    public String getDescription() {
      IStatement stmt = getStatement();

      if (stmt != null) {
        return stmt.getDescription();
      } else {
        return "";
      }
    }
View Full Code Here

    }

    @SideOnly(Side.CLIENT)
    @Override
    public IIcon getIcon() {
      IStatement stmt = getStatement();

      if (stmt != null) {
        return stmt.getIcon();
      } else {
        return null;
      }
    }
View Full Code Here

      potentialActions.addAll(gate.getAllValidActions());

      Iterator<IStatement> it = potentialTriggers.iterator();

      while (it.hasNext()) {
        IStatement trigger = it.next();

        if (trigger.minParameters() > gate.material.numTriggerParameters) {
          it.remove();
        }
      }

      it = potentialActions.iterator();

      while (it.hasNext()) {
        IStatement action = it.next();

        if (action.minParameters() > gate.material.numActionParameters) {
          it.remove();
        }
      }
    }
    if (gateCallback != null) {
View Full Code Here

  @RPC(RPCSide.SERVER)
  public void selectionRequest(RPCMessageInfo info) {
    EntityPlayer player = info.sender;
    for (int position = 0; position < gate.material.numSlots; position++) {
      IStatement action = gate.getAction(position);
      IStatement trigger = gate.getTrigger(position);
      RPCHandler.rpcPlayer(player, this, "setAction", position, action != null ? action.getUniqueTag() : null, false);
      RPCHandler.rpcPlayer(player, this, "setTrigger", position, trigger != null ? trigger.getUniqueTag() : null, false);
      for (int p = 0; p < gate.material.numActionParameters; ++p) {
        RPCHandler.rpcPlayer(player, this, "setActionParameter", position, p,
            gate.getActionParameter(position, p), false);
      }
      for (int q = 0; q < gate.material.numTriggerParameters; ++q) {
View Full Code Here

    // Computes the actions depending on the triggers
    for (int it = 0; it < MAX_STATEMENTS; ++it) {
      actionsState[it] = ActionActiveState.Deactivated;

      IStatement trigger = triggers[it];
      IStatementParameter[] parameter = triggerParameters[it];

      if (trigger != null) {
        if (isTriggerActive(trigger, parameter)) {
          actionsState[it] = ActionActiveState.Partial;
        }
      }
    }

    activeActions = new ArrayList<StatementSlot>();

    for (int it = 0; it < MAX_STATEMENTS; ++it) {
      boolean allActive = true;
      boolean oneActive = false;

      if (actions[it] == null) {
        continue;
      }

      for (int j = 0; j < MAX_STATEMENTS; ++j) {
        if (actionGroups[j] == it) {
          if (actionsState[j] != ActionActiveState.Partial) {
            allActive = false;
          } else {
            oneActive = true;
          }
        }
      }

      if ((logic == GateLogic.AND && allActive && oneActive) || (logic == GateLogic.OR && oneActive)) {
        if (logic == GateLogic.AND) {
          for (int j = 0; j < MAX_STATEMENTS; ++j) {
            if (actionGroups[j] == it) {
              actionsState[j] = ActionActiveState.Activated;
            }
          }
        }

        StatementSlot slot = new StatementSlot();
        slot.statement = actions[it];
        slot.parameters = actionParameters[it];
        activeActions.add(slot);
      }

      if (logic == GateLogic.OR && actionsState[it] == ActionActiveState.Partial) {
        actionsState[it] = ActionActiveState.Activated;
      }
    }

    // Activate the actions
    for (StatementSlot slot : activeActions) {
      IStatement action = slot.statement;
      if (action instanceof IActionInternal) {
        ((IActionInternal) action).actionActivate(this, slot.parameters);
      } else if (action instanceof IActionExternal) {
        for (ForgeDirection side: ForgeDirection.VALID_DIRECTIONS) {
          TileEntity tile = this.getPipe().getTile().getAdjacentTile(side);
View Full Code Here

TOP

Related Classes of buildcraft.api.statements.IStatement

Copyright © 2018 www.massapicom. 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.