private void ConnectPartialGraph(PartialGraph pgSource, PartialGraph pgTarget)
 {
     foreach (StardewVertex vertex in pgSource.Vertices)
     {
         if (vertex is WarpVertex)
         {
             var warpVertex = (WarpVertex)vertex;
             if (warpVertex.TargetLocation == pgTarget.Location)
             {
                 var newVertex = new StardewVertex(pgTarget.Location, warpVertex.TargetPosition);
                 pgTarget.AddVertex(newVertex);
                 var newEdge = new StardewEdge(vertex, newVertex, "Partial graph connection");
                 pgSource.AddEdge(newEdge);
                 foreach (StardewVertex targetVertex in pgTarget.Vertices)
                 {
                     // Player vertex only needs to connect away from itself, all warp vertices and the target vertex must have an edge going to them
                     if (targetVertex != pgTarget.PlayerVertex)
                     {
                         var e = new StardewEdge(newVertex, targetVertex, $"From {newVertex.Location} to {targetVertex.Location}");
                         pgTarget.AddEdge(e);
                     }
                 }
             }
         }
     }
 }
 public PlayerEdge(MovableVertex source, StardewVertex target)
     : base(source, target, "Player")
 {
 }