public override void GameProc(IStateOwner pOwner)
        {
            if (!PlayedDeathSound)
            {
                PlayedDeathSound = true;
                TetrisGame.Soundman.PlaySound("mmdeath", pOwner.Settings.std.EffectVolume);
            }
            if ((DateTime.Now - CompleteSummaryTime).TotalMilliseconds > 500)
            {
                CompleteSummaryTime = DateTime.MaxValue;
                TetrisGame.Soundman.PlaySound(pOwner.AudioThemeMan.GameOver.Key, pOwner.Settings.std.EffectVolume);
                GameplayGameState standardstate = GameOveredState as GameplayGameState;
                if (standardstate != null)
                {
                    var grabposition = standardstate.GetLocalScores().IsEligible(standardstate.GameStats.Score);
                    if (grabposition > 0)
                    {
                        NewScorePosition = grabposition;
                    }
                }
            }

            if (((DateTime.Now - InitTime)).TotalMilliseconds < 1500)
            {
                return;
            }
            if ((DateTime.Now - LastAdvance).TotalMilliseconds > 50 && !CompleteScroll)
            {
                LastAdvance = DateTime.Now;
                TetrisGame.Soundman.PlaySound(pOwner.AudioThemeMan.GameOverShade.Key, pOwner.Settings.std.EffectVolume);
                CoverBlocks++;
                GameplayGameState standardstate = GameOveredState as GameplayGameState;
                if (standardstate != null)
                {
                    if (CoverBlocks >= standardstate.PlayField.RowCount)
                    {
                        CoverBlocks        = standardstate.PlayField.RowCount;
                        CompleteScrollTime = DateTime.Now;
                        CompleteScroll     = true;
                        CompleteSummary    = false;
                    }
                }
            }

            if (CompleteScroll && !CompleteSummary)
            {
                int calcresult = (int)((DateTime.Now - CompleteScrollTime).TotalMilliseconds) / 750;
                if (calcresult > 0)
                {
                    if (CurrentLinesDisplay != calcresult)
                    {
                        TetrisGame.Soundman.PlaySound("block_place_2", pOwner.Settings.std.EffectVolume);
                    }

                    CurrentLinesDisplay = calcresult;
                }

                if (CurrentLinesDisplay > LineMaxIndex)
                {
                    CompleteSummary     = true;
                    CompleteSummaryTime = DateTime.Now;
                }
            }

            //gameproc doesn't pass through!
        }