public override bool CheckRule(ElementGridEntity entity, PipelineEngine engine) { if (entity == null) { return(true); } var moveElementCoordsList = new List <MoveElementCoordsModel>(); foreach (var moveElement in FindDropElements(entity.Grid)) { moveElementCoordsList.Add(moveElement); } if (moveElementCoordsList.Count == 0) { return(false); } var moveElementEntity = new MoveElementEntity(entity, moveElementCoordsList); new LambdaPipelineStage <MoveElementEntity>(engine, t => t, moveElementEntity, this, "Add MoveElementEntity to sate"); return(true); }
public override bool CheckRule(ElementGridEntity entity, PipelineEngine engine) { if (entity == null) { return(true); } if (engine.InputFacade.MouseDown == engine.InputFacade.MouseUp) { return(false); } if (engine.InputFacade.MouseDown.X >= entity.Grid.GetLength(0)) { return(false); } if (engine.InputFacade.MouseDown.X < 0) { return(false); } if (engine.InputFacade.MouseDown.Y >= entity.Grid.GetLength(1)) { return(false); } if (engine.InputFacade.MouseDown.Y < 0) { return(false); } var moveDirection = MouseMoveCoordsToDirecting(engine.InputFacade.MouseDown, engine.InputFacade.MouseUp); var endCoords = engine.InputFacade.MouseDown + moveDirection; if (endCoords.X < 0) { return(false); } if (endCoords.Y < 0) { return(false); } if (endCoords.Y >= entity.Grid.GetLength(1)) { return(false); } if (endCoords.X >= entity.Grid.GetLength(0)) { return(false); } var startMoveElement = entity.Grid[engine.InputFacade.MouseDown.X, engine.InputFacade.MouseDown.Y]; if (startMoveElement.Name == GameElementType.Empty) { return(false); } var endMoveElement = entity.Grid[endCoords.X, endCoords.Y]; if (moveDirection == FieldCoords.top) { if (endMoveElement.Name == GameElementType.Empty) { return(false); } } var moveElementCoordsList = new List <MoveElementCoordsModel> { new MoveElementCoordsModel(engine.InputFacade.MouseDown, endCoords) }; var moveElementEntity = new MoveElementEntity(entity, moveElementCoordsList); new LambdaPipelineStage <MoveElementEntity>(engine, t => t, moveElementEntity, this, "Add MoveElementEntity to sate"); return(true); }