public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { return(new AreaZoneConsumptionOverrideInfoResult( resultingAreaConsumption: consumption, toBeDeployedAreaConsumption: consumption )); }
public SolidBrush GetBrushFor(IAreaZoneConsumption consumption) { if (consumption != _currentAreaZoneConsumption) { _currentBrush = new SolidBrush(consumption.Color.ToSysDrawingColor()); _currentAreaZoneConsumption = consumption; } return(_currentBrush); }
public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { if (consumption is EmptyZoneConsumption) { return(new AreaZoneConsumptionOverrideInfoResult( resultingAreaConsumption: consumption, toBeDeployedAreaConsumption: consumption )); } if (GetIsCornered()) { return(new AreaZoneConsumptionOverrideInfoResult(this, consumption)); } if (consumption is BaseInfrastructureNetworkZoneConsumption && GetType() != consumption.GetType()) { IntersectingZoneConsumption intersectingZoneConsumption = null; switch (GetOrientation()) { case Orientation.NorthSouth: intersectingZoneConsumption = new IntersectingZoneConsumption( zoneInfoFinder: NeighborNavigator, eastWestZoneConsumption: consumption as BaseInfrastructureNetworkZoneConsumption, northSouthZoneConsumption: this ); break; case Orientation.EastWest: intersectingZoneConsumption = new IntersectingZoneConsumption( zoneInfoFinder: NeighborNavigator, eastWestZoneConsumption: this, northSouthZoneConsumption: consumption as BaseInfrastructureNetworkZoneConsumption ); break; } if (intersectingZoneConsumption != null) { return(new AreaZoneConsumptionOverrideInfoResult( intersectingZoneConsumption, intersectingZoneConsumption)); } } if (CanBeOverriddenByZoneClusters && consumption is ZoneClusterMemberConsumption) { return(new AreaZoneConsumptionOverrideInfoResult( resultingAreaConsumption: consumption, toBeDeployedAreaConsumption: consumption )); } return(new AreaZoneConsumptionOverrideInfoResult( resultingAreaConsumption: this, toBeDeployedAreaConsumption: consumption )); }
public ZoneInfoSnapshot( ZonePoint point, IAreaZoneConsumption areaZoneConsumption, Func <IEnumerable <QueryResult <IZoneInfo, RelativeZoneInfoQuery> > > getNorthEastSouthWestFunc, TrafficDensity trafficDensity) { Point = point; AreaZoneConsumption = areaZoneConsumption; _getNorthEastSouthWestFunc = getNorthEastSouthWestFunc; TrafficDensity = trafficDensity; }
public IConsumeAreaOperation TryConsumeWith(IAreaZoneConsumption consumption) { if (consumption == null) { throw new ArgumentNullException(nameof(consumption)); } return(new ConsumeAreaOperation(_zoneConsumption.GetCanOverrideWith(consumption), (toBeDeployedConsumption) => { _zoneConsumption = toBeDeployedConsumption; LastUpdateDateTime = DateTime.Now; })); }
public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { if (ParentBaseZoneClusterConsumption.ClusterMembersAreUnlocked) { return(new AreaZoneConsumptionOverrideInfoResult(consumption, consumption)); } return(new AreaZoneConsumptionOverrideInfoResult( resultingAreaConsumption: this, toBeDeployedAreaConsumption: consumption )); }
private static IEnumerable <bool> TryIsConnected(IAreaZoneConsumption consumption) { yield return((consumption as ZoneClusterMemberConsumption) .ToQueryResult() .WithResultIfHasMatch(x => x.ParentBaseZoneClusterConsumption is SeaPortZoneClusterConsumption)); yield return((consumption as IntersectingZoneConsumption) .ToQueryResult() .WithResultIfHasMatch( x => x.NorthSouthZoneConsumption is WaterZoneConsumption || x.EastWestZoneConsumption is WaterZoneConsumption)); }
public IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { if (consumption is EmptyZoneConsumption) { if (this.GetIntersectingTypes().Contains(typeof(WaterZoneConsumption))) { var waterZone = new WaterZoneConsumption(_zoneInfoFinder); return(new AreaZoneConsumptionOverrideInfoResult(waterZone, waterZone)); } return(new AreaZoneConsumptionOverrideInfoResult(consumption, consumption)); } else { return(new AreaZoneConsumptionOverrideInfoResult(this, consumption)); } }
public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { if (consumption is RoadZoneConsumption) { return(GenerateBridgingOverrideInfoResult(consumption as RoadZoneConsumption)); } else if (consumption is RailRoadZoneConsumption) { return(GenerateBridgingOverrideInfoResult(consumption as RailRoadZoneConsumption)); } else if (consumption is PowerLineConsumption) { return(GenerateBridgingOverrideInfoResult(consumption as PowerLineConsumption)); } return(new AreaZoneConsumptionOverrideInfoResult(this, consumption)); }
public QueryResult <IZoneInfo> GetZoneInfoFor(IAreaZoneConsumption zoneConsumption) { var match = zoneConsumption is BaseNetworkZoneConsumption?ZoneInfos .FirstOrDefault(x => { var consumption = x.Value.ConsumptionState.GetZoneConsumption(); if (consumption == zoneConsumption) { return(true); } var intersection = consumption as IntersectingZoneConsumption; return(intersection != null && intersection.GetIntersectingZoneConsumptions().Any(y => y == zoneConsumption)); }) : ZoneInfos.FirstOrDefault(x => x.Value.ConsumptionState.GetZoneConsumption() == zoneConsumption); return(QueryResult <IZoneInfo> .Create(match.Value)); }
public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption) { return(new AreaZoneConsumptionOverrideInfoResult(consumption, consumption)); }
internal AreaZoneConsumptionOverrideInfoResult(IAreaZoneConsumption resultingAreaConsumption, IAreaZoneConsumption toBeDeployedAreaConsumption) { ResultingAreaConsumption = resultingAreaConsumption; ToBeDeployedAreaConsumption = toBeDeployedAreaConsumption; }
protected virtual bool IsConnected(IAreaZoneConsumption consumption) => false;
protected override bool IsConnected(IAreaZoneConsumption consumption) => consumption is ZoneClusterMemberConsumption;
public QueryResult <IZoneInfo> GetZoneInfoFor(IAreaZoneConsumption consumption) { return(_zoneInfo ?? (_zoneInfo = _getZoneInfoForConsumption(consumption))); }
public ZoneNeighborQuery(IAreaZoneConsumption areaZoneConsumption, int relativeX, int relativeY) { AreaZoneConsumption = areaZoneConsumption; RelativeX = relativeX; RelativeY = relativeY; }
public abstract IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption);
protected override bool IsConnected(IAreaZoneConsumption consumption) => TryIsConnected(consumption).Any(x => x);