示例#1
0
    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);
    }
示例#2
0
    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);
    }
示例#3
0
    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));
    }
示例#4
0
    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);
    }