private void updateDragBubbles() { for (iter1 = 0; iter1 < dragBubblesOnScreen.Count; iter1++) { if (dragBubblesOnScreen[iter1].currentState != DragBubbleState.REMOVAL_STATE) { //update the bubble's state dragBubblesOnScreen[iter1].Update(); refBub = dragBubblesOnScreen[iter1].bubble1; if (refBub.isActive()) { switch (refBub.bubbleType) { case BubbleType.HAND: if (dragBubblesOnScreen[iter1].currentState != DragBubbleState.LOCKED_IN) { if (kinector.isColliding(refBub.collisionBox, JointType.HandRight)) { refBub.setState(BubbleState.HIGHLIGHTED_STATE); refBub.jointHovering = JointType.HandRight; dragBubblesOnScreen[iter1].currentState = DragBubbleState.HOVERED; } else if (kinector.isColliding(refBub.collisionBox, JointType.HandLeft)) { refBub.setState(BubbleState.HIGHLIGHTED_STATE); refBub.jointHovering = JointType.HandLeft; dragBubblesOnScreen[iter1].currentState = DragBubbleState.HOVERED; } else { refBub.setState(BubbleState.NORMAL_STATE); dragBubblesOnScreen[iter1].currentState = DragBubbleState.NORMAL; allHighlighted = false; } } else { dragBubblesOnScreen[iter1].follow(refBub.jointHovering==JointType.HandRight?kinector.getHandPosition(JointType.HandRight):kinector.getHandPosition(JointType.HandLeft)); } break; } } dragBubblesOnScreen[iter1].resetPopCounters(); } else { dragBubblesOnScreen.RemoveAt(iter1--); continue; } } }
private void updateSoloBubbles() { for (iter1 = 0; iter1 < bubblesOnScreen.Count; iter1++) { refBub = bubblesOnScreen[iter1]; refBub.Update(); if (refBub.isReadyForRemoval()) { bubblesOnScreen.RemoveAt(iter1--); continue; } else if ( refBub.isActive() ) { switch (refBub.bubbleType) { case BubbleType.HAND: if (kinector.isColliding(refBub.collisionBox, JointType.HandRight) || kinector.isColliding(refBub.collisionBox, JointType.HandLeft)) { refBub.setState(BubbleState.HIGHLIGHTED_STATE); if (refBub.popCounter >= refBub.popTime-1) { effectHandler.addEffect((int)refBub.xPos, (int)refBub.yPos, 20); effectHandler.addEffect((int)refBub.xPos, (int)refBub.yPos, 10, Color.White); } } else { refBub.setState(BubbleState.NORMAL_STATE); } break; } } } }
private void updateBubbleSets() { for (iter1 = 0; iter1 < bubbleSetsOnScreen.Count; iter1++) { if (bubbleSetsOnScreen[iter1].currentState != BubbleSetState.REMOVAL_STATE) { //update the bubble's state bubbleSetsOnScreen[iter1].Update(); //we assume first that all bubbles are touched until we found one that isn't allHighlighted = true; for (iter3 = 0; iter3 < bubbleSetsOnScreen[iter1].bubbles.Count; iter3++) { refBub = bubbleSetsOnScreen[iter1].bubbles[iter3]; if (refBub.isActive()) { switch (refBub.bubbleType) { case BubbleType.HAND: if (kinector.isColliding(refBub.collisionBox, JointType.HandRight) || kinector.isColliding(refBub.collisionBox, JointType.HandLeft)) { refBub.setState(BubbleState.HIGHLIGHTED_STATE); } else { refBub.setState(BubbleState.NORMAL_STATE); allHighlighted = false; } break; } } } if (!allHighlighted) { //we start counting to popping only when all bubbles are highlighted/touched bubbleSetsOnScreen[iter1].resetPopCounters(); } } else { bubbleSetsOnScreen.RemoveAt(iter1--); continue; } } }