public PickupEntity CreatePickup(Transform parent, IPickup pickup, bool invulnerable = false) { PickupEntity result = Instantiate(pickupEntityPrefab, parent) as PickupEntity; result.Init(pickup); return(result); }
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); } }
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); }
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); }