Beispiel #1
0
        protected override void Update(GameTime gameTime)
        {
            KeyboardState newState = Keyboard.GetState();

            // Wyjscie z gry
            if (newState.IsKeyDown(Keys.Escape))
            {
                this.Exit();
            }

            // Podanie komendy play
            if (newState.IsKeyDown(Keys.P))
            {
                speech.setLastCommand(WordCommands.START);
            }

            if (newState.IsKeyDown(Keys.A))
            {
                if (speech.getConfidenceThreshold() + 0.01f < 1)
                {
                    speech.setConfidenceThreshold(Math.Round(speech.getConfidenceThreshold() + 0.01f, 2));
                }
                else
                {
                    speech.setConfidenceThreshold(1.0f);
                }
            }

            if (newState.IsKeyDown(Keys.Z))
            {
                if (speech.getConfidenceThreshold() - 0.01f > 0)
                {
                    speech.setConfidenceThreshold(Math.Round(speech.getConfidenceThreshold() - 0.01f, 2));
                }
                else
                {
                    speech.setConfidenceThreshold(0.0f);
                }
            }

            //Infobox jest update'owany niezaleznie od ekranu
            trackedSkeleton.updateSkeleton(depthStream.skeletonStream.getLastSkeleton());
            activeScreen = infoBox.update(trackedSkeleton.getJoint(JointType.WristRight), pointer.rectanglePointer, activeScreen, speech.getConfidenceThreshold());

            //Stan myszy
            MouseState mouse = Mouse.GetState();

            pointer.update(mouse.X, mouse.Y);

            //Ruch reka
            pointer.updateByKinect(trackedSkeleton);

            depthStream.Visible = false;
            depthStream.Enabled = true;
            colorStream.Visible = true;
            colorStream.Enabled = true;

            //Update screenu ze wzgledu na aktywny ekran
            switch (activeScreen)
            {
            case GameType.LoadingScreen:
            {
                infoBox.Invisible();
                colorStream.Visible = false;
                colorStream.Enabled = false;
                depthStream.Visible = false;
                depthStream.Enabled = false;
                activeScreen        = loadingScreen.update();
                pointer.Disable();
                LoadContentInTime(loadingScreen.getTime());
                break;
            }

            case GameType.Intro:
            {
                infoBox.Invisible();
                colorStream.Visible = false;
                colorStream.Enabled = false;
                depthStream.Visible = false;
                depthStream.Enabled = false;
                activeScreen        = introScreen.update();
                pointer.Disable();
                break;
            }

            case GameType.MainMenu:
            {
                infoBox.Visible();
                activeScreen = mainMenuScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.Kindergarten:
            {
                infoBox.Visible();
                activeScreen = kindergartenScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.School:
            {
                infoBox.Visible();
                activeScreen = schoolScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.Memory:
            {
                infoBox.Visible();
                activeScreen = memoryScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.ToyStore:
            {
                infoBox.Visible();
                activeScreen = toystoreScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.EngColors:
            {
                infoBox.Visible();
                activeScreen = engColorsScreen.update(pointer.rectanglePointer);
                pointer.Enable();
                break;
            }

            case GameType.Gymnastics:
            {
                infoBox.Invisible();
                speech.EnableSpeechRecognition();
                GameType newMode = gymnasticsScreen.update(pointer.rectanglePointer, trackedSkeleton.getSkeleton(), speech.getLastCommand());

                if (newMode != activeScreen)
                {
                    speech.DisableSpeechRecognition();
                }

                speech.cleanLastCommand();
                pointer.Disable();
                activeScreen = newMode;
                break;
            }

            case GameType.PickingApples:
            {
                infoBox.Invisible();
                colorStream.Visible = false;
                GameType newMode = pickingApplesScreen.update(trackedSkeleton.getJoint(JointType.HandLeft), trackedSkeleton.getJoint(JointType.HandRight), speech.getLastCommand());

                if (newMode == activeScreen)
                {
                    if (pickingApplesScreen.firstEntrance)
                    {
                        //Tryb uruchomiony pierwszy raz, trzeba zmienic viewport
                        pickingApplesScreen.firstEntrance = false;
                        speech.EnableSpeechRecognition();
                        this.setKinectViewport(KinectViewportModes.PICKING_APPLES);
                    }
                }
                else
                {
                    //Zmiana trybu
                    pickingApplesScreen.firstEntrance = true;
                    this.setKinectViewport(KinectViewportModes.NORMAL);
                    speech.DisableSpeechRecognition();
                }

                speech.cleanLastCommand();
                pointer.Disable();
                activeScreen = newMode;
                break;
            }
            }

            base.Update(gameTime);
        }