X-Git-Url: https://git.r.bdr.sh/rbdr/map/blobdiff_plain/1b85f723b48d38cf345bb9a4f3fd01aa6039b50b..77d0155b661e813a85a7312ed809fc7e5a9f7440:/Map.xcodeproj/project.pbxproj

diff --git a/Map.xcodeproj/project.pbxproj b/Map.xcodeproj/project.pbxproj
index b7dc2fa..12a5d1c 100644
--- a/Map.xcodeproj/project.pbxproj
+++ b/Map.xcodeproj/project.pbxproj
@@ -7,6 +7,16 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		B523C73D25C98D9800C44061 /* NSImage+writePNG.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */; };
+		B523C74625C9BD3500C44061 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B523C74525C9BD3500C44061 /* CloudKit.framework */; };
+		B523C74B25C9C1BA00C44061 /* DefaultMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */; };
+		B523C75A25C9FD4900C44061 /* MapAxes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C75925C9FD4900C44061 /* MapAxes.swift */; };
+		B523C76225CA05A300C44061 /* MapStages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76125CA05A300C44061 /* MapStages.swift */; };
+		B523C76725CA071B00C44061 /* MapVertices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76625CA071B00C44061 /* MapVertices.swift */; };
+		B523C76C25CA0DFA00C44061 /* MapEdges.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C76B25CA0DFA00C44061 /* MapEdges.swift */; };
+		B523C77125CA121300C44061 /* MapBlockers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77025CA121300C44061 /* MapBlockers.swift */; };
+		B523C77625CA181100C44061 /* MapColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77525CA181100C44061 /* MapColor.swift */; };
+		B523C77E25CA294C00C44061 /* MapOpportunities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B523C77D25CA294C00C44061 /* MapOpportunities.swift */; };
 		B526257225C874F9003E73B7 /* MapApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526257125C874F9003E73B7 /* MapApp.swift */; };
 		B526257425C874F9003E73B7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B526257325C874F9003E73B7 /* ContentView.swift */; };
 		B526257625C874FA003E73B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B526257525C874FA003E73B7 /* Assets.xcassets */; };
@@ -18,9 +28,19 @@
 		B52625A625C876C3003E73B7 /* MapDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625A525C876C3003E73B7 /* MapDetail.swift */; };
 		B52625AB25C87909003E73B7 /* Date+format.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625AA25C87909003E73B7 /* Date+format.swift */; };
 		B52625B025C87C14003E73B7 /* MapRender.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625AF25C87C14003E73B7 /* MapRender.swift */; };
-		B52625B625C87D69003E73B7 /* Binding+unwrap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625B525C87D69003E73B7 /* Binding+unwrap.swift */; };
 		B52625BB25C884C2003E73B7 /* Map+parse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625BA25C884C2003E73B7 /* Map+parse.swift */; };
 		B52625C625C8BD2A003E73B7 /* Stage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52625C525C8BD2A003E73B7 /* Stage.swift */; };
+		B539516C25CB0C9300959F72 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539516B25CB0C9200959F72 /* Store.swift */; };
+		B539517425CB0CA400959F72 /* AppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539517325CB0CA400959F72 /* AppState.swift */; };
+		B539518125CB2D7A00959F72 /* MapTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B539518025CB2D7A00959F72 /* MapTextEditor.swift */; };
+		B5CF75C925CC19FC003BFF3D /* EvolutionPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75C825CC19FC003BFF3D /* EvolutionPicker.swift */; };
+		B5CF75CF25CC7965003BFF3D /* MapParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75CE25CC7965003BFF3D /* MapParser.swift */; };
+		B5CF75D825CC79BC003BFF3D /* VertexParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75D725CC79BC003BFF3D /* VertexParserStrategy.swift */; };
+		B5CF75DD25CC79D7003BFF3D /* EdgeParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75DC25CC79D7003BFF3D /* EdgeParserStrategy.swift */; };
+		B5CF75E225CC79ED003BFF3D /* BlockerParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75E125CC79ED003BFF3D /* BlockerParserStrategy.swift */; };
+		B5CF75EA25CC7A13003BFF3D /* OpportunityParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75E925CC7A13003BFF3D /* OpportunityParserStrategy.swift */; };
+		B5CF75EF25CC7A4A003BFF3D /* StageParserStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75EE25CC7A4A003BFF3D /* StageParserStrategy.swift */; };
+		B5CF75F725CC97CA003BFF3D /* Debouncer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CF75F625CC97CA003BFF3D /* Debouncer.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -41,6 +61,16 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
+		B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+writePNG.swift"; sourceTree = "<group>"; };
+		B523C74525C9BD3500C44061 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; };
+		B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultMapView.swift; sourceTree = "<group>"; };
+		B523C75925C9FD4900C44061 /* MapAxes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapAxes.swift; sourceTree = "<group>"; };
+		B523C76125CA05A300C44061 /* MapStages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapStages.swift; sourceTree = "<group>"; };
+		B523C76625CA071B00C44061 /* MapVertices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapVertices.swift; sourceTree = "<group>"; };
+		B523C76B25CA0DFA00C44061 /* MapEdges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapEdges.swift; sourceTree = "<group>"; };
+		B523C77025CA121300C44061 /* MapBlockers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapBlockers.swift; sourceTree = "<group>"; };
+		B523C77525CA181100C44061 /* MapColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapColor.swift; sourceTree = "<group>"; };
+		B523C77D25CA294C00C44061 /* MapOpportunities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapOpportunities.swift; sourceTree = "<group>"; };
 		B526256E25C874F9003E73B7 /* Map.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Map.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		B526257125C874F9003E73B7 /* MapApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapApp.swift; sourceTree = "<group>"; };
 		B526257325C874F9003E73B7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@@ -59,9 +89,19 @@
 		B52625A525C876C3003E73B7 /* MapDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapDetail.swift; sourceTree = "<group>"; };
 		B52625AA25C87909003E73B7 /* Date+format.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+format.swift"; sourceTree = "<group>"; };
 		B52625AF25C87C14003E73B7 /* MapRender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapRender.swift; sourceTree = "<group>"; };
-		B52625B525C87D69003E73B7 /* Binding+unwrap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Binding+unwrap.swift"; sourceTree = "<group>"; };
 		B52625BA25C884C2003E73B7 /* Map+parse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Map+parse.swift"; sourceTree = "<group>"; };
 		B52625C525C8BD2A003E73B7 /* Stage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stage.swift; sourceTree = "<group>"; };
+		B539516B25CB0C9200959F72 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = "<group>"; };
+		B539517325CB0CA400959F72 /* AppState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppState.swift; sourceTree = "<group>"; };
+		B539518025CB2D7A00959F72 /* MapTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTextEditor.swift; sourceTree = "<group>"; };
+		B5CF75C825CC19FC003BFF3D /* EvolutionPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EvolutionPicker.swift; sourceTree = "<group>"; };
+		B5CF75CE25CC7965003BFF3D /* MapParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapParser.swift; sourceTree = "<group>"; };
+		B5CF75D725CC79BC003BFF3D /* VertexParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VertexParserStrategy.swift; sourceTree = "<group>"; };
+		B5CF75DC25CC79D7003BFF3D /* EdgeParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EdgeParserStrategy.swift; sourceTree = "<group>"; };
+		B5CF75E125CC79ED003BFF3D /* BlockerParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockerParserStrategy.swift; sourceTree = "<group>"; };
+		B5CF75E925CC7A13003BFF3D /* OpportunityParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpportunityParserStrategy.swift; sourceTree = "<group>"; };
+		B5CF75EE25CC7A4A003BFF3D /* StageParserStrategy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StageParserStrategy.swift; sourceTree = "<group>"; };
+		B5CF75F625CC97CA003BFF3D /* Debouncer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Debouncer.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -69,6 +109,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				B523C74625C9BD3500C44061 /* CloudKit.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -89,6 +130,27 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		B523C74425C9BD3500C44061 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				B523C74525C9BD3500C44061 /* CloudKit.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		B523C75825C9FD3A00C44061 /* MapRenderComponents */ = {
+			isa = PBXGroup;
+			children = (
+				B523C75925C9FD4900C44061 /* MapAxes.swift */,
+				B523C76125CA05A300C44061 /* MapStages.swift */,
+				B523C76625CA071B00C44061 /* MapVertices.swift */,
+				B523C76B25CA0DFA00C44061 /* MapEdges.swift */,
+				B523C77025CA121300C44061 /* MapBlockers.swift */,
+				B523C77D25CA294C00C44061 /* MapOpportunities.swift */,
+			);
+			path = MapRenderComponents;
+			sourceTree = "<group>";
+		};
 		B526256525C874F9003E73B7 = {
 			isa = PBXGroup;
 			children = (
@@ -96,6 +158,7 @@
 				B526258825C874FA003E73B7 /* MapTests */,
 				B526259325C874FA003E73B7 /* MapUITests */,
 				B526256F25C874F9003E73B7 /* Products */,
+				B523C74425C9BD3500C44061 /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -112,18 +175,18 @@
 		B526257025C874F9003E73B7 /* Map */ = {
 			isa = PBXGroup;
 			children = (
+				B523C77525CA181100C44061 /* MapColor.swift */,
+				B5CF75CD25CC7953003BFF3D /* MapParser */,
+				B539516A25CB0C7800959F72 /* State */,
 				B52625B425C87D54003E73B7 /* Extensions */,
-				B526257125C874F9003E73B7 /* MapApp.swift */,
-				B526257325C874F9003E73B7 /* ContentView.swift */,
+				B539517925CB0D6100959F72 /* Views */,
+				B523C75825C9FD3A00C44061 /* MapRenderComponents */,
 				B526257525C874FA003E73B7 /* Assets.xcassets */,
-				B526257A25C874FA003E73B7 /* Persistence.swift */,
 				B526257F25C874FA003E73B7 /* Info.plist */,
 				B526258025C874FA003E73B7 /* Map.entitlements */,
 				B526257C25C874FA003E73B7 /* Map.xcdatamodeld */,
 				B526257725C874FA003E73B7 /* Preview Content */,
-				B52625A525C876C3003E73B7 /* MapDetail.swift */,
-				B52625AF25C87C14003E73B7 /* MapRender.swift */,
-				B52625C525C8BD2A003E73B7 /* Stage.swift */,
+				B5CF75F625CC97CA003BFF3D /* Debouncer.swift */,
 			);
 			path = Map;
 			sourceTree = "<group>";
@@ -159,11 +222,57 @@
 			children = (
 				B52625BA25C884C2003E73B7 /* Map+parse.swift */,
 				B52625AA25C87909003E73B7 /* Date+format.swift */,
-				B52625B525C87D69003E73B7 /* Binding+unwrap.swift */,
+				B523C73C25C98D9800C44061 /* NSImage+writePNG.swift */,
 			);
 			path = Extensions;
 			sourceTree = "<group>";
 		};
+		B539516A25CB0C7800959F72 /* State */ = {
+			isa = PBXGroup;
+			children = (
+				B52625C525C8BD2A003E73B7 /* Stage.swift */,
+				B526257A25C874FA003E73B7 /* Persistence.swift */,
+				B539516B25CB0C9200959F72 /* Store.swift */,
+				B539517325CB0CA400959F72 /* AppState.swift */,
+			);
+			path = State;
+			sourceTree = "<group>";
+		};
+		B539517925CB0D6100959F72 /* Views */ = {
+			isa = PBXGroup;
+			children = (
+				B526257125C874F9003E73B7 /* MapApp.swift */,
+				B526257325C874F9003E73B7 /* ContentView.swift */,
+				B52625A525C876C3003E73B7 /* MapDetail.swift */,
+				B523C74A25C9C1BA00C44061 /* DefaultMapView.swift */,
+				B539518025CB2D7A00959F72 /* MapTextEditor.swift */,
+				B52625AF25C87C14003E73B7 /* MapRender.swift */,
+				B5CF75C825CC19FC003BFF3D /* EvolutionPicker.swift */,
+			);
+			path = Views;
+			sourceTree = "<group>";
+		};
+		B5CF75CD25CC7953003BFF3D /* MapParser */ = {
+			isa = PBXGroup;
+			children = (
+				B5CF75D625CC79A4003BFF3D /* Strategies */,
+				B5CF75CE25CC7965003BFF3D /* MapParser.swift */,
+			);
+			path = MapParser;
+			sourceTree = "<group>";
+		};
+		B5CF75D625CC79A4003BFF3D /* Strategies */ = {
+			isa = PBXGroup;
+			children = (
+				B5CF75D725CC79BC003BFF3D /* VertexParserStrategy.swift */,
+				B5CF75DC25CC79D7003BFF3D /* EdgeParserStrategy.swift */,
+				B5CF75E125CC79ED003BFF3D /* BlockerParserStrategy.swift */,
+				B5CF75E925CC7A13003BFF3D /* OpportunityParserStrategy.swift */,
+				B5CF75EE25CC7A4A003BFF3D /* StageParserStrategy.swift */,
+			);
+			path = Strategies;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -294,15 +403,34 @@
 			buildActionMask = 2147483647;
 			files = (
 				B52625B025C87C14003E73B7 /* MapRender.swift in Sources */,
+				B523C77E25CA294C00C44061 /* MapOpportunities.swift in Sources */,
 				B52625AB25C87909003E73B7 /* Date+format.swift in Sources */,
-				B52625B625C87D69003E73B7 /* Binding+unwrap.swift in Sources */,
+				B5CF75D825CC79BC003BFF3D /* VertexParserStrategy.swift in Sources */,
+				B5CF75EA25CC7A13003BFF3D /* OpportunityParserStrategy.swift in Sources */,
+				B523C77125CA121300C44061 /* MapBlockers.swift in Sources */,
+				B523C76725CA071B00C44061 /* MapVertices.swift in Sources */,
+				B5CF75CF25CC7965003BFF3D /* MapParser.swift in Sources */,
+				B5CF75E225CC79ED003BFF3D /* BlockerParserStrategy.swift in Sources */,
+				B539517425CB0CA400959F72 /* AppState.swift in Sources */,
+				B523C75A25C9FD4900C44061 /* MapAxes.swift in Sources */,
+				B539518125CB2D7A00959F72 /* MapTextEditor.swift in Sources */,
 				B52625BB25C884C2003E73B7 /* Map+parse.swift in Sources */,
 				B52625C625C8BD2A003E73B7 /* Stage.swift in Sources */,
+				B523C73D25C98D9800C44061 /* NSImage+writePNG.swift in Sources */,
 				B526257B25C874FA003E73B7 /* Persistence.swift in Sources */,
+				B5CF75EF25CC7A4A003BFF3D /* StageParserStrategy.swift in Sources */,
+				B523C77625CA181100C44061 /* MapColor.swift in Sources */,
+				B5CF75DD25CC79D7003BFF3D /* EdgeParserStrategy.swift in Sources */,
 				B526257425C874F9003E73B7 /* ContentView.swift in Sources */,
 				B526257E25C874FA003E73B7 /* Map.xcdatamodeld in Sources */,
+				B5CF75C925CC19FC003BFF3D /* EvolutionPicker.swift in Sources */,
+				B523C74B25C9C1BA00C44061 /* DefaultMapView.swift in Sources */,
+				B539516C25CB0C9300959F72 /* Store.swift in Sources */,
 				B526257225C874F9003E73B7 /* MapApp.swift in Sources */,
 				B52625A625C876C3003E73B7 /* MapDetail.swift in Sources */,
+				B523C76225CA05A300C44061 /* MapStages.swift in Sources */,
+				B5CF75F725CC97CA003BFF3D /* Debouncer.swift in Sources */,
+				B523C76C25CA0DFA00C44061 /* MapEdges.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -470,7 +598,8 @@
 					"$(inherited)",
 					"@executable_path/../Frameworks",
 				);
-				MACOSX_DEPLOYMENT_TARGET = 11.0;
+				MACOSX_DEPLOYMENT_TARGET = 11;
+				MARKETING_VERSION = 1.1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.Map;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_VERSION = 5.0;
@@ -494,7 +623,8 @@
 					"$(inherited)",
 					"@executable_path/../Frameworks",
 				);
-				MACOSX_DEPLOYMENT_TARGET = 11.0;
+				MACOSX_DEPLOYMENT_TARGET = 11;
+				MARKETING_VERSION = 1.1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = pizza.unlimited.Map;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_VERSION = 5.0;