/// <summary> /// /// </summary> /// <param name="br"></param> /// <param name="f"></param> /// <param name="aPart"></param> /// <param name="partTitle"></param> /// <returns></returns> private bool ReadPart(BinaryReader br, FileInfo f, out BasePart aPart, out string partTitle) { Logger.LogDebug("ReadPart " + f.FullName); aPart = null; partTitle = null; // マジック string tmpMagic = br.ReadString(); if (tmpMagic != SceneExport.MAGIC) { Logger.Log(BepInEx.Logging.LogLevel.Message, "Error: Invalid file format:" + f.FullName); return(false); } // 名前 partTitle = br.ReadString(); // Kind int kind = br.ReadInt32(); //キー string sb_key = br.ReadString(); if (kind == 0) { //H パート aPart = new HEdit.HPart(); aPart.Load(br, HEditData.Instance.dataVersion); if (this.CheckHPart((HEdit.HPart)aPart, f.Name) == false) { //読み込めないデータ return(false); } } else { //ADV パート aPart = new HEdit.ADVPart(0); aPart.Load(br, HEditData.Instance.dataVersion); if (this.CheckADVPart((HEdit.ADVPart)aPart, f.Name) == false) { //読み込めないデータ return(false); } } return(true); }
/// <summary> /// /// </summary> /// <param name="part"></param> /// <param name="partName"></param> /// <returns>パートに問題があるときはfalse</returns> private bool CheckHPart(HEdit.HPart part, string partName) { CheckMap(part); foreach (HEdit.HPart.Group g in part.groups) { foreach (var cs in g.infoCharas) { if (cs.useCharaID >= HEditData.Instance.charas.Count) { Logger.Log(BepInEx.Logging.LogLevel.Message, "Error: Invalid charaID (" + cs.useCharaID + ") in H part." + partName); return(false); } } } return(true); }