public void SetVehicleCapacity(string assetName, int newCapacity) { VehicleInfo vehicle = PrefabCollection <VehicleInfo> .FindLoaded(assetName); if (vehicle != null && !VehicleUtils.IsTrailer(vehicle)) { Dictionary <string, MutableTuple <float, int> > assetsCapacitiesPercentagePerTrailer = GetCapacityRelative(vehicle); int capacityUsed = 0; foreach (KeyValuePair <string, MutableTuple <float, int> > entry in assetsCapacitiesPercentagePerTrailer) { SafeGetAsset(entry.Key).Capacity = Mathf.RoundToInt(newCapacity <= 0 ? -1f : entry.Value.First *newCapacity); capacityUsed += SafeGetAsset(entry.Key).Capacity *entry.Value.Second; } if (newCapacity > 0 && capacityUsed != newCapacity) { SafeGetAsset(assetsCapacitiesPercentagePerTrailer.Keys.ElementAt(0)).Capacity += (newCapacity - capacityUsed) / assetsCapacitiesPercentagePerTrailer[assetsCapacitiesPercentagePerTrailer.Keys.ElementAt(0)].Second; } foreach (string entry in assetsCapacitiesPercentagePerTrailer.Keys) { VehicleAI vai = PrefabCollection <VehicleInfo> .FindLoaded(entry).m_vehicleAI; SetVehicleCapacity(vai, SafeGetAsset(entry).Capacity); } SimulationManager.instance.StartCoroutine(TLMVehicleUtils.UpdateCapacityUnitsFromTSD()); } }
private void InitCapacitiesInAssets() { var keys = AssetConfigurations.Keys.ToList(); foreach (string entry in keys) { try { VehicleInfo info = PrefabCollection <VehicleInfo> .FindLoaded(entry); if (info != null) { VehicleAI ai = info.m_vehicleAI; UpdateDefaultCapacity(ai); SetVehicleCapacity(ai, SafeGetAsset(entry).Capacity); } else { AssetConfigurations.Remove(entry); } } catch (Exception e) { LogUtils.DoErrorLog($"ERROR LOADING ASSET CONFIG: {e}=> {e.Message}\n{e.StackTrace}"); } } SimulationManager.instance.StartCoroutine(TLMVehicleUtils.UpdateCapacityUnitsFromTSD()); }
private void CreateRemoveUndesiredModelsButton() { KlyteMonoUtils.CreateUIElement <UIButton>(out UIButton removeUndesired, MainPanel.transform); removeUndesired.relativePosition = new Vector3(MainPanel.width - 25f, 0f); removeUndesired.textScale = 0.6f; removeUndesired.width = 20; removeUndesired.height = 20; removeUndesired.tooltip = Locale.Get("K45_TLM_REMOVE_UNWANTED_TOOLTIP"); KlyteMonoUtils.InitButton(removeUndesired, true, "ButtonMenu"); removeUndesired.name = "DeleteLineButton"; removeUndesired.isVisible = true; removeUndesired.eventClick += (component, eventParam) => { TLMVehicleUtils.RemoveAllUnwantedVehicles(); }; UISprite icon = removeUndesired.AddUIComponent <UISprite>(); icon.relativePosition = new Vector3(2, 2); icon.width = 18; icon.height = 18; icon.spriteName = KlyteResourceLoader.GetDefaultSpriteNameFor(CommonsSpriteNames.K45_RemoveUnwantedIcon); }