public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption)
 {
     return(new AreaZoneConsumptionOverrideInfoResult(
                resultingAreaConsumption: consumption,
                toBeDeployedAreaConsumption: consumption
                ));
 }
Beispiel #2
0
 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;
     }));
 }
Beispiel #6
0
        public override IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption)
        {
            if (ParentBaseZoneClusterConsumption.ClusterMembersAreUnlocked)
            {
                return(new AreaZoneConsumptionOverrideInfoResult(consumption, consumption));
            }

            return(new AreaZoneConsumptionOverrideInfoResult(
                       resultingAreaConsumption: this,
                       toBeDeployedAreaConsumption: consumption
                       ));
        }
Beispiel #7
0
        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));
        }
Beispiel #11
0
 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;
 }
Beispiel #17
0
 public abstract IGetCanOverrideWithResult GetCanOverrideWith(IAreaZoneConsumption consumption);
Beispiel #18
0
 protected override bool IsConnected(IAreaZoneConsumption consumption) => TryIsConnected(consumption).Any(x => x);