NScumm.Sword1.ResMan.LoadCluDescript C# (CSharp) Метод

LoadCluDescript() приватный Метод

private LoadCluDescript ( string fileName ) : void
fileName string
Результат void
        private void LoadCluDescript(string fileName)
        {
            // The cluster description file is always little endian (even on the mac version, whose cluster files are big endian)
            using (var stream = ServiceLocator.FileStorage.OpenFileRead(fileName))
            using (var file = new BinaryReader(stream))
            {
                _prj = new Prj();
                _prj.noClu = file.ReadUInt32();
                _prj.clu = new Clu[_prj.noClu];
                var cluIndex = file.ReadUInt32s((int)_prj.noClu);

                for (uint clusCnt = 0; clusCnt < _prj.noClu; clusCnt++)
                    if (cluIndex[clusCnt] != 0)
                    {
                        var cluster = _prj.clu[clusCnt] = new Clu();
                        cluster.label = new string(file.ReadChars(MAX_LABEL_SIZE));

                        cluster.file = null;
                        cluster.noGrp = file.ReadUInt32();
                        cluster.grp = new Grp[cluster.noGrp];
                        cluster.nextOpen = null;
                        cluster.refCount = 0;

                        var grpIndex = file.ReadUInt32s((int)cluster.noGrp);

                        for (uint grpCnt = 0; grpCnt < cluster.noGrp; grpCnt++)
                            if (grpIndex[grpCnt] != 0)
                            {
                                Grp group = cluster.grp[grpCnt] = new Grp();
                                group.noRes = file.ReadUInt32();
                                group.resHandle = new MemHandle[group.noRes];
                                group.offset = new uint[group.noRes];
                                group.length = new uint[group.noRes];
                                var resIdIdx = file.ReadUInt32s((int)@group.noRes);

                                for (uint resCnt = 0; resCnt < group.noRes; resCnt++)
                                {
                                    if (resIdIdx[resCnt] != 0)
                                    {
                                        group.offset[resCnt] = file.ReadUInt32();
                                        group.length[resCnt] = file.ReadUInt32();
                                        group.resHandle[resCnt] = new MemHandle();
                                        _memMan.InitHandle(group.resHandle[resCnt]);
                                    }
                                    else
                                    {
                                        group.offset[resCnt] = 0xFFFFFFFF;
                                        group.length[resCnt] = 0;
                                        group.resHandle[resCnt] = new MemHandle();
                                        _memMan.InitHandle(group.resHandle[resCnt]);
                                    }
                                }
                            }
                    }

                if (_prj.clu[3].grp[5].noRes == 29)
                    for (byte cnt = 0; cnt < 29; cnt++)
                        _srIdList[cnt] = (uint)(0x04050000 | cnt);
            }
        }