Example #1
0
 public override void CalculateWorkplaceCount(ItemClass.Level level, ColossalFramework.Math.Randomizer r, int width, int length, out int level0, out int level1, out int level2, out int level3)
 {
     // See IndustrialAI.cs
     if (workplaceCount != null)
     {
         WorkplaceAIHelper.SetWorkplaceLevels(out level0, out level1, out level2, out level3, workplaceCount);
     }
     else
     {
         WorkplaceAIHelper.CalculateWorkplaceCount(level, m_ricoData, this, r, width, length, out level0, out level1, out level2, out level3);
         workplaceCount = new int[] { level0, level1, level2, level3 };
     }
 }
Example #2
0
 public override void CalculateWorkplaceCount(Randomizer r, int width, int length, out int level0, out int level1, out int level2, out int level3)
 {
     // For some reason CalculateWorkplaceCount gets called every two seconds or so for every rico building currently plopped.
     // It's the bottleneck of the mod.
     // So we cache the calculation results, which might save a few cpu cycles.
     if (workplaceCount != null)
     {
         WorkplaceAIHelper.SetWorkplaceLevels(out level0, out level1, out level2, out level3, workplaceCount);
     }
     else
     {
         WorkplaceAIHelper.CalculateWorkplaceCount(m_ricoData, this, r, width, length, out level0, out level1, out level2, out level3);
         workplaceCount = new int[] { level0, level1, level2, level3 };
     }
 }
Example #3
0
        /// <summary>
        /// Calculates the workplaces for this building according to RICO settings.
        /// </summary>
        /// <param name="level">Building level</param>
        /// <param name="r">Randomizer</param>
        /// <param name="width">Building plot width (in cells)</param>
        /// <param name="length">Building plot length (in cells)</param>
        /// <param name="level0">The number of uneducated jobs</param>
        /// <param name="level1">The number of educated jobs</param>
        /// <param name="level2">The number of well-educated jobs</param>
        /// <param name="level3">The number of highly-educated jobs</param>
        public override void CalculateWorkplaceCount(ItemClass.Level level, Randomizer r, int width, int length, out int level0, out int level1, out int level2, out int level3)
        {
            // CalculateWorkplaceCount is called by the game every couple of seconds.  Why?  Who knows?
            // This makes it a potential performance bottleneck; thus, we cache results to save some CPU cycles.
            // Results are cached in workplaceCount.

            // Check to see if there's a cached value, and if so, use it.
            if (workplaceCount != null)
            {
                WorkplaceAIHelper.SetWorkplaceLevels(out level0, out level1, out level2, out level3, workplaceCount);
            }
            else
            {
                // If nothing is cached, then perform initial calculation.
                WorkplaceAIHelper.CalculateWorkplaceCount(level, m_ricoData, this, r, width, length, out level0, out level1, out level2, out level3);

                // Cache result.
                workplaceCount = new int[] { level0, level1, level2, level3 };
            }
        }
Example #4
0
 /// <summary>
 /// Calculates the workplaces for this building according to RICO settings.
 /// </summary>
 /// <param name="level">Building level</param>
 /// <param name="r">Randomizer</param>
 /// <param name="width">Building plot width (in cells)</param>
 /// <param name="length">Building plot length (in cells)</param>
 /// <param name="level0">The number of uneducated jobs</param>
 /// <param name="level1">The number of educated jobs</param>
 /// <param name="level2">The number of well-educated jobs</param>
 /// <param name="level3">The number of highly-educated jobs</param>
 public override void CalculateWorkplaceCount(ItemClass.Level level, Randomizer r, int width, int length, out int level0, out int level1, out int level2, out int level3) => WorkplaceAIHelper.CalculateWorkplaceCount(level, m_ricoData, this, r, width, length, out level0, out level1, out level2, out level3);