public Vector2 GetPreviousSimulationStep(Board board) { if (displacement.type == UnitDisplacementType.RELATIVE && !CheckCoordinateEquality(current, displacement.GetStartCoordinate())) { RelativeDisplacement rd = (RelativeDisplacement)displacement; Vector2 prev = current - rd.GetUnitStep(); if (board.CheckCoord(new Vector2(Mathf.Round(prev.x), Mathf.Round(prev.y)))) { current = prev; } else { outOfBounds = true; } } else if (displacement.type == UnitDisplacementType.ABSOLUTE) { current = displacement.GetStartCoordinate(); } return(GetCurrentVector()); }
public Vector2 GetNextSimulationStep(Board board) { if (displacement.type == UnitDisplacementType.RELATIVE && !CheckCoordinateEquality(current, result)) { RelativeDisplacement rd = (RelativeDisplacement)displacement; Vector2 next = current + rd.GetUnitStep(); if (board.CheckCoord(new Vector2(Mathf.Round(next.x), Mathf.Round(next.y)))) { current = next; } else { outOfBounds = true; } } else if (displacement.type == UnitDisplacementType.ABSOLUTE) { current = result; } return(GetCurrentVector()); }