public static ModSetting Read(BinaryReader stream)
        {
            ModSetting ret = new ModSetting();

            ret.type = stream.ReadByte();
            switch (ret.type)
            {
            case 1: goto case 4;

            case 2: goto case 4;

            case 3: goto case 4;

            case 4:
                ret.name = Reader.ReadComplexString(stream);
                break;

            default:
                throw new IOException("Wrong setting type");
            }
            switch (ret.type)
            {
            case 1:
                ret.value = stream.ReadBoolean();
                break;

            case 2:
                ret.value = stream.ReadDouble();
                break;

            case 3:
                ret.value = stream.ReadInt64();
                break;

            case 4:
                ret.value = Reader.ReadComplexString(stream);
                break;

            default:
                throw new IOException("Wrong setting type");
            }
            return(ret);
        }
Exemple #2
0
        public override void FromBytes(byte[] data)
        {
            MemoryStream ms = new MemoryStream(data);
            BinaryReader stream = new BinaryReader(ms);

            clientrequestId = stream.ReadInt32();
            status = stream.ReadByte();
            gameName = Reader.ReadString(stream);
            serverHash = Reader.ReadString(stream);
            description = Reader.ReadString(stream);
            latency = stream.ReadByte();
            gameId = stream.ReadInt32();

            serverUsername = Reader.ReadString(stream);
            mapSavingProgress = stream.ReadByte();
            var0 = Reader.ReadVarShort(stream);
            short clientscnt = Reader.ReadVarShort(stream);
            clients = new Client[clientscnt];
            for (int i = 0; i < clientscnt; i++)
                clients[i] = Client.Read(stream);

            firstSequenceNumberToExpect = stream.ReadInt32();
            firstSequenceNumberToSend = stream.ReadInt32();
            newPeerId = stream.ReadInt16();

            short modscnt = Reader.ReadVarShort(stream);
            mods = new ModInfo[modscnt];
            for (int i = 0; i < modscnt; i++)
                mods[i] = ModInfo.Read(stream);
            short modsettingscnt = Reader.ReadVarShort(stream);
            modSettings = new ModSetting[modsettingscnt];
            for (int i = 0; i < modsettingscnt; i++)
                modSettings[i] = ModSetting.Read(stream);

            pausedBy = stream.ReadInt16();

            lanGameId = stream.ReadInt32();
            name = Reader.ReadString(stream);
            applicationVersion = Version.Read(stream);
            buildVersion = stream.ReadInt16();
            serverDescription = Reader.ReadString(stream);
            maxPlayers = stream.ReadInt16();
            gameTimeElapsed = stream.ReadInt32();
            hasPassword = stream.ReadBoolean();
            int hostaddrln = stream.ReadInt32();
            byte[] hostaddrstrb = new byte[hostaddrln];
            stream.Read(hostaddrstrb, 0, hostaddrln);
            hostAddress = Encoding.UTF8.GetString(hostaddrstrb);

            int tagscnt = Reader.ReadVarInt(stream);
            tags = new string[tagscnt];
            for (int i = 0; i < tagscnt; i++)
                tags[i] = Reader.ReadString(stream);
            serverUsername1 = Reader.ReadString(stream);
            autosaveInterval = stream.ReadInt32();
            autosaveSlots = stream.ReadInt32();
            AFKAutoKickInterval = stream.ReadInt32();
            allowCommands = stream.ReadBoolean();
            maxUploadInKilobytesPerSecond = stream.ReadInt32();
            minimumLatencyInTicks = stream.ReadByte();
            ignorePlayerLimitForReturnongPlayers = stream.ReadBoolean();
            onlyAdminsCanPauseTheGame = stream.ReadBoolean();
            requireUserVerification = stream.ReadBoolean();

            int adminscnt = Reader.ReadVarInt(stream);
            admins = new string[adminscnt];
            for (int i = 0; i < adminscnt; i++)
                admins[i] = Reader.ReadString(stream);

            int whitelistcnt = Reader.ReadVarInt(stream);
            whitelist = new ListItem[whitelistcnt];
            for (int i = 0; i < whitelistcnt; i++)
                whitelist[i] = ListItem.Read(stream);
            int whitelistmappingcnt = Reader.ReadVarInt(stream);
            whitelistMappings = new AddressToUsernameMapping[whitelistmappingcnt];
            for (int i = 0; i < whitelistmappingcnt; i++)
                whitelistMappings[i] = AddressToUsernameMapping.Read(stream);

            int banlistcnt = Reader.ReadVarInt(stream);
            banlist = new ListItem[banlistcnt];
            for (int i = 0; i < banlistcnt; i++)
                banlist[i] = ListItem.Read(stream);
            int banlistmappingscnt = Reader.ReadVarInt(stream);
            banlistMappings = new AddressToUsernameMapping[banlistmappingscnt];
            for (int i = 0; i < banlistmappingscnt; i++)
                banlistMappings[i] = AddressToUsernameMapping.Read(stream);

            online = true;
        }