Exemplo n.º 1
0
        /// <summary>
        /// Processes the city events simulation step. The method can be called frequently, but the processing occurs periodically
        /// at an interval specified by <see cref="EventProcessInterval"/>.
        /// </summary>
        public void ProcessEvents()
        {
            if (RemoveCanceledEvents())
            {
                OnEventsChanged();
            }

            if ((timeInfo.Now - lastProcessed) < EventProcessInterval)
            {
                return;
            }

            lastProcessed = timeInfo.Now;

            Update();
            if (upcomingEvents.Count >= MaximumEventsCount || !config.AreEventsEnabled)
            {
                return;
            }

            ushort building = buildingManager.GetRandomBuilding(EventBuildingServices);

            if (!buildingManager.BuildingHasFlags(building, Building.Flags.Active))
            {
                return;
            }

            CreateRandomEvent(building);
        }
Exemplo n.º 2
0
        public void ProcessEvents()
        {
            if ((timeInfo.Now - lastProcessed) < EventProcessInterval)
            {
                return;
            }

            lastProcessed = timeInfo.Now;

            Update();
            if (upcomingEvents.Count >= MaximumEventsCount)
            {
                return;
            }

            ushort building = buildingManager.GetRandomBuilding(EventBuildingServices);

            if (!buildingManager.BuildingHasFlags(building, Building.Flags.Active))
            {
                return;
            }

            CreateRandomEvent(building);
        }