Exemple #1
0
        public override void Load()
        {
            if (!Param.ContainsKey("PPDGameUtility"))
            {
                throw new PPDException(PPDExceptionType.SkinIsNotCorrectlyImplemented);
            }
            ppdgameutility = Param["PPDGameUtility"] as PPDGameUtility;
            currentLatency = ppdgameutility.SongInformation.Latency;
            if (Param.ContainsKey("ExitOnReturn"))
            {
                exitonreturn = true;
            }
            if (Param.ContainsKey("StartTime"))
            {
                ppdgameutility.IsDebug = true;
                startTime   = (float)Param["StartTime"] - 3;
                mmStartTime = (float)Param["StartTime"];
            }
            else if (Param.ContainsKey("StartTimeEx"))
            {
                ppdgameutility.IsDebug = true;
                startTime   = (float)Param["StartTimeEx"];
                mmStartTime = (float)Param["StartTimeEx"];
            }
            else
            {
                startTime   = ppdgameutility.SongInformation.StartTime;
                mmStartTime = startTime;
            }

            black        = new PictureObject("img\\default\\black.png", 0, 0, false, ResourceManager, Device);
            black.Alpha  = 0;
            black.Hidden = true;

            string moviefile = ppdgameutility.SongInformation.MoviePath;

#if x64
            if (Path.GetExtension(moviefile) == ".mp4")
            {
                PlatformGap = 0.03f;
            }
#endif
            if (moviefile != "")
            {
                m = GameHost.GetMovie(moviefile);
                try
                {
                    if (m.Initialize() == -1)
                    {
                        throw new PPDException(PPDExceptionType.CannotOpenMovie);
                    }
                    readmoviesetting();
                    initialized = true;
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                    initialized = false;
                    ReturnToMenu();
                    return;
                }
            }
            else
            {
                MessageBox.Show("No moviefile");
                black.Hidden = false;
                if (exitonreturn)
                {
                    Application.Exit();
                }
                else
                {
                    ReturnToMenu();
                    return;
                }
            }
            keychange = new int[(int)ButtonType.Start];
            for (int i = 0; i < keychange.Length; i++)
            {
                keychange[i] = i;
            }
            if (ppdgameutility.Random)
            {
                randomchange();
            }
            readprofile();
            hm                  = new HoldManager(Device, ResourceManager);
            hm.ScoreGained     += new HoldManager.GainScoreEventHandler(hm_ScoreGained);
            ppdem               = new PPDEffectManager(Device, ResourceManager);
            km                  = new KasiManager(ppdgameutility);
            km.KasiChanged     += new KasiManager.KasiChangeEventHandler(km_KasiChanged);
            cgi                 = GameHost.GetCGameInterface();
            cgi.PPDGameUtility  = ppdgameutility;
            cgi.ResourceManager = ResourceManager;
            cgi.Load();
            sm = new SoundManager(Sound as ExSound, ppdgameutility);
            if (ppdgameutility.SongInformation.IsOld)
            {
                em = new EventManager(ppdgameutility);
                mm = new MarkManager(Device, em, ppdgameutility, keychange, ppdem, GameHost.GetMarkImagePath(), ResourceManager);
            }
            else
            {
                string              path   = Path.Combine(ppdgameutility.SongInformation.DirectoryPath, DifficultyUtility.ConvertDifficulty(ppdgameutility.Difficulty) + ".ppd");
                PackReader          reader = new PackReader(path);
                PPDPackStreamReader ppdpsr = reader.Read("evd");
                em = new EventManager(ppdgameutility, ppdpsr);
                ppdpsr.Close();
                ppdpsr = reader.Read("ppd");
                mm     = new MarkManager(Device, em, ppdgameutility, keychange, ppdem, GameHost.GetMarkImagePath(), ppdpsr, ResourceManager);
                ppdpsr.Close();
                reader.Close();
            }
            grm = new GameResultManager();
            gr  = GameHost.GetGameResult();
            gr.PPDGameUtility  = ppdgameutility;
            gr.ResourceManager = ResourceManager;
            gr.TweetManager    = this;
            gr.Load();
            pd = GameHost.GetPauseMenu();
            pd.PPDGameUtility  = ppdgameutility;
            pd.ResourceManager = ResourceManager;
            pd.Load();
            pd.Resumed           += new EventHandler(pd_Resumed);
            pd.Retryed           += new EventHandler(pd_Retryed);
            pd.Returned          += new EventHandler(pd_Returned);
            pd.LatencyChanged    += new ChangeLatencyEventHandler(pd_LatencyChanged);
            gr.Retryed           += new EventHandler(this.Retry);
            gr.Returned          += new EventHandler(this.Return);
            mm.ChangeCombo       += new MarkManager.ChangeComboHandler(mm_ChangeCombo);
            mm.PlaySound         += new MarkManager.SpecialSoundHandler(this.SpecialPlaySound);
            mm.StopSound         += new MarkManager.SpecialSoundHandler(this.SpecialStopSound);
            mm.EvaluateCount     += new MarkManager.EvaluateCountHandler(this.EvaluateCount);
            mm.PressingButton    += new MarkManager.PressingButtonHandler(mm_PressingButton);
            em.ChangeMovieVolume += new EventManager.VolumeHandler(ChangeMovieVolume);
            //seek
            mm.Seek(mmStartTime);
            em.Seek(startTime > 0 ? startTime : 0);
            sm.Seek(startTime);
            km.Seek(startTime);
            if (m != null && m.Initialized)
            {
                m.Play();
                m.Pause();
                m.Seek(startTime);
            }
            if (startTime < 0)
            {
                waitingmoviestart = true;
                lasttime          = Win32API.timeGetTime();
            }
            else
            {
                if (m != null && m.Initialized)
                {
                    m.Play();
                }
            }

            this.AddChild(black);
        }