/// <summary> /// Raises the TouchDownDetected event. /// </summary> /// <param name='e'> /// <see cref="Crystallography.InputManager.SustainedTouchEventArgs"/> /// </param> protected void OnTouchDown( SustainedTouchEventArgs e ) { pressDuration += e.elapsed; if (pressDuration > MAX_PRESS_DURATION && dragging == false) { OnDrag ( e ); } EventHandler<SustainedTouchEventArgs> handler = TouchDownDetected; if (handler != null ) { handler( this, e ); } }
/// <summary> /// Handles <c>InputManager.TouchDownDetected</c>. /// </summary> /// <param name='sender'> /// InputManager instance /// </param> /// <param name='e'> /// <see cref="Crystallography.InputManager.BaseTouchEventArgs"/> /// </param> void HandleInputManagerInstanceTouchDownDetected(object sender, SustainedTouchEventArgs e) { // NO TOUCHING PIECES WHEN GAME IS PAUSED if ( GameScene.paused ) return; // NO TOUCHING PIECES WHEN LEVEL IS OVER if ( GameScene.Hud.MetGoalTime != 0.0f) return; setPosition( e.touchPosition ); if (velocity < MAXIMUM_PICKUP_VELOCITY) { if ( InputManager.dragging ) { // ----------------------------------- LOOK FOR ENTITIES THE PLAYER MIGHT BE TRYING TO TOUCH // TEST FINGER POSITION var entity = GetEntityAtPosition( e.touchPosition ); if (justDownPositionEntity != null) { // ------------------------ EDGE CASE: PLAYER TOUCHED DOWN ON A PIECE, BUT DRAGGED OFF OF IT if (justDownPositionEntity != entity ) { // ----------------- BEFORE WE ADDED IT TO THE SELECTION GROUP. if (entity == null) { entity = justDownPositionEntity; // ----------------- COMMON: PLAYER IS TOUCHING EMPTY SPACE; RESOLVE IT BELOW } } justDownPositionEntity = null; } if ( entity == null && velocity < 100.0f && population != 0) { // TRY THE PICK UP POSITIONS FOR THE PIECE THE PLAYER ALREADY HAS if (_pucks[(int)POSITIONS.TOP].Children.Count != 0) { entity = GetEntityAtPosition( getNode().LocalToWorld(UP_LEFT_SELECTION_POINT), POSITIONS.LEFT); if (entity == null) { entity = GetEntityAtPosition( getNode().LocalToWorld(UP_RIGHT_SELECTION_POINT), POSITIONS.RIGHT); } } if ( entity == null && _pucks[(int)POSITIONS.LEFT].Children.Count != 0) { entity = GetEntityAtPosition( getNode().LocalToWorld(LEFT_UP_SELECTION_POINT), POSITIONS.TOP); } if ( entity == null && _pucks[(int)POSITIONS.RIGHT].Children.Count != 0){ entity = GetEntityAtPosition( getNode().LocalToWorld(RIGHT_UP_SELECTION_POINT), POSITIONS.TOP); } } if (entity != null) { if ( selectionDelay == 0.0f) { Add (entity); } } lastEntityTouched = entity; } } }
protected void OnDrag( SustainedTouchEventArgs e ) { dragging = true; EventHandler<SustainedTouchEventArgs> handler = DragDetected; if (handler != null) { handler( this, e ); } }
void HandleInputManagerInstanceDragDetected(object sender, SustainedTouchEventArgs e) { if( GameScene.paused ) return; if ( GameScene.Hud.MetGoalTime != 0.0f) return; }