Exemple #1
0
 private object Read(Type type, PPDPackStreamReader reader)
 {
     if (type.IsEnum || type == typeof(int))
     {
         return(ParseInt(reader));
     }
     else if (type == typeof(float))
     {
         return(ParseFloat(reader));
     }
     else if (type == typeof(string))
     {
         return(ParseString(reader));
     }
     else if (type == typeof(byte))
     {
         return(ParseByte(reader));
     }
     else if (type == typeof(bool))
     {
         return(ParseBoolean(reader));
     }
     else
     {
         throw new Exception("Not supported type");
     }
 }
Exemple #2
0
        protected bool ParseBoolean(PPDPackStreamReader packStreamReader)
        {
            byte[] data = new byte[sizeof(bool)];
            packStreamReader.Read(data, 0, data.Length);
            var ret = BitConverter.ToBoolean(data, 0);

            return(ret);
        }
Exemple #3
0
        protected float ParseFloat(PPDPackStreamReader packStreamReader)
        {
            byte[] data = new byte[sizeof(float)];
            packStreamReader.Read(data, 0, data.Length);
            var ret = BitConverter.ToSingle(data, 0);

            return(ret);
        }
Exemple #4
0
        protected int ParseInt(PPDPackStreamReader packStreamReader)
        {
            byte[] data = new byte[sizeof(int)];
            packStreamReader.Read(data, 0, data.Length);
            var ret = BitConverter.ToInt32(data, 0);

            return(ret);
        }
Exemple #5
0
 protected string ParseString(PPDPackStreamReader packStreamReader)
 {
     using (StreamReader streamReader = new StreamReader(packStreamReader, Encoding.UTF8))
     {
         var ret = streamReader.ReadToEnd();
         return(ret);
     }
 }
Exemple #6
0
 private string ReadString(PackReader reader, string key, string defaultValue = "")
 {
     using (PPDPackStreamReader packReader = reader.Read(key))
     {
         if (packReader == null)
         {
             return(defaultValue);
         }
         byte[] bytes = new byte[packReader.Length];
         packReader.Read(bytes, 0, bytes.Length);
         return(Encoding.UTF8.GetString(bytes));
     }
 }
Exemple #7
0
        public PPDPackStreamReader Read(string fileName)
        {
            var info = files[fileName];

            if (info == null)
            {
                return(null);
            }

            stream.Seek(info.Offset, SeekOrigin.Begin);

            var ret = new PPDPackStreamReader(stream, (int)info.FileSize, (int)info.Offset);

            return(ret);
        }
Exemple #8
0
        protected int ParseInt(PPDPack.V2.PackReader reader, string keyName)
        {
            if (reader.Files.Any(f => f == keyName))
            {
                using (PPDPackStreamReader packStreamReader = reader.Read(keyName))
                {
                    byte[] data = new byte[sizeof(int)];
                    packStreamReader.Read(data, 0, data.Length);
                    var ret = BitConverter.ToInt32(data, 0);
                    return(ret);
                }
            }

            return(0);
        }
        protected string ParseString(PackReader reader, string keyName)
        {
            if (reader.FileList.Contains(keyName))
            {
                using (PPDPackStreamReader packStreamReader = reader.Read(keyName))
                {
                    using (StreamReader streamReader = new StreamReader(packStreamReader, Encoding.UTF8))
                    {
                        var ret = streamReader.ReadToEnd();
                        return(ret);
                    }
                }
            }

            return(null);
        }
Exemple #10
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);
        }
Exemple #11
0
        private void AnalyzeMod(PackReader reader)
        {
            var engine = new Engine();

            modSettingManager = new ModSettingManager();
            foreach (string content in reader.FileList)
            {
                using (PPDPackStreamReader ppdpsr = reader.Read(content))
                {
                    if (content.StartsWith("Scripts"))
                    {
                        var manager = engine.Load(ppdpsr, false);
                        manager.Items["ModSettingManager"] = modSettingManager;
                        manager.Initialize();
                    }
                }
            }

            ContainsModifyData = engine.ContainsAttribute(typeof(ModifyDataAttribute));
            engine.Call(ModSettingManager.MODSTART, null);

            settings.Clear();
            settings.AddRange(modSettingManager.ModSettings);

            var dict = new Dictionary <string, ModSetting>();

            foreach (ModSetting setting in settings)
            {
                if (!dict.ContainsKey(setting.Key))
                {
                    dict.Add(setting.Key, setting);
                }
            }
            settings.Clear();
            settings.AddRange(dict.Values);

            var currentSettings = ModSettingDatabase.Setting.GetSetting(UniqueName);

            foreach (ModSetting modSetting in settings)
            {
                if (!currentSettings.ContainsKey(modSetting.Key))
                {
                    currentSettings.Add(modSetting.Key, modSetting.Default);
                }
                else
                {
                    try
                    {
                        var str = modSetting.GetStringValue(currentSettings[modSetting.Key]);
                        if (!modSetting.Validate(str, out object val))
                        {
                            throw new Exception("Validate Failed");
                        }
                    }
                    catch
                    {
                        currentSettings.Remove(modSetting.Key);
                        currentSettings.Add(modSetting.Key, modSetting.Default);
                    }
                }
            }

            ModSettingDatabase.Setting.SetSetting(UniqueName, currentSettings);
            foreach (KeyValuePair <string, object> pair in currentSettings)
            {
                ModSettingManager[pair.Key] = pair.Value;
            }
        }
Exemple #12
0
 protected byte ParseByte(PPDPackStreamReader packStreamReader)
 {
     return((byte)packStreamReader.ReadByte());
 }