Esempio n. 1
0
    public PickupEntity CreatePickup(Transform parent, IPickup pickup, bool invulnerable = false)
    {
        PickupEntity result = Instantiate(pickupEntityPrefab, parent) as PickupEntity;

        result.Init(pickup);
        return(result);
    }
Esempio n. 2
0
    public void SpawnPickup(string prefabName, Vector3 position)
    {
        if (!isServer || string.IsNullOrEmpty(prefabName))
        {
            return;
        }
        PickupEntity pickupPrefab = null;

        if (pickupEntities.TryGetValue(prefabName, out pickupPrefab))
        {
            var pickupEntity = Instantiate(pickupPrefab, position, Quaternion.identity);
            pickupEntity.prefabName = prefabName;
            NetworkServer.Spawn(pickupEntity.gameObject);
        }
    }
Esempio n. 3
0
    private void RegisterPriorityDirectories()
    {
        int iterations = 99;
        List <Directory> availableDirectories = new List <Directory>();
        List <Directory> sshLocations         = new List <Directory>();

        availableDirectories.AddRange(leafDirectories);
        availableDirectories.AddRange(branchDirectories);
        while (availableDirectories.Count > 2 && priorityDirectories.Count < levelIndex && iterations > 0)
        {
            iterations--;
            availableDirectories = RandomUtil.Shuffle <Directory>(availableDirectories);

            if (availableDirectories.Count == 0)
            {
                return;
            }
            Directory randomDirToLock = availableDirectories[0];
            randomDirToLock.GetComponentsInChildren <Directory>().ToList().ForEach(d => availableDirectories.Remove(d));
            if (availableDirectories.Count == 0)
            {
                return;
            }

            List <Directory> lockedLeaves = HostHandler.I.currentHost.GetLeafDirectories(randomDirToLock);
            if (lockedLeaves.Count == 0)
            {
                continue;
            }
            lockedLeaves = RandomUtil.Shuffle <Directory>(lockedLeaves);
            sshLocations.AddRange(lockedLeaves);

            Directory priorityDir = lockedLeaves[0];
            priorityDirectories.Add(priorityDir);
            Directory keyDirectory = availableDirectories[0];
            priorityDirectories.Add(keyDirectory);

            directoryKeyTemplate.path = randomDirToLock.GetFullPath();
            PickupEntity directoryKey = PickupHandler.I.CreatePickup(keyDirectory.transform, directoryKeyTemplate, true);
            randomDirToLock.bannedFactions.Add(EntityFaction.HACKER);
        }
        sshLocations = RandomUtil.Shuffle <Directory>(sshLocations);
        if (sshLocations.Count == 0)
        {
            sshLocations.Add(leafDirectories[0]);
        }
        PickupEntity sshKey = PickupHandler.I.CreatePickup(sshLocations[0].transform, this.sshKey, true);
    }
Esempio n. 4
0
    public GameObject GetPickupPrefab(PickupEntity pickupEntity)
    {
        switch (pickupEntity.pickupType)
        {
        case PickupType.CONSUMABLE:
            return(consumablePrefab);

        case PickupType.COMMAND:
            return(commandPrefab);

        case PickupType.KEY:
            return(keyPrefab);

        case PickupType.COMPONENT:
            return(componentPrefab);
        }
        return(null);
    }