public void OnNewWorld(IWorldView worldView)
        {
            Contract.Requires(worldView != null);

            this.buildingModel       = worldView.Buildings.GetTypedComponents <int>(Buildings.BuildingModelComponent);
            this.buildingConnections = worldView.Buildings.GetTypedComponents <ISet <int> >(Buildings.ConnectionsComponent);
        }
        public void OnNewWorld(World world)
        {
            Contract.Requires(world != null);

            this.buildingLocation      = world.Buildings.GetTypedComponents <Vector>(Buildings.LocationComponent);
            this.buildingTransportLink = world.Buildings.GetMutableTypedComponents <Vector?>(Buildings.TransportLinkComponent);
        }
Пример #3
0
        public BuildingLayer(IWorldView worldView)
        {
            this.buildingMap      = worldView.GetBuildingMapView();
            this.buildingVariants = worldView.Buildings.GetTypedComponents <int>(BuildingVariants.Component);
            this.zoneMap          = worldView.GetZoneMapView();

            var buildingColor = worldView.Rules.Zones.GetTypedComponents <BuildingColor>(Component);

            this.buildingColorProvider = (zoneId, buildingId) => buildingColor[zoneId].Invoke(buildingId);
        }
        /// <summary>
        /// Returns all the components corresponding to the matching predicate.
        /// </summary>
        public static IEnumerable <T> GetMatchingComponents <T>(this IReadOnlyTypedComponents <T> typedComponents, Func <T, bool> predicate)
        {
            Contract.Requires(typedComponents != null);

            IEnumerable <int> entitiesIds = typedComponents.GetMatchingEntities(predicate);

            foreach (int entityId in entitiesIds)
            {
                yield return(typedComponents[entityId]);
            }
        }
Пример #5
0
        public void OnNewWorld(IWorldView worldView)
        {
            Contract.Requires(worldView != null);

            this.transportGraph = worldView.GetTransportGraph();

            this.randomResourceProvider.OnNewWorld(worldView);
            this.buidlingResourceProductions = worldView.Rules.BuildingModels
                                               .GetTypedComponents <BuildingResourceProduction[]>(BuildingModels.BuildingModelResourceProductionComponent);

            this.path = worldView.CreatePath();
        }
        public void OnNewWorld(IWorldView worldView)
        {
            Contract.Requires(worldView != null);

            this.random = worldView.Rules.Random;

            this.producersForResource = new Dictionary <int, RandomAccessSet <Vector> >();
            this.consumersForResource = new Dictionary <int, RandomAccessSet <Vector> >();

            this.buildingModelsResourceProduction = worldView.Rules.BuildingModels.GetTypedComponents <BuildingResourceProduction[]>(
                BuildingModels.BuildingModelResourceProductionComponent);
            this.defaultZoneBuildingModels = worldView.Rules.Zones.GetTypedComponents <int>(Zones.DefaultBuildingModel);
            this.buildingMap = worldView.GetMapView <int>(MapTypes.Building);
            this.zoneMap     = worldView.GetMapView <int>(MapTypes.Zone);

            this.zoneMap.RegisterListener(this.OnZoneMapUpdate);
            worldView.GetMapView <int>(MapTypes.Building).RegisterListener(this.OnBuildingMapUpdate);

            this.buildingTransportLinkComponent = worldView.Buildings.GetTypedComponents <Vector?>(Buildings.TransportLinkComponent);
        }
 public ZonerBuilder(IWorldView worldView)
 {
     this.zones     = worldView.Rules.Zones;
     this.zoneColor = this.zones.GetTypedComponents <Color?>(ZoneLayer.Component);
 }
        /// <summary>
        /// Returns true if the component corresponding to the given entity id is true.
        /// </summary>
        public static bool IsMarked(this IReadOnlyTypedComponents <bool> boolComponents, int entityId)
        {
            Contract.Requires(boolComponents != null);

            return(boolComponents[entityId]);
        }