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); }
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 }; } }
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); }
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 } } } ;
/// <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); }