示例#1
0
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            if (Global.Back == true)
            {
                SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                MenuScreen menuScreen = new MenuScreen();
                ScreenManager.AddScreen(menuScreen);
                this.ExitScreen();
                return;
            }
            if (TouchPanel.IsGestureAvailable)
            {
                Gestures = TouchPanel.ReadGesture();
            }
            else
            {
                Gestures = new GestureSample();
            }

            if (Gestures.GestureType == GestureType.Tap)
            {
                Point posTap = new Point((int)Gestures.Position.X, (int)Gestures.Position.Y);
                if (m_state == ModeScreenState.Select)
                {
                    if (EasyButton.Contains(posTap))
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        MainGameScreen mainGameScreen = new MainGameScreen();
                        mainGameScreen.SetModeGame(GameMode.EasyClassic);
                        ScreenManager.AddScreen(mainGameScreen);
                        this.ExitScreen();
                        return;
                    }
                    if (NormalButton.Contains(posTap))
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        MainGameScreen mainGameScreen = new MainGameScreen();
                        mainGameScreen.SetModeGame(GameMode.NormalClassic);
                        ScreenManager.AddScreen(mainGameScreen);
                        this.ExitScreen();
                        return;
                    }
                    if (levelsButton.Contains(posTap))
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        LevelScreen levelScreen = new LevelScreen();
                        ScreenManager.AddScreen(levelScreen);
                        this.ExitScreen();
                        return;
                    }
                    if (howToPlayButton.Contains(posTap))
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        m_state = ModeScreenState.Tutorial;

                        return;
                    }
                }
                if (m_state == ModeScreenState.Tutorial)
                {
                    SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                    m_pHowToPlay.CurentFrame++;
                    m_pHowToPlay.setFrame(m_pHowToPlay.CurentFrame);
                    if (m_pHowToPlay.CurentFrame > m_pHowToPlay.TotalFrame - 1)
                    {
                        m_pHowToPlay.CurentFrame = 0;
                        m_pHowToPlay.setFrame(m_pHowToPlay.CurentFrame);
                        m_state = ModeScreenState.Select;
                    }
                }
            }
            base.Update(gameTime, otherScreenHasFocus, false);
        }
示例#2
0
        public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
            if (Global.Back == true)
            {
                SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                ModeScreen modeScreen = new ModeScreen();
                ScreenManager.AddScreen(modeScreen);
                this.ExitScreen();
                return;
            }

            GesturesInput.GetInstance().Update(gameTime);
            if (GesturesInput.GetInstance().GetGestureType() == GestureType.Tap)
            {
                Microsoft.Xna.Framework.Point posTap = GesturesInput.GetInstance().GetGesturePoint();


                if (pauseButton.Contains(posTap))
                {
                    if (Global.GAMESTATE == GameState.Running)
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        Global.GAMESTATE = GameState.PauseGame;
                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }

                if (resumeButton.Contains(posTap))
                {
                    if (Global.GAMESTATE == GameState.PauseGame)
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        Global.GAMESTATE = GameState.Running;
                        m_grid.DragCompleteHandle();
                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }

                if (restartButton.Contains(posTap))
                {
                    if (Global.GAMESTATE == GameState.PauseGame)
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        Reset();
                        Global.GAMESTATE = GameState.Running;
                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }

                if (menuButton.Contains(posTap))
                {
                    if (Global.GAMESTATE == GameState.PauseGame)
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        MenuScreen menuScreen = new MenuScreen();
                        ScreenManager.AddScreen(menuScreen);
                        this.ExitScreen();
                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }
                if (musicButton.Contains(posTap))
                {
                    if (Global.GAMESTATE == GameState.PauseGame)
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        if (Global.SOUND == true)
                        {
                            SoundManager.GetInstance().StopSongs();
                            //SoundManager.GetInstance().PauseSong();
                            Global.SOUND = false;
                        }
                        else
                        {
                            Global.SOUND = true;
                            SoundManager.GetInstance().PlaySong(ESong.Background);
                            //SoundManager.GetInstance().ResumeSong();
                        }


                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }

                if (Global.GAMESTATE == GameState.EndGame)
                {
                    if (Global.GAMEMODE == GameMode.EasyClassic || Global.GAMEMODE == GameMode.NormalClassic)
                    {
                        if (classic_MenuButton.Contains(posTap))
                        {
                            SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                            MenuScreen menuScreen = new MenuScreen();
                            ScreenManager.AddScreen(menuScreen);
                            this.ExitScreen();
                            GesturesInput.GetInstance().Reset();
                            return;
                        }
                        if (classic_PlayAgainButton.Contains(posTap))
                        {
                            SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                            Reset();
                            Global.GAMESTATE = GameState.Running;
                            GesturesInput.GetInstance().Reset();
                            return;
                        }
                    }
                    if (Global.GAMEMODE == GameMode.Level)
                    {
                        if (level_MenuButton.Contains(posTap))
                        {
                            SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                            MenuScreen menuScreen = new MenuScreen();
                            ScreenManager.AddScreen(menuScreen);
                            this.ExitScreen();
                            GesturesInput.GetInstance().Reset();
                            return;
                        }
                        if (level_NextLevelButton.Contains(posTap))
                        {
                            SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                            int newLevel = m_levelManager.m_currentLevel + 1;
                            m_levelManager.NewLevel();
                            SetLevel(newLevel);
                            Reset();
                            Global.GAMESTATE = GameState.Running;
                            GesturesInput.GetInstance().Reset();
                            return;
                        }
                        if (level_RetryButton.Contains(posTap))
                        {
                            SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                            Reset();
                            Global.GAMESTATE = GameState.Running;
                            GesturesInput.GetInstance().Reset();
                            return;
                        }
                    }
                }
            }
            m_grid.Update(gameTime);
            m_gameTimeManager.Update(gameTime);
            m_pointManager.Update(gameTime);
            if (Global.GAMEMODE == GameMode.Level)
            {
                if (Global.GAMESTATE == GameState.Running && m_levelManager.isWin())
                {
                    SoundManager.GetInstance().PlaySound(ESound.LevelComplete);
                    Global.GAMESTATE = GameState.BeforeEndGame;
                    return;
                }
            }

            if (Global.GAMEMODE == GameMode.EasyClassic || Global.GAMEMODE == GameMode.NormalClassic)
            {
                if (Global.GAMESTATE == GameState.Running && m_gameTimeManager.IsLose())
                {
                    Global.GAMESTATE = GameState.BeforeEndGame;
                    SoundManager.GetInstance().PlaySound(ESound.ClassicComplete);
                    return;
                }
            }

            if (Global.GAMESTATE == GameState.BeforeEndGame)
            {
                m_completeTime -= (float)gameTime.ElapsedGameTime.Milliseconds / 1000.0f;
                m_completePos  += m_AccleComplete * (float)gameTime.ElapsedGameTime.Milliseconds;
                if (m_completeTime <= 0)
                {
                    Global.GAMESTATE = GameState.EndGame;
                    DataManager.GetInstance().LevelCount++;
                    if ((DataManager.GetInstance().LevelCount % 5) == 0)
                    {
                    }
                    m_completeTime = 0;
                    if (Global.GAMEMODE == GameMode.Level)
                    {
                        int newLevel = m_levelManager.m_currentLevel + 1;
                        if (newLevel > DataManager.GetInstance().CurrentLevel)
                        {
                            DataManager.GetInstance().CurrentLevel = newLevel;
                        }
                    }
                }
            }
            GesturesInput.GetInstance().Reset();
            base.Update(gameTime, otherScreenHasFocus, false);
        }
示例#3
0
        public override void Update(GameTime gameTime, bool otherScreenHasFocus,
                                    bool coveredByOtherScreen)
        {
            if (Global.Back == true)
            {
                SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                ModeScreen modeScreen = new ModeScreen();
                ScreenManager.AddScreen(modeScreen);
                this.ExitScreen();
                return;
            }

            GesturesInput.GetInstance().Update(gameTime);

            if (GesturesInput.GetInstance().GetGestureType() == GestureType.Tap)
            {
                Point posTap = GesturesInput.GetInstance().GetGesturePoint();

                if (backToMenuButton.Contains(posTap))
                {
                    SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                    MenuScreen menuScreen = new MenuScreen();
                    ScreenManager.AddScreen(menuScreen);
                    this.ExitScreen();
                    GesturesInput.GetInstance().Reset();
                    return;
                }

                for (int i = 0; i < m_level; i++)
                {
                    if (m_buttonLevelList[i].Contains(posTap))
                    {
                        SoundManager.GetInstance().PlaySound(ESound.SelectButton);
                        MainGameScreen mainGameScreen = new MainGameScreen();
                        mainGameScreen.SetModeGame(GameMode.Level);
                        int level = i + 1;
                        mainGameScreen.SetLevel(level);
                        ScreenManager.AddScreen(mainGameScreen);
                        GesturesInput.GetInstance().Reset();
                        this.ExitScreen();
                        GesturesInput.GetInstance().Reset();
                        return;
                    }
                }
            }
            if (GesturesInput.GetInstance().GetDirDrag() == DirDrag.Left_Right)
            {
                if (m_state != LevelScreenState.Moving)
                {
                    m_state   = LevelScreenState.Moving;
                    m_VelocX  = -VELOC_X;
                    m_MovingX = 0;
                    GesturesInput.GetInstance().Reset();
                }
            }

            if (GesturesInput.GetInstance().GetDirDrag() == DirDrag.Right_Left)
            {
                if (m_state != LevelScreenState.Moving)
                {
                    m_state   = LevelScreenState.Moving;
                    m_VelocX  = VELOC_X;
                    m_MovingX = 0;
                    GesturesInput.GetInstance().Reset();
                }
            }

            if (m_state == LevelScreenState.Moving)
            {
                MovingScreen(-(int)m_MovingX);
                m_MovingX += m_VelocX * (float)gameTime.ElapsedGameTime.Milliseconds;

                if (m_VelocX > 0)
                {
                    if (m_MovingX >= VIEWPORT_WIDTH)
                    {
                        m_state = LevelScreenState.Wait;
                        MovingScreen(VIEWPORT_WIDTH);
                        m_MovingX = 0;
                        m_VelocX  = 0;
                    }
                    else
                    {
                        MovingScreen((int)m_MovingX);
                    }
                }
                if (m_VelocX < 0)
                {
                    if (m_MovingX <= -VIEWPORT_WIDTH)
                    {
                        m_state = LevelScreenState.Wait;
                        MovingScreen(-VIEWPORT_WIDTH);
                        m_MovingX = 0;
                        m_VelocX  = 0;
                    }
                    else
                    {
                        MovingScreen((int)m_MovingX);
                    }
                }
                if (_srcRect.X < 0)
                {
                    int BonusDeltaX = _srcRect.X - 0;
                    MovingScreen(-BonusDeltaX);
                }
                if (_srcRect.X > MAXPOS_X)
                {
                    int BonusDeltaX = _srcRect.X - MAXPOS_X;
                    MovingScreen(-BonusDeltaX);
                }
            }
            UpdateCurrentLevelGrid();
            base.Update(gameTime, otherScreenHasFocus, false);
        }