public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) { ActorStateJson actorState = (ActorStateJson)value; writer.WriteStartObject(); writer.WriteKeyValue(nameof(actorState.Id), actorState.Id, serializer); if (actorState.NameId != null) { writer.WriteKeyValue(nameof(actorState.NameId), actorState.NameId, serializer); } if (_raw && actorState.UnknownBit != null) { writer.WriteKeyValue(nameof(actorState.UnknownBit), actorState.UnknownBit, serializer); } if (actorState.TypeId != null) { if (_raw || _minimal) { writer.WriteKeyValue(nameof(actorState.TypeId), actorState.TypeId, serializer); } else { writer.WriteKeyValue("TypeName", _objectNames[actorState.TypeId.Value], serializer); } } if (actorState.ClassId != null) { if (_raw || _minimal) { writer.WriteKeyValue(nameof(actorState.ClassId), actorState.ClassId, serializer); } else { writer.WriteKeyValue("ClassName", _objectNames[actorState.ClassId.Value], serializer); } } if (actorState.InitialPosition != null) { writer.WriteKeyValue(nameof(actorState.InitialPosition), actorState.InitialPosition, serializer); } foreach (var p in actorState.Properties.Values) { serializer.Serialize(writer, p); } writer.WriteEndObject(); }
public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { ActorStateJson actorState = (ActorStateJson)obj; IDictionary <string, object> serialized = new Dictionary <string, object>(); serialized["Id"] = actorState.Id; // Can probably leave this out entirely. Always false I believe /* * if (actorState.UnknownBit != null) * { * serialized["UnknownBit"] = actorState.UnknownBit; * } * */ if (actorState.TypeName != null) { serialized["TypeName"] = actorState.TypeName; } if (actorState.ClassName != null) { serialized["ClassName"] = actorState.ClassName; } if (actorState.InitialPosition != null) { serialized["InitialPosition"] = actorState.InitialPosition; } foreach (var p in actorState.Properties) { if (p.Data.Count == 1) { serialized[p.Name] = p.Data[0]; } else { serialized[p.Name] = p.Data; } // Adding extra info in this case to convert to a flag. // Maybe leave this out if I add a "raw" mode if (p.Name == "TAGame.CarComponent_TA:ReplicatedActive") { serialized["TAGame.CarComponent_TA:Active"] = (Convert.ToInt32(p.Data[0]) % 2) != 0; } } return(serialized); }
private IDictionary <string, object> SerializeRaw(Frame frame, JavaScriptSerializer serializer) { List <UInt32> deletedActorStateIds = new List <UInt32>(); List <ActorStateJson> newActorStates = new List <ActorStateJson>(); List <ActorStateJson> updatedActorStates = new List <ActorStateJson>(); Dictionary <int, ActorStateJson> actor = new Dictionary <int, ActorStateJson>(); foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Deleted)) { deletedActorStateIds.Add(a.Id); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.New)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; actorState.UnknownBit = a.Unknown1; actorState.TypeName = a.TypeName; actorState.ClassName = a.ClassName; actorState.InitialPosition = a.Position; actorState.Properties = new List <ActorStateProperty>(); newActorStates.Add(actorState); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Existing)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; actorState.Properties = new List <ActorStateProperty>(); actorState.Properties = a.Properties.Select(p => new ActorStateProperty { Name = p.PropertyName, Data = p.Data }).ToList(); updatedActorStates.Add(actorState); } Dictionary <string, object> result = new Dictionary <string, object>(); result["Time"] = frame.Time; result["Delta"] = frame.Delta; result["DeletedActorIds"] = deletedActorStateIds; result["NewActors"] = newActorStates; result["UpdatedActors"] = updatedActorStates; return(result); }
private void SerializeRaw(JsonWriter writer, Frame frame, Newtonsoft.Json.JsonSerializer serializer) { List <UInt32> deletedActorStateIds = new List <UInt32>(); List <ActorStateJson> newActorStates = new List <ActorStateJson>(); List <ActorStateJson> updatedActorStates = new List <ActorStateJson>(); foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Deleted)) { deletedActorStateIds.Add(a.Id); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.New)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; actorState.NameId = a.NameId; actorState.UnknownBit = a.Unknown1; actorState.TypeId = a.TypeId; actorState.ClassId = a.ClassId; actorState.InitialPosition = a.Position; newActorStates.Add(actorState); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Existing)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; foreach (var p in a.Properties) { actorState.Properties[p.Key] = p.Value; } updatedActorStates.Add(actorState); } writer.WriteStartObject(); writer.WriteKeyValue("Time", frame.Time, serializer); writer.WriteKeyValue("Delta", frame.Delta, serializer); writer.WriteKeyValue("DeletedActorIds", deletedActorStateIds, serializer); writer.WriteKeyValue("NewActors", newActorStates, serializer); writer.WriteKeyValue("UpdatedActors", updatedActorStates, serializer); writer.WriteEndObject(); }
private IDictionary<string, object> SerializeRaw(Frame frame, JavaScriptSerializer serializer) { List<UInt32> deletedActorStateIds = new List<UInt32>(); List<ActorStateJson> newActorStates = new List<ActorStateJson>(); List<ActorStateJson> updatedActorStates = new List<ActorStateJson>(); Dictionary<int, ActorStateJson> actor = new Dictionary<int, ActorStateJson>(); foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Deleted)) { deletedActorStateIds.Add(a.Id); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.New)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; actorState.UnknownBit = a.Unknown1; actorState.TypeName = a.TypeName; actorState.ClassName = a.ClassName; actorState.InitialPosition = a.Position; actorState.Properties = new List<ActorStateProperty>(); newActorStates.Add(actorState); } foreach (var a in frame.ActorStates.Where(x => x.State == ActorStateState.Existing)) { var actorState = new ActorStateJson(); actorState.Id = a.Id; actorState.Properties = new List<ActorStateProperty>(); actorState.Properties = a.Properties.Select(p => new ActorStateProperty { Name = p.PropertyName, Data = p.Data }).ToList(); updatedActorStates.Add(actorState); } Dictionary<string, object> result = new Dictionary<string, object>(); result["Time"] = frame.Time; result["DeletedActorIds"] = deletedActorStateIds; result["NewActors"] = newActorStates; result["UpdatedActors"] = updatedActorStates; return result; }