public void SpawnPreassignedModules() { if (!spawnSettings.useSpawnSettings || CollectionEx.IsNullOrEmpty(spawnSettings.configurationOptions)) { return; } ModularCarPresetConfig modularCarPresetConfig = spawnSettings.configurationOptions[UnityEngine.Random.Range(0, spawnSettings.configurationOptions.Length)]; if (Interface.CallHook("OnVehicleModulesAssign", this, modularCarPresetConfig.socketItemDefs) != null) { return; } for (int i = 0; i < modularCarPresetConfig.socketItemDefs.Length; i++) { ItemModVehicleModule itemModVehicleModule = modularCarPresetConfig.socketItemDefs[i]; if (itemModVehicleModule != null && base.Inventory.SocketsAreFree(i, itemModVehicleModule.socketsTaken)) { itemModVehicleModule.doNonUserSpawn = true; Item item = ItemManager.Create(itemModVehicleModule.GetComponent <ItemDefinition>(), 1, 0uL); float num = UnityEngine.Random.Range(spawnSettings.minStartHealthPercent, spawnSettings.maxStartHealthPercent); item.condition = item.maxCondition * num; if (!TryAddModule(item)) { item.Remove(); } } } Interface.CallHook("OnVehicleModulesAssigned", this, modularCarPresetConfig.socketItemDefs); }
public BaseVehicleModule CreatePhysicalModuleEntity(Item moduleItem, ItemModVehicleModule itemModModule, int socketIndex) { Vector3 worldPosition = moduleSockets[socketIndex].WorldPosition; Quaternion worldRotation = moduleSockets[socketIndex].WorldRotation; BaseVehicleModule baseVehicleModule = itemModModule.CreateModuleEntity(this, worldPosition, worldRotation); baseVehicleModule.AssociatedItemInstance = moduleItem; SetUpModule(baseVehicleModule, moduleItem); return(baseVehicleModule); }
public bool TryAddModule(Item moduleItem) { ItemModVehicleModule component = moduleItem.info.GetComponent <ItemModVehicleModule>(); if (component == null) { return(false); } int socketsTaken = component.socketsTaken; int num = Inventory.TryGetFreeSocket(socketsTaken); if (num < 0) { return(false); } return(TryAddModule(moduleItem, num)); }
public bool ModuleCanBeAdded(Item moduleItem, int socketIndex, out string failureReason) { if (!base.isServer) { failureReason = "Can only add modules on server"; return(false); } if (moduleItem == null) { failureReason = "Module item is null"; return(false); } if (moduleItem.info.category != ItemCategory.Component) { failureReason = "Not a component type item"; return(false); } ItemModVehicleModule component = moduleItem.info.GetComponent <ItemModVehicleModule>(); if (component == null) { failureReason = "Not the right item module type"; return(false); } int socketsTaken = component.socketsTaken; if (socketIndex < 0) { socketIndex = Inventory.TryGetFreeSocket(socketsTaken); } if (!Inventory.SocketsAreFree(socketIndex, socketsTaken, moduleItem)) { failureReason = "One or more desired sockets already in use"; return(false); } failureReason = string.Empty; return(true); }