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); }
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);