Example #1
0
        private static MainFieldChara ReadMainChara(byte[] oneb)
        {
            MainFieldChara localMfc = new MainFieldChara();

            using (MemoryStream ms = new MemoryStream(oneb))
                using (BinaryReader br = new BinaryReader(ms))
                {
                    List <uint> timOffsets = new List <uint>();
                    uint        timOffset;
                    while ((timOffset = br.ReadUInt32()) != 0xffffffff)
                    {
                        timOffsets.Add(timOffset & 0x00FFFFFF);
                    }
                    uint modelPointer = br.ReadUInt32();

                    //read textures
                    List <Texture2D> tex2Dreader = new List <Texture2D>();
                    for (int i = 0; i < timOffsets.Count; i++)
                    {
                        TIM2 tim = new TIM2(br, timOffsets[i]);
                        tex2Dreader.Add(tim.GetTexture());
                    }
                    localMfc.textures = tex2Dreader.ToArray();

                    //read models
                    ms.Seek(modelPointer, SeekOrigin.Begin);

                    Debug_MCH mch = new Debug_MCH(ms, br, Debug_MCH.mchMode.FieldMain);
                    localMfc.mch = mch;
                }
            return(localMfc);
        }
Example #2
0
        private static MainFieldChara ReadMainChara(byte[] oneBytes)
        {
            var localMfc = new MainFieldChara();

            using (var ms = new MemoryStream(oneBytes))
                using (var br = new BinaryReader(ms))
                {
                    var  timOffsets = new List <uint>();
                    uint timOffset;
                    while ((timOffset = br.ReadUInt32()) != 0xffffffff)
                    {
                        timOffsets.Add(timOffset & 0x00FFFFFF);
                    }
                    var modelPointer = br.ReadUInt32();

                    //read textures
                    var texture2DReader = timOffsets
                                          .Select(x => new TIM2(br, x))
                                          .Select(x => x.GetTexture()).ToList()
                                          .AsReadOnly();

                    localMfc.Textures = texture2DReader.ToArray();

                    //read models
                    ms.Seek(modelPointer, SeekOrigin.Begin);

                    var mch = new Debug_MCH(ms, br, Debug_MCH.mchMode.FieldMain);
                    localMfc.MCH = mch;
                }
            return(localMfc);
        }
Example #3
0
        public static void Init(bool bForce = false)
        {
            if (bAlreadyInitialized && !bForce)
            {
                return;
            }

            List <MainFieldChara> mfc = new List <MainFieldChara>();

            ArchiveWorker aw = new ArchiveWorker(Memory.Archives.A_FIELD);

            string[] test = aw.GetListOfFiles();

            var CollectionEntry = test.Where(x => x.ToLower().Contains("main_chr"));

            if (!CollectionEntry.Any())
            {
                return;
            }
            string fieldArchiveName = CollectionEntry.First();
            var    fieldArchive     = aw.GetArchive(fieldArchiveName);

            string[] test_ = fieldArchive.GetListOfFiles();

            for (int i = 0; i < test_.Length; i++)
            {
                //if (test_[i].Contains("d008.mch"))
                //    continue;
                if (string.IsNullOrWhiteSpace(test_[i]))
                {
                    continue;
                }
                byte[] oneb = fieldArchive.GetBinaryFile(test_[i]);

                if (oneb.Length < 64) //Hello Kazuo Suzuki! I will skip your dummy files
                {
                    continue;
                }

                MainFieldChara currentLocalChara = ReadMainChara(oneb);
                int            localId           = int.Parse(Path.GetFileNameWithoutExtension(test_[i]).Substring(1, 3));
                currentLocalChara.id = localId;
                mfc.Add(currentLocalChara);
            }
            MainFieldCharacters = mfc.ToArray();
            bAlreadyInitialized = true;
        }