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