Esempio n. 1
0
 public override void Read(CGameCtnCollection n, GameBoxReader r, GameBoxWriter unknownW)
 {
     _ = r.ReadString();
     _ = r.ReadInt32();
     _ = r.ReadString();
     _ = r.ReadString();
 }
Esempio n. 2
0
 public override void Read(CGameCtnCollection n, GameBoxReader r)
 {
     _ = r.ReadString();
     _ = r.ReadInt32();
     _ = r.ReadString();
     _ = r.ReadString();
 }
Esempio n. 3
0
 public override void Read(CGameCtnCollection n, GameBoxReader r)
 {
     _ = r.ReadByte();
     _ = r.ReadString();
     _ = r.ReadInt32();
     _ = r.ReadString();
     _ = r.ReadArray <int>(3);
 }
Esempio n. 4
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r)
 {
     n.game = r.ReadString();
     U01    = r.ReadInt32();
     U02    = r.ReadInt32();
     U03    = r.ReadInt32();
     U04    = r.ReadString();
 }
Esempio n. 5
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r)
 {
     n.titleID         = r.ReadId();
     n.authorVersion   = r.ReadInt32();
     n.authorLogin     = r.ReadString();
     n.authorNickname  = r.ReadString();
     n.authorZone      = r.ReadString();
     n.authorExtraInfo = r.ReadString();
 }
Esempio n. 6
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r, GameBoxWriter unknownW)
 {
     Version           = r.ReadInt32();
     n.AuthorVersion   = r.ReadInt32();
     n.AuthorLogin     = r.ReadString();
     n.AuthorNickname  = r.ReadString();
     n.AuthorZone      = r.ReadString();
     n.AuthorExtraInfo = r.ReadString();
 }
Esempio n. 7
0
    private NadeoPakFolder[] ReadFolders(GameBoxReader r)
    {
        var numFolders = r.ReadInt32();
        var folders    = new NadeoPakFolder[numFolders];

        for (var i = 0; i < numFolders; i++)
        {
            var parentFolderIndex = r.ReadInt32(); // index into folders; -1 if this is a root folder
            var name = r.ReadString();

            var folder = new NadeoPakFolder(name, parentFolderIndex == -1 ? null : folders[parentFolderIndex]);

            if (parentFolderIndex == -1)
            {
                Folders.Add(folder);
            }
            else
            {
                folders[parentFolderIndex].Folders.Add(folder);
            }

            folders[i] = folder;
        }

        if (folders.Length > 2 && folders[2].Name.Length > 4)
        {
            byte[] nameBytes = Encoding.Unicode.GetBytes(folders[2].Name);
            blowfish.Initialize(nameBytes, 4, 4);
        }

        return(folders);
    }
Esempio n. 8
0
 public override void Read(CGameCtnCollection n, GameBoxReader r, GameBoxWriter unknownW)
 {
     Version        = r.ReadByte();
     n.CollectionID = r.ReadByte();
     _ = r.ReadBytes(6);
     n.CollectionPackMask = r.ReadByte();
     n.DisplayName        = r.ReadString();
     _ = r.ReadInt32();
     n.CollectionIcon = r.ReadString();
     _ = r.ReadArray <int>(2);
     n.BlockInfoFlat = r.ReadId(this);
     n.Vehicle       = r.ReadIdent(this);
     _ = r.ReadInt32();
     _ = r.ReadArray <float>(4);
     n.LoadingScreen = r.ReadString();
     _ = r.ReadArray <int>(7);
     _ = r.ReadString();
     _ = r.ReadInt32();
 }
Esempio n. 9
0
        public override void Read(CGameNetOnlineMessage n, GameBoxReader r)
        {
            n.ReceiverLogin = r.ReadString();
            n.SenderLogin   = r.ReadString();
            n.Subject       = r.ReadString();
            n.Message       = r.ReadString();
            n.Donation      = r.ReadInt32();
            U01             = r.ReadInt32();

            var date   = r.ReadInt64();
            var year   = (int)(date & 0xFFFF);
            var month  = (int)((date >> 16) & 0xF);
            var day    = (int)((date >> 23) & 0xF);
            var hour   = (int)((date >> 32) & 0x1F);
            var minute = (int)((date >> 37) & 0x3F);
            var second = (int)((date >> 43) & 0x3F);

            n.Date = new DateTime(year, month, day, hour, minute, second);
        }
Esempio n. 10
0
            public override void Read(CGameCtnReplayRecord n, GameBoxReader r, GameBoxWriter unknownW)
            {
                Version = r.ReadInt32();

                if (Version >= 2)
                {
                    n.MapInfo  = r.ReadIdent();
                    n.Time     = r.ReadTimeSpan();
                    n.Nickname = r.ReadString();

                    if (Version >= 6)
                    {
                        n.DriverLogin = r.ReadString();

                        if (Version >= 8)
                        {
                            U01       = r.ReadByte();
                            n.TitleID = r.ReadId();
                        }
                    }
                }
            }
Esempio n. 11
0
        public override void Read(CGameCtnReplayRecord n, GameBoxReader r)
        {
            Version = r.ReadInt32();

            if (Version >= 2)
            {
                n.mapInfo        = r.ReadIdent();
                n.time           = r.ReadInt32_msn();
                n.playerNickname = r.ReadString();

                if (Version >= 6)
                {
                    n.playerLogin = r.ReadString();

                    if (Version >= 8)
                    {
                        U01       = r.ReadByte();
                        n.titleID = r.ReadId();
                    }
                }
            }
        }
Esempio n. 12
0
            public override void Read(CGameCtnReplayRecord n, GameBoxReader r, GameBoxWriter unknownW)
            {
                var v = r.ReadInt32();

                if (v != 0)
                {
                    r.ReadInt32();
                    var controlNames = r.ReadArray(i =>
                    {
                        r.ReadInt32();
                        r.ReadInt32();
                        return(r.ReadString());
                    });

                    var numControlEntries = r.ReadInt32() - 1;
                    var controlEntries    = new (int, int, int)[numControlEntries];
Esempio n. 13
0
        public override void Read(CInputBindingsConfig n, GameBoxReader r)
        {
            var race = r.ReadString();

            n.Bindings = r.ReadList <Binding>((i, r1) =>
            {
                //if (i == 0) r1.ReadInt32();

                return(new Binding
                {
                    KeyCode = r1.ReadInt32(),
                    DeviceGuid = r1.ReadId(),
                    U01 = r1.ReadInt32(),
                    U02 = r1.ReadInt32(),
                    Action = r1.ReadString()
                });
            });
        }
Esempio n. 14
0
    public void Read(GameBoxReader r)
    {
        var classId = r.ReadUInt32();

        Version = r.ReadInt32();

        if (Version < 3)
        {
            return;
        }

        var typeCount = r.ReadByte();
        var types     = new ScriptVariable[typeCount];

        for (var i = 0; i < typeCount; i++)
        {
            var varType = r.ReadByte();

            types[i] = (ScriptType)varType switch
            {
                ScriptType.Array => ReadScriptArray(r),
                ScriptType.Struct => ReadScriptStruct(out int _, r),
                _ => new ScriptVariable((ScriptType)varType),
            };
        }

        var varCount = r.ReadByte();
        var metadata = new ScriptVariable[varCount];

        for (var i = 0; i < varCount; i++)
        {
            var metadataVarName = r.ReadString(StringLengthPrefix.Byte);
            var typeIndex       = r.ReadByte();

            var type = types[typeIndex];
            metadata[i]      = ReadType(type.Clone(), r);
            metadata[i].Name = metadataVarName;
        }

        Metadata = metadata.ToList();

        var facade = r.ReadUInt32();
    }
Esempio n. 15
0
    private void ReadFiles(GameBoxReader r, NadeoPakFolder[] folders)
    {
        var numFiles = r.ReadInt32();
        var files    = new NadeoPakFile[numFiles];

        for (var i = 0; i < numFiles; i++)
        {
            var folderIndex      = r.ReadInt32(); // index into folders
            var name             = r.ReadString();
            var unknown          = r.ReadInt32();
            var uncompressedSize = r.ReadInt32();
            var compressedSize   = r.ReadInt32();
            var offset           = r.ReadInt32();
            var classID          = CMwNod.Remap(r.ReadUInt32()); // indicates the type of the file
            var flags            = r.ReadUInt64();

            var folder = folders.ElementAtOrDefault(folderIndex);

            var file = new NadeoPakFile(this, folder, name, uncompressedSize, compressedSize, offset, classID, flags)
            {
                U01 = unknown
            };

            files[i] = file;

            if (folder == null)
            {
                Files.Add(file);
            }
            else
            {
                folder.Files.Add(file);
            }
        }

        this.files = files;
    }
Esempio n. 16
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r)
 {
     Version = r.ReadInt32();
     r.ReadString(); // CampaignSolo
 }
Esempio n. 17
0
        public void Read(GameBoxReader r)
        {
            var classId = r.ReadUInt32();

            Version = r.ReadInt32();

            var typeCount = r.ReadByte();
            var types     = new ScriptVariable[typeCount];

            for (var i = 0; i < typeCount; i++)
            {
                var varType = r.ReadByte();

                switch ((ScriptType)varType)
                {
                case ScriptType.Array:
                    types[i] = ReadScriptArray();
                    break;

                case ScriptType.Struct:
                    types[i] = ReadScriptStruct(out int defaultLength);
                    break;

                default:
                    types[i] = new ScriptVariable((ScriptType)varType);
                    break;
                }
            }

            var varCount = r.ReadByte();
            var metadata = new ScriptVariable[varCount];

            for (var i = 0; i < varCount; i++)
            {
                var metadataVarName = r.ReadString(StringLengthPrefix.Byte);
                var typeIndex       = r.ReadByte();

                var type = types[typeIndex];
                metadata[i]      = ReadType(type.Clone());
                metadata[i].Name = metadataVarName;
            }

            Metadata = metadata.ToList();

            var facade = r.ReadUInt32();

            ScriptArray ReadScriptArray()
            {
                ScriptVariable indexVar;

                var indexType = r.ReadByte(); // index

                if ((ScriptType)indexType == ScriptType.Struct)
                {
                    indexVar = ReadScriptStruct(out int defaultLength);
                }
                else
                {
                    indexVar = new ScriptVariable((ScriptType)indexType);
                }

                ScriptVariable valueVar;

                var arrayType = r.ReadByte(); // value

                if ((ScriptType)arrayType == ScriptType.Array)
                {
                    valueVar = ReadScriptArray();
                }
                else if ((ScriptType)arrayType == ScriptType.Struct)
                {
                    valueVar = ReadScriptStruct(out int defaultLength);
                }
                else
                {
                    valueVar = new ScriptVariable((ScriptType)arrayType);
                }

                ScriptArray array = new ScriptArray(new KeyValuePair <ScriptVariable, ScriptVariable>(indexVar, valueVar));

                int counterArray = 0;

                while (r.ReadByte() == 0)
                {
                    counterArray++;
                }
                r.BaseStream.Position -= 1;

                array.Unknown = counterArray;

                return(array);
            }

            ScriptStruct ReadScriptStruct(out int defaultLength)
            {
                var strc = new ScriptStruct();

                var numMembers = r.ReadByte();
                var structName = r.ReadString();

                strc.StructName = structName;
                strc.Members    = new ScriptVariable[numMembers];

                defaultLength = 0;

                for (var i = 0; i < numMembers; i++)
                {
                    ScriptVariable member;

                    var memberName = r.ReadString();
                    var memberType = r.ReadByte();

                    switch ((ScriptType)memberType)
                    {
                    case ScriptType.Array:
                        member = ReadScriptArray();
                        break;

                    case ScriptType.Struct:
                        member         = ReadScriptStruct(out int defLength);
                        defaultLength += defLength;
                        break;

                    default:
                        member = new ScriptVariable((ScriptType)memberType);
                        break;
                    }

                    switch (member.Type)
                    {
                    case ScriptType.Integer:
                        r.ReadInt32();
                        defaultLength += 4;
                        break;

                    case ScriptType.Real:
                        r.ReadSingle();
                        defaultLength += 4;
                        break;

                    case ScriptType.Vec2:
                        r.ReadVec2();
                        defaultLength += 8;
                        break;

                    case ScriptType.Vec3:
                        r.ReadVec3();
                        defaultLength += 12;
                        break;

                    case ScriptType.Int3:
                        r.ReadInt3();
                        defaultLength += 12;
                        break;

                    case ScriptType.Int2:
                        r.ReadInt2();
                        defaultLength += 8;
                        break;

                    case ScriptType.Array:
                        break;

                    case ScriptType.Struct:
                        break;

                    default:
                        r.ReadByte();
                        defaultLength += 1;
                        break;
                    }

                    member.Name = memberName;

                    strc.Members[i] = member;
                }

                int counter = 0;

                while (r.ReadByte() == 0)
                {
                    counter++;
                }
                r.BaseStream.Position -= 1;

                //int counter = 0;
                //while (r.ReadByte() == 0) counter++; // probably size of the struct in byte count?
                //r.BaseStream.Position -= 1;
                strc.Size    = defaultLength + counter; //
                strc.Unknown = counter;

                //Progress += defaultLength;

                return(strc);
            }

            ScriptVariable ReadType(ScriptVariable type)
            {
                switch (type.Type)
                {
                case ScriptType.Boolean:
                    type.Value = Convert.ToBoolean(r.ReadBoolean(true));
                    break;

                case ScriptType.Integer:
                    type.Value = r.ReadInt32();
                    break;

                case ScriptType.Real:
                    type.Value = r.ReadSingle();
                    break;

                case ScriptType.Text:
                    type.Value = r.ReadString(StringLengthPrefix.Byte);
                    break;

                case ScriptType.Vec2:
                    type.Value = r.ReadVec2();
                    break;

                case ScriptType.Vec3:
                    type.Value = r.ReadVec3();
                    break;

                case ScriptType.Int3:
                    type.Value = r.ReadInt3();
                    break;

                case ScriptType.Int2:
                    type.Value = r.ReadInt2();
                    break;

                case ScriptType.Array:
                    var array = type as ScriptArray;

                    var numElements = r.ReadByte();
                    if (numElements > 0)
                    {
                        ScriptVariable key;
                        if (array.Reference.Key.Type == ScriptType.Void)
                        {
                            for (var i = 0; i < numElements; i++)
                            {
                                array.Elements[new ScriptVariable(ScriptType.Void)
                                               {
                                                   Value = i
                                               }] = ReadType(array.Reference.Value.Clone());
                            }
                        }
                        else
                        {
                            key = ReadType(array.Reference.Key.Clone());
                            for (var i = 0; i < numElements; i++)
                            {
                                array.Elements[key] = ReadType(array.Reference.Value.Clone());
                            }
                        }
                    }
                    break;

                case ScriptType.Struct:
                    var strc = type as ScriptStruct;
                    for (var i = 0; i < strc.Members.Length; i++)
                    {
                        strc.Members[i] = ReadType(strc.Members[i]);
                    }
                    break;

                default:
                    throw new Exception(type.Type.ToString());
                }

                return(type);
            }
        }
Esempio n. 18
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r)
 {
     n.xml = r.ReadString();
 }
Esempio n. 19
0
    private static ScriptVariable ReadType(ScriptVariable type, GameBoxReader r)
    {
        switch (type.Type)
        {
        case ScriptType.Boolean:
            type.Value = r.ReadBoolean(true);
            break;

        case ScriptType.Integer:
            type.Value = r.ReadInt32();
            break;

        case ScriptType.Real:
            type.Value = r.ReadSingle();
            break;

        case ScriptType.Text:
            type.Value = r.ReadString(StringLengthPrefix.Byte);
            break;

        case ScriptType.Vec2:
            type.Value = r.ReadVec2();
            break;

        case ScriptType.Vec3:
            type.Value = r.ReadVec3();
            break;

        case ScriptType.Int3:
            type.Value = r.ReadInt3();
            break;

        case ScriptType.Int2:
            type.Value = r.ReadInt2();
            break;

        case ScriptType.Array:
            var array = (ScriptArray)type;

            var numElements = r.ReadByte();
            if (numElements > 0)
            {
                ScriptVariable key;
                if (array.Reference.Key.Type == ScriptType.Void)
                {
                    for (var i = 0; i < numElements; i++)
                    {
                        array.Elements[new ScriptVariable(ScriptType.Void)
                                       {
                                           Value = i
                                       }] = ReadType(array.Reference.Value.Clone(), r);
                    }
                }
                else
                {
                    key = ReadType(array.Reference.Key.Clone(), r);
                    for (var i = 0; i < numElements; i++)
                    {
                        array.Elements[key] = ReadType(array.Reference.Value.Clone(), r);
                    }
                }
            }
            break;

        case ScriptType.Struct:
            var strc = (ScriptStruct)type;
            for (var i = 0; i < strc.Members.Length; i++)
            {
                strc.Members[i] = ReadType(strc.Members[i], r);
            }
            break;

        default:
            throw new Exception(type.Type.ToString());
        }

        return(type);
    }
Esempio n. 20
0
 public override void Read(CGameCtnReplayRecord n, GameBoxReader r, GameBoxWriter unknownW)
 {
     n.XML = r.ReadString();
 }
Esempio n. 21
0
    private static ScriptStruct ReadScriptStruct(out int defaultLength, GameBoxReader r)
    {
        var strc = new ScriptStruct();

        var numMembers = r.ReadByte();
        var structName = r.ReadString();

        strc.StructName = structName;
        strc.Members    = new ScriptVariable[numMembers];

        defaultLength = 0;

        for (var i = 0; i < numMembers; i++)
        {
            ScriptVariable member;

            var memberName = r.ReadString();
            var memberType = r.ReadByte();

            switch ((ScriptType)memberType)
            {
            case ScriptType.Array:
                member = ReadScriptArray(r);
                break;

            case ScriptType.Struct:
                member         = ReadScriptStruct(out int defLength, r);
                defaultLength += defLength;
                break;

            default:
                member = new ScriptVariable((ScriptType)memberType);
                break;
            }

            switch (member.Type)
            {
            case ScriptType.Integer:
                r.ReadInt32();
                defaultLength += 4;
                break;

            case ScriptType.Real:
                r.ReadSingle();
                defaultLength += 4;
                break;

            case ScriptType.Vec2:
                r.ReadVec2();
                defaultLength += 8;
                break;

            case ScriptType.Vec3:
                r.ReadVec3();
                defaultLength += 12;
                break;

            case ScriptType.Int3:
                r.ReadInt3();
                defaultLength += 12;
                break;

            case ScriptType.Int2:
                r.ReadInt2();
                defaultLength += 8;
                break;

            case ScriptType.Array:
                break;

            case ScriptType.Struct:
                break;

            default:
                r.ReadByte();
                defaultLength += 1;
                break;
            }

            member.Name = memberName;

            strc.Members[i] = member;
        }

        int counter = 0;

        while (r.ReadByte() == 0)
        {
            counter++;
        }
        r.BaseStream.Position -= 1;

        //int counter = 0;
        //while (r.ReadByte() == 0) counter++; // probably size of the struct in byte count?
        //r.BaseStream.Position -= 1;
        strc.Size    = defaultLength + counter; //
        strc.Unknown = counter;

        //Progress += defaultLength;

        return(strc);
    }
Esempio n. 22
0
    internal void Read(GameBoxReader reader)
    {
        var numFiles = reader.ReadInt32(); // With this, number of files value can be optimized

        if (numFiles <= 0)
        {
            Log.Write("No external nodes found, reference table completed.", ConsoleColor.Green);
            return;
        }

        AncestorLevel = reader.ReadInt32();
        var numFolders = reader.ReadInt32();

        var allFolders = new List <Folder>();

        Folders = ReadRefTableFolders(numFolders);

        Folder[] ReadRefTableFolders(int n)
        {
            var folders = new Folder[n];

            for (var i = 0; i < n; i++)
            {
                var name          = reader.ReadString();
                var numSubFolders = reader.ReadInt32();

                var folder = new Folder(name);
                allFolders.Add(folder);
                foreach (var subFolder in ReadRefTableFolders(numSubFolders))
                {
                    folder.Folders.Add(subFolder);
                }

                folders[i] = folder;
            }

            return(folders);
        }

        Files = new List <File>();

        for (var i = 0; i < numFiles; i++)
        {
            string?fileName      = null;
            int?   resourceIndex = null;
            bool?  useFile       = null;
            int?   folderIndex   = null;

            var flags = reader.ReadInt32();

            if ((flags & 4) == 0)
            {
                fileName = reader.ReadString();
            }
            else
            {
                resourceIndex = reader.ReadInt32();
            }

            var nodeIndex = reader.ReadInt32();

            if (Header.Version >= 5)
            {
                useFile = reader.ReadBoolean();
            }

            if ((flags & 4) == 0)
            {
                folderIndex = reader.ReadInt32();
            }

            var file = new File(flags, fileName, resourceIndex, nodeIndex, useFile, folderIndex);

            if (folderIndex.HasValue)
            {
                if (folderIndex.Value - 1 < 0)
                {
                    Files.Add(file);
                }
                else
                {
                    allFolders[folderIndex.Value - 1].Files.Add(file);
                }
            }
        }
    }