void Turn() { if (SetHeadingIfExists(pattern)) { return; } if (pattern != PatrollerPattern.TurnLeft) { if (SetHeadingIfExists(PatrollerPattern.TurnLeft)) { pattern = PatrollerPattern.TurnLeft; return; } } if (pattern != PatrollerPattern.TurnRight) { if (SetHeadingIfExists(PatrollerPattern.TurnRight)) { pattern = PatrollerPattern.TurnRight; return; } } if (pattern != PatrollerPattern.Bounce) { if (SetHeadingIfExists(PatrollerPattern.Bounce)) { return; } } }
bool SetHeadingIfExists(PatrollerPattern pattern) { Vector2Int nextHeading = GetTurnHeading(pattern); if (location.GetNeighbour(nextHeading)) { if (heading != nextHeading) { SetWalkAnimFromHeading(nextHeading); } heading = nextHeading; return(true); } return(false); }
Vector2Int GetTurnHeading(PatrollerPattern pattern) { switch (pattern) { case PatrollerPattern.TurnLeft: return(new Vector2Int(-heading.y, heading.x)); case PatrollerPattern.TurnRight: return(new Vector2Int(heading.y, -heading.x)); case PatrollerPattern.Bounce: return(new Vector2Int(-heading.x, -heading.y)); } throw new System.Exception("Illegal turn pattern"); }