public void mGameOver()
    {
        //Stop [TICK] count here
        long currentTick = System.DateTime.UtcNow.Ticks;

        accumulateTick += currentTick - startTick;
        //calculate time from accumulateTick
        double playTime = System.TimeSpan.FromTicks(accumulateTick).TotalSeconds;

        Debug.Log("Play Time = " + playTime);
        state = GameState.GS_RESULT;
        if (gGameOverEvent != null)
        {
            gGameOverEvent();
        }

        int current_money = int.Parse(UserCommonData.pGlobal.user.user_money) + mainMenu.moneyUsed;

        //Item 1 Life up
        //Item 2 Score up
        //Item 3 EXP up

        resultMenu.ResetResult(int.Parse(UserCommonData.pGlobal.user.user_level),
                               UserCommonData.pGlobal.GetEXPProgress(), current_money,
                               mainMenu.Item1.IsSelect && (mainMenu.Item1.ItemCount > 0),
                               mainMenu.Item2.IsSelect && (mainMenu.Item2.ItemCount > 0),
                               mainMenu.Item3.IsSelect && (mainMenu.Item3.ItemCount > 0),
                               mainMenu.moneyUsed,
                               (int)playTime);

        float rawMoney = (Score * MoneyMultiplier) * (1 + (float.Parse(UserCommonData.pGlobal.user.user_coin_plus)) / 100.0f);
        float rawEXP   = (Score * EXPMultiplier) * ((mainMenu.Item3.IsSelect)?2:1) * (1 + (float.Parse(UserCommonData.pGlobal.user.user_exp_plus)) / 100.0f);

        resultMenu.SetGameResultData(Score,
                                     int.Parse(UserCommonData.pGlobal.user.user_score_plus) + ((mainMenu.Item2.IsSelect)?100:0),
                                     MaxCombo,
                                     rawMoney,
                                     rawEXP,
                                     hit);
        resultMenu.Show();
    }