public DemoDataTablesCommand(Stream input) : base(input) { Type = DemoCommandType.dem_datatables; BitStream stream; using (BinaryReader reader = new BinaryReader(input, Encoding.ASCII, true)) { int length = reader.ReadInt32(); stream = new BitStream(reader.ReadBytes(length)); } while (stream.ReadBool()) { SendTables.Add(ParseSendTable(stream)); } // Link referenced datatables foreach (SendTable table in SendTables) { foreach (SendPropDefinition dtProp in table.Properties) { if (dtProp.Type == SendPropType.Datatable) { dtProp.Table = SendTables.Single(t => t.NetTableName == dtProp.ExcludeName); dtProp.ExcludeName = null; } } } short serverClasses = stream.ReadShort(); Debug.Assert(serverClasses > 0); ServerClasses = new List <ServerClass>(serverClasses); for (int i = 0; i < serverClasses; i++) { short classID = stream.ReadShort(); if (classID >= serverClasses) { throw new DemoParseException("Invalid server class ID"); } ServerClass sc = new ServerClass(); sc.Classname = stream.ReadCString(); sc.DatatableName = stream.ReadCString(); ServerClasses.Add(sc); } Debug.Assert((stream.Length - stream.Cursor) < 8); }
/// <summary> /// Reset the local data. /// </summary> public void Reset() { CVars.Clear(); CVars.Add("tv_nochat", "0"); CVars.Add("joy_autoaimdampen", "0"); CVars.Add("name", _details.Name); CVars.Add("cl_interp_ratio", "2"); CVars.Add("tv_listen_voice_indices", "0"); CVars.Add("cl_predict", "0"); CVars.Add("cl_updaterate", "30"); CVars.Add("cl_showhelp", "1"); CVars.Add("steamworks_sessionid_lifetime_client", "0"); CVars.Add("cl_mouselook", "1"); CVars.Add("steamworks_sessionid_client", "0"); CVars.Add("dota_mute_cobroadcasters", "0"); CVars.Add("voice_loopback", "0"); CVars.Add("dota_player_initial_skill", "0"); CVars.Add("cl_lagcompensation", "1"); CVars.Add("closecaption", "0"); CVars.Add("cl_language", "english"); CVars.Add("english", "1"); CVars.Add("cl_class", "default"); CVars.Add("snd_voipvolume", "1"); CVars.Add("snd_musicvolume", "1"); CVars.Add("cl_cmdrate", "30"); CVars.Add("net_maxroutable", "1200"); CVars.Add("cl_team", "default"); CVars.Add("rate", "80000"); CVars.Add("cl_predictweapons", "1"); CVars.Add("cl_interpolate", "1"); CVars.Add("cl_interp", "0.05"); CVars.Add("dota_camera_edgemove", "1"); CVars.Add("snd_gamevolume", "1"); CVars.Add("cl_spec_mode", "1"); Classes.Clear(); ClassesByName.Clear(); SendTables.Clear(); FlatTables.Clear(); Properties.Clear(); Slots.Clear(); Strings.Clear(); StringsIndex.Clear(); Created.Clear(); Deleted.Clear(); }