Example #1
0
        private IEnumerator AddTree(int x, int y, ColossalFramework.Math.Randomizer rr, TreeInfo tree)
        {
            uint treeNum;

            TreeManager.instance.CreateTree(out treeNum, ref rr, tree, new Vector3(x, 0, y), false);
            yield return(null);
        }
Example #2
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 #3
0
        private IEnumerator AddTree(double x, double y, ColossalFramework.Math.Randomizer rr, TreeInfo tree)
        {
            //RaiseTreeMapperEvent (string.Format ("Added Tree {0} {1}", x, y));

            uint        treeNum;
            TreeManager tree_manager = TreeManager.instance;

            try
            {
                tree_manager.CreateTree(out treeNum, ref rr, tree, new Vector3((float)x, 0, (float)y), false);
            }
            catch (Exception ex)
            {
                //try-catch just to prevent crashing by ignoring invalid trees and letting valid trees get created
                //RaiseTreeMapperEvent (ex.Message);
            }
            yield return(null);
        }
Example #4
0
        public void CalculateLevels(ColossalFramework.Math.Randomizer r, int width, int length, out int level0, out int level1, out int level2, out int level3)
        {
            ItemClass itemClass = this.m_info.m_class;

            ItemClass.SubService subService = itemClass.m_subService;
            int[] workplaceDistribution     = { 0, 0, 0, 0, 0 };

            if (m_ricoData.workplaceDistribution != null)
            {
                workplaceDistribution = m_ricoData.workplaceDistribution;
            }
            else
            if (itemClass.m_subService == ItemClass.SubService.IndustrialGeneric)
            {
                if (itemClass.m_level == ItemClass.Level.Level1)
                {
                    workplaceDistribution = new int[] { 100, 100, 0, 0, 0 }
                }
            }
            ;
Example #5
0
        /// <summary>
        /// Creates the service vehicle.
        /// </summary>
        /// <param name="serviceBuildingId">The service building identifier.</param>
        /// <param name="material">The material.</param>
        /// <param name="targetBuildingId">The target building identifier.</param>
        /// <param name="targetCitizenId">The target citizen identifier.</param>
        /// <param name="vehicleId">The vehicle identifier.</param>
        /// <returns>
        /// The vehicle information.
        /// </returns>
        /// <exception cref="System.NotImplementedException">Target citizen not implemented yet.</exception>
        /// <exception cref="System.InvalidOperationException">Hospital assigments reuires target citizen.</exception>
        /// <exception cref="System.ArgumentException">Unhandled material.</exception>
        /// <exception cref="ArgumentException">Unhandled material.</exception>
        public static VehicleInfo CreateServiceVehicle(ushort serviceBuildingId, TransferManager.TransferReason material, ushort targetBuildingId, uint targetCitizenId, out ushort vehicleId)
        {
            if (targetCitizenId != 0)
            {
                throw new NotImplementedException("Target citizen not implemented yet");
            }

            vehicleId = 0;

            VehicleManager manager = Singleton <VehicleManager> .instance;

            ColossalFramework.Math.Randomizer randomizer = Singleton <SimulationManager> .instance.m_randomizer;

            Building building = BuildingHelper.GetBuilding(serviceBuildingId);

            if (building.Info.m_buildingAI is HospitalAI && targetCitizenId == 0)
            {
                throw new InvalidOperationException("Hospital assigments reuires target citizen");
            }

            VehicleInfo info = manager.GetRandomVehicleInfo(ref randomizer, building.Info.m_class.m_service, building.Info.m_class.m_subService, building.Info.m_class.m_level);

            if (info == null)
            {
                Log.Debug(typeof(VehicleKeeper), "CreateVehicle", "GetRandomVehicleInfo", "no vehicle");
                return(null);
            }

            bool transferToSource;
            bool transferToTarget;

            switch (material)
            {
            case TransferManager.TransferReason.Dead:
                transferToSource = true;
                transferToTarget = false;
                break;

            case TransferManager.TransferReason.DeadMove:
                transferToSource = false;
                transferToTarget = true;
                break;

            case TransferManager.TransferReason.Garbage:
                transferToSource = true;
                transferToTarget = false;
                break;

            case TransferManager.TransferReason.GarbageMove:
                transferToSource = false;
                transferToTarget = true;
                break;

            default:
                throw new ArgumentException("Unhandled material: " + material.ToString());
            }

            if (!manager.CreateVehicle(out vehicleId, ref randomizer, info, building.m_position, material, transferToSource, transferToTarget))
            {
                Log.Debug(typeof(VehicleKeeper), "CreateVehicle", "CreateVehicle", "not created");
                return(null);
            }

            info.m_vehicleAI.SetSource(vehicleId, ref manager.m_vehicles.m_buffer[vehicleId], serviceBuildingId);

            if (targetBuildingId != 0 && !AssignTarget(vehicleId, ref manager.m_vehicles.m_buffer[vehicleId], material, targetBuildingId, 0))
            {
                Log.Debug(typeof(VehicleKeeper), "CreateVehicle", "SetTarget", "target not set");
                return(null);
            }

            return(info);
        }