private static Position.Direction CharFits(char found, Position.Direction direction)
{
if (found == '+' || found == '#')
{
switch (direction)
{
case Position.Direction.North:
return Position.Direction.East | Position.Direction.West | Position.Direction.North;
case Position.Direction.East:
return Position.Direction.North | Position.Direction.East | Position.Direction.South;
case Position.Direction.South:
return Position.Direction.East | Position.Direction.West | Position.Direction.South;
case Position.Direction.West:
return Position.Direction.West | Position.Direction.North | Position.Direction.South;
default: return Position.Direction.None;
}
}
if (found == '|')
{
switch (direction)
{
case Position.Direction.North:
return Position.Direction.North;
case Position.Direction.South:
return Position.Direction.South;
default:
return Position.Direction.None;
}
}
if (found == '-')
{
switch (direction)
{
case Position.Direction.East:
return Position.Direction.East;
case Position.Direction.West:
return Position.Direction.West;
default:
return Position.Direction.None;
}
}
if (found >= 'a' && found <= 'z')
{
return direction;
}
if (found >= '0' && found <= '9')
{
return direction;
}
return Position.Direction.None;
}