void PickupWeapon() { ObjectPool pool = null; switch (weaponType) { case WeaponClass.Gun: pool = SpawnableObjects.Instance.GunWeaponSelectorPool; break; case WeaponClass.Melee: pool = SpawnableObjects.Instance.MeleeWeaponSelectorPool; break; } if (pool == null) { return; } WeaponFactionSelector selector = pool.create().GetComponent <WeaponFactionSelector>(); selector.transform.position = transform.position; selector.transform.parent = transform; _Character.PickupWeapon(selector); }
public void PickupWeapon(WeaponFactionSelector _weaponSelector) { if (!CanPickupWeapon) { return; } FactionWeapon weaponToInstantiate = null; for (int i = 0; i < _weaponSelector.weapons.Count; i++) { if (_weaponSelector.weapons[i].faction == CharacterFaction) { weaponToInstantiate = _weaponSelector.weapons[i]; break; } } if (weaponToInstantiate != null) { // drop current selector and pick new if (CurrentWeaponSelector != null) { //force destroy CurrentWeaponSelector.currentInstantiatedWeapon.Ammo = 0; CurrentWeaponSelector.CharacterDropSelector(transform.position); } CurrentWeaponSelector = _weaponSelector; CurrentWeaponSelector.CharacterPickSelector(this, weaponToInstantiate); } }
void SpawnSelector() { var pool = GetPool(WeaponType); _SpawnedSelector = Spawn(pool).GetComponent <WeaponFactionSelector>(); _SpawnedSelector.UseGravity = false; _SpawnedSelector.OnWeaponPickedUp += OnWeaponPickedUp; _Timeout = SpawnTime; // play effect VisualEffects.Instance.PlayWeaponSpawnEffect(_SpawnedSelector.transform); }
public void Start() { WeaponSelector = weaponsSelectors[Random.Range(0, weaponsSelectors.Count)]; if (WeaponSelector != null) { Instantiate(WeaponSelector, transform.position, Quaternion.identity); Destroy(gameObject); return; } Debug.LogError("Weaponbox empty"); }
void OnTriggerEnter2D(Collider2D other) { WeaponFactionSelector box = other.GetComponentInParent <WeaponFactionSelector>(); if (box != null) { if (CanPickupWeapon) { if (box.currentInstantiatedWeapon == null) { PickupWeapon(box); } } } }
void OnWeaponPickedUp() { _SpawnedSelector = null; _Timeout = SpawnTime; }