예제 #1
0
        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;
                }

            }
        }
예제 #2
0
        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;
                    }
                }
            }
        }
예제 #3
0
        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;
                }

            }
        }