public static void INIT() { if (File.Exists(DDConsts.ResourceFile)) // ? 外部リリース { ReleaseMode = true; } else if (Directory.Exists(DDConsts.ResourceDir_InternalRelease)) // ? 内部リリース { ResourceDir = DDConsts.ResourceDir_InternalRelease; } else // ? 開発環境 { ResourceDir = DDConsts.ResourceDir_DevEnv; } if (ReleaseMode) { List <ResInfo> resInfos = new List <ResInfo>(); using (FileStream reader = new FileStream(DDConsts.ResourceFile, FileMode.Open, FileAccess.Read)) { while (reader.Position < reader.Length) { int size = SCommon.ToInt(SCommon.Read(reader, 4)); if (size < 0) { throw new DDError(); } resInfos.Add(new ResInfo() { ResFile = DDConsts.ResourceFile, Offset = reader.Position, Size = size, }); reader.Seek((long)size, SeekOrigin.Current); } } string[] files = SCommon.TextToLines(SCommon.ENCODING_SJIS.GetString(LoadFile(resInfos[0]))); if (files.Length != resInfos.Count) { throw new DDError(files.Length + ", " + resInfos.Count); } for (int index = 1; index < files.Length; index++) { string file = files[index]; if (File2ResInfo.ContainsKey(file)) { throw new DDError(file); } File2ResInfo.Add(file, resInfos[index]); } } }
private static byte[] LoadFile(string resFile, long offset, int size) { using (FileStream reader = new FileStream(resFile, FileMode.Open, FileAccess.Read)) { reader.Seek(offset, SeekOrigin.Begin); return(DDJammer.Decode(SCommon.Read(reader, size))); } }