Esempio n. 1
0
        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]);
                }
            }
        }
Esempio n. 2
0
        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)));
            }
        }