コード例 #1
0
ファイル: ItemStorage.cs プロジェクト: GameDiffs/TheForest
 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;
 }
コード例 #2
0
ファイル: BowController.cs プロジェクト: GameDiffs/TheForest
 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);
 }
コード例 #3
0
ファイル: ItemStorage.cs プロジェクト: GameDiffs/TheForest
 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;
 }
コード例 #4
0
ファイル: BowController.cs プロジェクト: GameDiffs/TheForest
 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;
     }
 }
コード例 #5
0
ファイル: BowController.cs プロジェクト: GameDiffs/TheForest
 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;
 }
コード例 #6
0
 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);
 }
コード例 #7
0
 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;
         }
     }
 }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
 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));
     }
 }
コード例 #10
0
 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;
 }