public void QueueIncident(FiringIncident incident, float afterDays)
        {
            var qi = new QueuedIncident(incident, (int)(Find.TickManager.TicksGame + GenDate.TicksPerDay * afterDays));

            incidentQueue.Add(qi);
            //Log.Message("Queued Hospitality incident after " + afterDays + " days. Queue has now " + incidentQueue.Count + " items.");
        }
예제 #2
0
        private static void RemoveSomeIncidents(IncidentQueue incidentQueue)
        {
            const int     rangeOfDays = 3;
            IncidentQueue backupQueue = new IncidentQueue();

            bool skip      = true;
            int  amount    = 0;
            int  newAmount = 0;

            // Copy and thin
            foreach (QueuedIncident incident in incidentQueue)
            {
                // After range of days copy everything
                if (incident.FireTick - GenTicks.TicksGame >= GenDate.TicksPerDay * rangeOfDays)
                {
                    backupQueue.Add(incident);
                }
                else
                {
                    // Before, copy every second incident
                    amount++;
                    if (!skip)
                    {
                        backupQueue.Add(incident);
                        newAmount++;
                    }
                    skip = !skip;
                }
            }
            // Add them back
            incidentQueue.Clear();
            foreach (QueuedIncident incident in backupQueue)
            {
                incidentQueue.Add(incident);
            }

            Log.Message($"Reduced {amount} visits to {newAmount}, by cancelling every 2nd within the next {rangeOfDays} days.");
        }