3 using System.Collections.Generic;
21 private Dictionary<LaneType, LaneBuildingRenderer> laneTypeToRenderer;
36 private LaneType previousLaneType;
46 this.laneTypeToRenderer = laneTypeToRenderer;
47 this.topologyRenderer = topologyRenderer;
48 currentLaneBuildingRenderer = laneTypeToRenderer[previousLaneType];
55 internal void LaneTypeWasChanged()
57 if (previousLaneType != canvasViewModel.CurrentLaneType)
59 foreach (KeyValuePair<LaneType, LaneBuildingRenderer> laneTypeRendererTuple
in laneTypeToRenderer)
61 if (laneTypeRendererTuple.Key == canvasViewModel.CurrentLaneType)
63 laneTypeToRenderer[canvasViewModel.CurrentLaneType].TransferPoints(currentLaneBuildingRenderer);
66 currentLaneBuildingRenderer = laneTypeToRenderer[canvasViewModel.CurrentLaneType];
67 foreach (KeyValuePair<LaneType, LaneBuildingRenderer> laneTypeRendererTuple
in laneTypeToRenderer)
69 if (laneTypeRendererTuple.Key != canvasViewModel.CurrentLaneType)
71 laneTypeRendererTuple.Value.ResetRendererAndClearAnyPreview();
74 currentLaneBuildingRenderer.RenderBuildingLane();
75 previousLaneType = canvasViewModel.CurrentLaneType;
82 internal void ClearPreviewOfBuildingOfAnyRoads()
84 currentLaneBuildingRenderer.ResetRendererAndClearAnyPreview();
93 internal void MouseLeftButtonUp(Point cursorCanvasLocation)
95 if (currentLaneBuildingRenderer.IsSomePointBeingDragged)
98 currentLaneBuildingRenderer.ResetDraggingOfPoint();
100 else if (currentLaneBuildingRenderer.IsLaneDefined)
103 if (canvasViewModel.CurrentLaneType == LaneType.Straight)
105 canvasViewModel.BuildNewStraightLane(currentLaneBuildingRenderer.StartWorldPoint.Value,
106 currentLaneBuildingRenderer.EndWorldPoint.Value);
108 else if (canvasViewModel.CurrentLaneType == LaneType.Bezier)
112 canvasViewModel.BuildNewBezierLaneLane(bezierLaneBuildingRenderer.StartWorldPoint.Value,
115 bezierLaneBuildingRenderer.EndWorldPoint.Value);
117 currentLaneBuildingRenderer.ResetRendererAndClearAnyPreview();
118 topologyRenderer.RenderTopology();
123 currentLaneBuildingRenderer.SetPoint(cursorCanvasLocation);
131 internal void MouseLeftButtonDown(Point cursorCanvasLocation)
133 if (currentLaneBuildingRenderer.IsLaneDefined)
135 currentLaneBuildingRenderer.InitializeDraggingModeOfAPointIfAnyIsNear(cursorCanvasLocation);
143 internal void RenderBuildingLane(Point cursorCanvasLocation)
145 currentLaneBuildingRenderer.RenderBuildingLane(cursorCanvasLocation);
152 internal void MovePointOfLaneIfCursorIsNear(Point cursorCanvasLocation)
154 if (currentLaneBuildingRenderer.IsLaneDefined)
156 currentLaneBuildingRenderer.MovePointOfLane(cursorCanvasLocation);
166 this.canvasViewModel = canvasViewModel;
Geometric topology renderer.
Renderer for drawing bezier lanes during their building.
Previewer of building roads on canvas.
Point SecondWorldControlPoint
The second control point of a previewing building lane.
Viewmodel for canvas panel.
Renderer for drawing lanes during their building.
Point FirstWorldControlPoint
The first control point of a previewing building lane.