// Update is called once per frame void Update() { Vector3 alpacaPos = alpaca.GetCurrAlpacaLocation(); switch (step) { case 0: //approach shrub if (equals(alpacaPos, alpacaApproachLeft) || equals(alpacaPos, alpacaApproachRight)) { step += 1; arrowRight.active = false; } break; case 1: // hold to pick up if (equals(alpacaPos, alpacaApproachLeft) || equals(alpacaPos, alpacaApproachRight)) { approachShrub.active = false; arrowRight.active = false; if (equals(alpacaPos, alpacaApproachLeft) && alpaca.dir == FacingDirection.NE) { holdLeft.enabled = background.enabled = true; } else if (equals(alpacaPos, alpacaApproachRight) && alpaca.dir == FacingDirection.NW) { holdLeft.enabled = background.enabled = /*quadrant0.enabled =*/ true; } else { holdLeft.enabled = background.enabled = false; } } else if (!alpaca.HasBlock()) { approachShrub.active = true; arrowRight.active = true; holdLeft.enabled = background.enabled = false; } if (alpaca.HasBlock()) { step += 1; holdLeft.enabled = background.enabled = /*quadrant0.enabled =*/ false; // holdRight.enabled = quadrant1.enabled = false; } break; case 2: dropLeft.enabled = background.enabled = alpaca.HasBlock() && onEdge(alpacaPos, alpaca.dir); break; default: break; } }
Block highlighted; // block highlighted if you're holding a block void HandleFrontBlockHighlight() { if (highlighted != null) { highlighted.Unhighlight(); } if (!alpaca.HasBlock()) { return; } Vector3 dest = alpaca.GetCurrAlpacaDest(clickedWhere); highlighted = map.GetHighestBlockBelow(dest); if (highlighted != null && GetBlockAt(dest) == null) { highlighted.Highlight(); } }