コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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;
        }