public EngineParserState(EngineParser parser, EngineTile[,] tiles)
 {
     EngineParser = parser;
     Tiles        = tiles;
     Position     = new ParserPosition(tiles);
     Actions      = new List <EngineActionType>();
 }
        public static EngineTile Raycast(EngineParserState state, ParserPosition startPosition, EngineDirection direction)
        {
            var currentPosition = startPosition.Position;

            currentPosition = new Point(currentPosition.X + direction.X, currentPosition.Y + direction.Y);
            while (state.IsValidPosition(currentPosition))
            {
                var tile = state[currentPosition];

                if (tile.Type != EngineGlyphType.Nothing)
                {
                    return(tile);
                }

                currentPosition = new Point(currentPosition.X + direction.X, currentPosition.Y + direction.Y);
            }

            return(null);
        }
Example #3
0
 public void SetTo(ParserPosition position)
 {
     Position = position.Position;
 }
 public EngineTile this[ParserPosition index] => Tiles[index.Position.X, index.Position.Y];
 public bool IsValidPosition(ParserPosition position) =>
 IsValidPosition(position.Position.X, position.Position.Y);