public XElement Serialize(ActorInstanceLayer actorInstanceLayer, string elementName = "actorInstanceLayer") { actorInstanceLayer.ThrowIfNull("actorInstanceLayer"); elementName.ThrowIfNull("elementName"); return new XElement( elementName, actorInstanceLayer.ActorInstances.Select(arg => ActorInstanceSerializer.Instance.Serialize(arg)), new XAttribute("boardId", actorInstanceLayer.BoardId), new XAttribute("size", SizeSerializer.Instance.Serialize(actorInstanceLayer.Size))); }
public Board( Guid id, string name, string description, Size size, SpriteLayer backgroundLayer, SpriteLayer foregroundLayer, ActorInstanceLayer actorInstanceLayer, IEnumerable<BoardExit> exits, IEnumerable<Timer> timers, EventHandlerCollection eventHandlerCollection = null) { name.ThrowIfNull("name"); description.ThrowIfNull("description"); backgroundLayer.ThrowIfNull("backgroundLayer"); foregroundLayer.ThrowIfNull("foregroundLayer"); actorInstanceLayer.ThrowIfNull("actorInstanceLayer"); exits.ThrowIfNull("exits"); timers.ThrowIfNull("timers"); if (backgroundLayer.BoardId != id) { throw new ArgumentException("Background layer must belong to board.", "backgroundLayer"); } if (foregroundLayer.BoardId != id) { throw new ArgumentException("Foreground layer must belong to board.", "backgroundLayer"); } if (actorInstanceLayer.BoardId != id) { throw new ArgumentException("Actor instance layer must belong to board.", "backgroundLayer"); } _id = id; Name = name; Description = description; _size = size; _backgroundLayer = backgroundLayer; _foregroundLayer = foregroundLayer; _actorInstanceLayer = actorInstanceLayer; _exits = exits; _timers = timers; _eventHandlerCollection = eventHandlerCollection; }
public byte[] Serialize(ActorInstanceLayer actorInstanceLayer) { actorInstanceLayer.ThrowIfNull("actorInstanceLayer"); var serializer = new CompactSerializer(); serializer[0] = actorInstanceLayer.BoardId.ToByteArray(); serializer[1] = SizeSerializer.Instance.Seralize(actorInstanceLayer.Size); var actorInstanceSerializer = new CompactSerializer(); int index = 0; foreach (ActorInstance actorInstance in actorInstanceLayer.ActorInstances) { actorInstanceSerializer[index++] = ActorInstanceSerializer.Instance.Serialize(actorInstance); } serializer[2] = actorInstanceSerializer.Serialize(); return serializer.Serialize(); }