public int Add(int itemId, int amount = 1, WeaponStatUpgrade.Types activeBonus = (WeaponStatUpgrade.Types)(-2)) { if (!this._blacklist.Contains(itemId)) { float num = 0f; int maxAmount = (num != 0f) ? Mathf.FloorToInt(1f / num) : 2147483647; InventoryItem inventoryItem = this._usedSlots.LastOrDefault((InventoryItem s) => s._itemId == itemId); if (inventoryItem != null) { this.UpdateContentVersion(); amount = inventoryItem.Add(amount, false); } while (amount > 0 && (this._usedSlots.Count < this._slotCount || this._slotCount == 0)) { inventoryItem = new InventoryItem { _itemId = itemId, _maxAmount = maxAmount }; amount = inventoryItem.Add(amount, false); this._usedSlots.Add(inventoryItem); this.UpdateContentVersion(); } this.UpdateFillIcon(); } return amount; }
private WeaponStatUpgrade.Types NextAvailableArrowBonus(WeaponStatUpgrade.Types current) { if (!LocalPlayer.Inventory.Owns(this._ammoItemId)) { return (WeaponStatUpgrade.Types)(-1); } WeaponStatUpgrade.Types types; if (current != WeaponStatUpgrade.Types.BurningAmmo) { if (current != WeaponStatUpgrade.Types.PoisonnedAmmo) { types = WeaponStatUpgrade.Types.BurningAmmo; } else { types = (WeaponStatUpgrade.Types)(-1); } } else { types = WeaponStatUpgrade.Types.PoisonnedAmmo; } if (LocalPlayer.Inventory.OwnsItemWithBonus(this._ammoItemId, types)) { return types; } return this.NextAvailableArrowBonus(types); }
public int Remove(int itemId, int amount = 1, WeaponStatUpgrade.Types activeBonus = (WeaponStatUpgrade.Types)(-2)) { InventoryItem inventoryItem; while (amount > 0 && (inventoryItem = this._usedSlots.LastOrDefault((InventoryItem s) => s._itemId == itemId)) != null) { amount = inventoryItem.RemoveOverflow(amount); if (inventoryItem._amount == 0) { int index = this._usedSlots.IndexOf(inventoryItem); this._usedSlots.RemoveAt(index); this.UpdateContentVersion(); } } this.UpdateFillIcon(); return amount; }
private void SetActiveArrowBonus(WeaponStatUpgrade.Types bonusType) { if (this._activeAmmoBonus != bonusType) { this._activeAmmoBonus = bonusType; this.UpdateArrowRenderer(); } if (this._activeFireArrowGO) { UnityEngine.Object.Destroy(this._activeFireArrowGO.gameObject); this._activeFireArrowGO = null; } }
private void SetActiveBowBonus(WeaponStatUpgrade.Types bonusType) { if (this.BowItemView.ActiveBonus == WeaponStatUpgrade.Types.BurningAmmo && this.CurrentArrowItemView.ActiveBonus == WeaponStatUpgrade.Types.BurningAmmo && bonusType != WeaponStatUpgrade.Types.BurningAmmo && this._activeFireArrowGO) { this.CurrentArrowItemView.ActiveBonus = (WeaponStatUpgrade.Types)(-1); UnityEngine.Object.Destroy(this._activeFireArrowGO.gameObject); this._activeFireArrowGO = null; } this.BowItemView.ActiveBonus = bonusType; }
public void SpawnAnyMultiview(InventoryItemView source, Transform parent, bool randomRotation, WeaponStatUpgrade.Types activeBonus) { Vector3 euler = new Vector3(0f, (float)UnityEngine.Random.Range(-50, 50), 0f); bool flag = source.Equals(this); Collider component = source.GetComponent<Collider>(); Vector3 size; if (component is BoxCollider) { size = ((BoxCollider)component).size; } else if (component is CapsuleCollider) { CapsuleCollider capsuleCollider = (CapsuleCollider)component; int direction = capsuleCollider.direction; if (direction != 0) { if (direction != 1) { size = new Vector3(capsuleCollider.radius * 2f, capsuleCollider.radius * 2f, capsuleCollider.height); } else { size = new Vector3(capsuleCollider.radius * 2f, capsuleCollider.height, capsuleCollider.radius * 2f); } } else { size = new Vector3(capsuleCollider.height, capsuleCollider.radius * 2f, capsuleCollider.radius * 2f); } } else { size = component.bounds.size; } Vector3 vector = UnityEngine.Random.insideUnitSphere; if (!flag) { vector *= 3f; } if (size.x * 2f < size.z) { vector /= 15f; vector *= size.x * 0.75f; vector.x /= 2f; } else if (size.z * 2f < size.x) { vector /= 15f; vector *= size.z * 0.75f; vector.z /= 2f; } else { vector /= 8f; bool flag2 = size.z * 2f > size.y; bool flag3 = size.x * 2f > size.y; if (flag2 && !flag3) { euler.z = (float)UnityEngine.Random.Range(-45, 45); } if (flag3 && !flag2) { euler.x = (float)UnityEngine.Random.Range(-45, 45); } } vector.y = 0f; InventoryItemView inventoryItemView = (InventoryItemView)UnityEngine.Object.Instantiate(source, base.transform.position + vector, (!randomRotation) ? source.transform.rotation : (source.transform.rotation * Quaternion.Euler(euler))); inventoryItemView.transform.parent = parent; inventoryItemView.transform.localScale = source.transform.localScale; inventoryItemView._isCraft = true; inventoryItemView.MultiViewOwner = this; inventoryItemView.enabled = true; inventoryItemView.gameObject.SetActive(true); inventoryItemView.Init(); if (activeBonus != (WeaponStatUpgrade.Types)(-2)) { inventoryItemView.ActiveBonus = activeBonus; } this._multiViews.Add(inventoryItemView); }
public void SetMultiviewsBonus(WeaponStatUpgrade.Types bonus) { if (this._multiViews != null && this._multiViews.Count > 0) { for (int i = 0; i < this._multiViews.Count; i++) { this._multiViews[i].ActiveBonus = bonus; } } }
public void SetMultiViewAmount(int amount, WeaponStatUpgrade.Types activeBonus) { if (this._allowMultiView) { int i = Mathf.Clamp(amount, 0, this._maxMultiViews); if (this._multiViews == null) { this._multiViews = new List<InventoryItemView>(); } base.gameObject.SetActive(true); int num = (activeBonus != (WeaponStatUpgrade.Types)(-2)) ? this.AmountOfMultiviewWithBonus(this._itemId, activeBonus) : this._multiViews.Count; while (i > num) { num++; this.SpawnAnyMultiview(this, base.transform.parent, true, activeBonus); } if (i < num) { this.RemovedMultiViews(this._itemId, num - i, activeBonus); } base.gameObject.SetActive(false); } }
public void RemovedMultiViews(int itemId, int amount, WeaponStatUpgrade.Types bonus) { if (this._multiViews == null) { this._multiViews = new List<InventoryItemView>(); } int num = this._multiViews.FindIndex((InventoryItemView mv) => mv._itemId == itemId && (bonus == (WeaponStatUpgrade.Types)(-2) || mv.ActiveBonus == bonus)); while (num >= 0 && amount > 0) { amount--; if (this._multiViews[num]) { UnityEngine.Object.Destroy(this._multiViews[num].gameObject); } this._multiViews.RemoveAt(num); num = this._multiViews.FindIndex((InventoryItemView mv) => mv._itemId == itemId && (bonus == (WeaponStatUpgrade.Types)(-2) || mv.ActiveBonus == bonus)); } }
public int AmountOfMultiviewWithoutBonus(int itemId, WeaponStatUpgrade.Types bonus) { if (this._allowMultiView && this._multiViews != null) { int num = 0; for (int i = this._multiViews.Count - 1; i >= 0; i--) { if (this._multiViews[i]._itemId == itemId && this._multiViews[i].ActiveBonus != bonus) { num++; } } return num; } return 0; }