public void ChangePuzzleRoadListsBasedOnEndings(PuzzleRoad road, PuzzleRoad relevantRoad) { var amountOfOpenRoadEnds = AmountOfOpenRoadEnds(relevantRoad); if (amountOfOpenRoadEnds == 2) { //The relevantroad is still open, we need to further connect roads to the road object. OpenPuzzleRoads.Remove(relevantRoad); } else if (amountOfOpenRoadEnds == 1) { //We connected 2 roads which makes 1 definitive road. OpenPuzzleRoads.Remove(road); DefinitivePuzzleRoads.Add(road); OpenPuzzleRoads.Remove(relevantRoad); } else if (amountOfOpenRoadEnds == 0) { //This shouldn't happen in practice. OpenPuzzleRoads.Remove(relevantRoad); } }
public PuzzleRoad CreatePuzzleRoad(Road road, int startPuzzleIndex) { var newPuzzleRoad = new PuzzleRoad(startPuzzleIndex, road); var amountOfOpenRoadEnds = AmountOfOpenRoadEnds(newPuzzleRoad); if (amountOfOpenRoadEnds == 0) { newPuzzleRoad.EndPuzzleIndex = newPuzzleRoad.StartPuzzleIndex; DefinitivePuzzleRoads.Add(newPuzzleRoad); } else { newPuzzleRoad.RoadStartsOrEndsAtPuzzleEdge = amountOfOpenRoadEnds <= 1; OpenPuzzleRoads.Add(newPuzzleRoad); } if (newPuzzleRoad.RoadAttribute != Condition.None) { newPuzzleRoad.SpecialConditions.Add(newPuzzleRoad.RoadAttribute, 1); } return(newPuzzleRoad); }