public static TubeInputs GetOposite(TubeInputs input) { TubeInputs oposite = 0; switch (input) { case TubeInputs.Top: oposite = TubeInputs.Bottom; break; case TubeInputs.Right: oposite = TubeInputs.Left; break; case TubeInputs.Bottom: oposite = TubeInputs.Top; break; case TubeInputs.Left: oposite = TubeInputs.Right; break; } return(oposite); }
public WaterFlowIterator(ICell <ITube> cell, IBoard <ITube> board) { _start = cell; _board = board; _exclude = 0; Current = _start; }
private TubeInputs Rotate() { TubeInputs newInputs = 0; if (_direction == RotationDirection.Clockwise) { if ((Owner.InternalInputs & TubeInputs.Top) == TubeInputs.Top) { newInputs |= TubeInputs.Right; } if ((Owner.InternalInputs & TubeInputs.Right) == TubeInputs.Right) { newInputs |= TubeInputs.Bottom; } if ((Owner.InternalInputs & TubeInputs.Bottom) == TubeInputs.Bottom) { newInputs |= TubeInputs.Left; } if ((Owner.InternalInputs & TubeInputs.Left) == TubeInputs.Left) { newInputs |= TubeInputs.Top; } } else { if ((Owner.InternalInputs & TubeInputs.Top) == TubeInputs.Top) { newInputs |= TubeInputs.Left; } if ((Owner.InternalInputs & TubeInputs.Left) == TubeInputs.Left) { newInputs |= TubeInputs.Bottom; } if ((Owner.InternalInputs & TubeInputs.Bottom) == TubeInputs.Bottom) { newInputs |= TubeInputs.Right; } if ((Owner.InternalInputs & TubeInputs.Right) == TubeInputs.Right) { newInputs |= TubeInputs.Top; } } return(newInputs); }
public bool MoveNext() { var result = false; var to = Current.Instance.Inputs ^ _exclude; var column = Current.Column; var row = Current.Row; switch (to) { case TubeInputs.Top: row--; break; case TubeInputs.Right: column++; break; case TubeInputs.Bottom: row++; break; case TubeInputs.Left: column--; break; } if (row >= 0 && row < _board.Rows && column >= 0 && column < _board.Columns && _board[column, row].Instance.Inputs.HasFlag(TubeInputsHelper.GetOposite(to))) { result = true; _exclude = TubeInputsHelper.GetOposite(to); Current = _board[column, row]; } else { Current = null; } return(result); }
public FakeTube(TubeInputs inputs) { Inputs = inputs; }