public static void ParseTile(EngineParserState state, EngineTile tile)
        {
            Contract.Assert(tile.Type.IsNumeral());

            state.CurrentNumberGroup += StateParserUtils.GetNumeralValue(tile, state.GetAndFlushInverting());
            tile.TimesAccessed++;
            state.Position.MoveForward();
        }
Exemplo n.º 2
0
        public static void ParseTile(EngineParserState state, EngineTile tile)
        {
            Contract.Assert(tile.Type == EngineGlyphType.OperationMultiplier);

            StateParserUtils.PerformOperation(state);
            state.LastOperator = state.GetAndFlushInverting() ? EngineOperatorType.Division : EngineOperatorType.Multiplication;
            tile.TimesAccessed++;
            state.Position.MoveForward();
        }
        public static void ParseTile(EngineParserState state, EngineTile tile)
        {
            Contract.Assert(tile.Type.IsAction());

            StateParserUtils.PerformOperation(state);

            AddAction(state, GetActionType(tile, state.GetAndFlushInverting()));
            tile.TimesAccessed++;
            state.Position.MoveForward();
        }
Exemplo n.º 4
0
        public static void ParseTile(EngineParserState state, EngineTile tile)
        {
            Contract.Assert(tile.Type == EngineGlyphType.ModifierIgnore);

            tile.TimesAccessed++;
            state.Position.MoveForward();
            if (!state.GetAndFlushInverting())
            {
                StateParserUtils.SkipEmptyTiles(state);
                state.Position.MoveForward();
            }
        }
Exemplo n.º 5
0
        private static EngineTile FindTarget(EngineParserState state, EngineDirection direction, int depth)
        {
            if (depth >= 16)
            {
                return(null);
            }

            var foundTile = StateParserUtils.Raycast(state, state.Position, direction);

            if (foundTile == null)
            {
                return(null);
            }
            return(foundTile.Type.IsCameleon() ? FindTarget(state, foundTile.Type.GetDirection(), depth + 1) : foundTile);
        }