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") { }