protected override void Save(StackWriter writer, Map map)
 {
     foreach (var building in map.Buildings)
     {
         if (building is Core)
         {
             continue;
         }
         writer.PushItems(building.Pos, building.Type);
         if (building is Workshop w)
         {
             writer.PushItem(w.Recipe.Name);
         }
         if (building.Output is DirectProducer p)
         {
             writer.PushItem(p.Buffer);
         }
         if (building.Input is DirectConsumer c)
         {
             foreach (var buffer in c.Buffers)
             {
                 writer.PushItems(buffer.Item, buffer.Buffer);
             }
         }
         writer.WriteStack();
     }
 }
 protected override void Save(StackWriter writer, Map map)
 {
     foreach (var route in map.Routes)
     {
         writer.PushItem(route.Id);
         writer.PushItem(route.Destinations.Count);
         foreach (var destination in route.Destinations)
         {
             var action = route.GetAction(destination);
             writer.PushItems(destination.Pos, action.Type, action.Item);
         }
         foreach (var node in route.Path)
         {
             writer.PushItem(node.Pos);
         }
         writer.WriteStack();
     }
 }