public void AddItemToInventory(Item newItem, ChestContents chest, int itemIndex) { bool breakLoop = false; bool sucessfullyAddedItem = false; for (int i = 0; i < inventory.Count; i++) { if (inventory[i] == null) { switch (newItem.itemType) { case Item.ItemType.Consumable: Consumable inventoryConsumable = Instantiate <Consumable>((Consumable)(newItem)); Consumable tempConsumable = (Consumable)newItem; tempConsumable.CopyTo(out inventoryConsumable); inventory[i] = tempConsumable; breakLoop = true; sucessfullyAddedItem = true; chest.contents[itemIndex] = null; break; case Item.ItemType.Armor: break; default: break; } } else if (inventory[i].itemName == newItem.itemName) { if (itemNumberInStack[i] <= inventory[i].stackLimit - chest.itemNumberInStack[itemIndex]) { itemNumberInStack[i] += chest.itemNumberInStack[itemIndex]; breakLoop = true; sucessfullyAddedItem = true; } else { while (itemNumberInStack[i] < inventory[i].stackLimit) { itemNumberInStack[i]++; chest.itemNumberInStack[itemIndex]--; breakLoop = true; } } } if (breakLoop) { break; } } if (!sucessfullyAddedItem) { inventory.Add(newItem); itemNumberInStack.Add(chest.itemNumberInStack[itemIndex]); chest.RemoveItem(itemIndex); } AutoSortInventory(); }
// Use this for initialization void Start() { chestButtons = new Button[transform.childCount]; inventoryItemImages = new Image[chestButtons.Length]; backgroundImages = new Image[chestButtons.Length]; if (chest == null) { chest = transform.root.gameObject; } chestContents = chest.GetComponent <ChestContents>(); for (int i = 0; i < inventoryItemImages.Length; i++) { chestButtons[i] = transform.GetChild(i).GetComponent <Button>(); inventoryItemImages[i] = transform.GetChild(i).GetChild(1).GetComponent <Image>(); backgroundImages[i] = transform.GetChild(i).GetChild(0).GetComponent <Image>(); } }
public void SetOpenChest(ChestContents chest) { openChest = chest; }
public void SetToolTipFromChest(int index) { chest = chestDisplay.chestContents; text.text = chest.contents[index].itemName + " - " + chest.contents[index].itemDescription + "\n" + chest.itemNumberInStack[index] + " in stack"; }
public void SetChestContents(ChestContents newContents) { chestContents = newContents; }
void Update() { if ((Input.GetKey(control.pauseMenu) || Input.GetKey(control.inventory)) && isCoroutineRunning) { gameObject.GetComponent <PauseGame>().HideAttachmentMenu(); StopCoroutine("AttachWeapon"); attachmentToAttach = null; isCoroutineRunning = false; } Ray ray = new Ray(cam.transform.position, cam.transform.forward); RaycastHit hit; Debug.DrawRay(ray.origin, ray.direction); if (Physics.Raycast(ray, out hit, 5)) { if (hit.collider.CompareTag("Chest") || hit.collider.gameObject.GetComponent <ChestContents>()) { useText.SetActive(true); chest = hit.collider.GetComponent <ChestContents>(); useText.GetComponent <Text>().text = chest.ammoChest ? "Pick up Ammo" : "Open Chest"; if (Input.GetKeyDown(control.use)) { if (chest.ammoChest) { currentAmmo = weaponSwitch.equippedWeapon.GetComponent <Weapon>().ammo.GetComponent <Amount>(); currentAmmo.amountOf += currentAmmo.limit; } else { pause.ShowChestAndInventory(); chestDisplay.SetChestContents(chest); inventoryDisplay.SetOpenChest(chest); } } } else if (hit.collider.gameObject.CompareTag("Weapon")) { useText.SetActive(true); useText.GetComponent <Text>().text = "Pick up " + hit.collider.gameObject.GetComponent <PickUpProperties>().actualGunPrefab.name; string weaponName = hit.collider.gameObject.GetComponent <PickUpProperties>().actualGunPrefab.name; if (weaponSlot.childCount >= weaponSwitch.maxWeapons) { useText.GetComponent <Text>().text = "Replace current weapon with " + weaponName; } UpdateEquippedWeapons(); if (Input.GetKeyDown(control.use)) { if (weaponSlot.childCount >= weaponSwitch.maxWeapons) { GameObject tempWeapon = Instantiate(hit.collider.gameObject.GetComponent <PickUpProperties>().actualGunPrefab, weaponSlot.position, weaponSlot.rotation, weaponSlot); tempWeapon.name = weaponName; equippedWeapons[weaponSwitch.currentWeapon].name = hit.collider.gameObject.GetComponent <PickUpProperties>().actualGunPrefab.name; equippedWeapons[weaponSwitch.currentWeapon].weapon = tempWeapon; Weapon weaponValues = tempWeapon.GetComponent <Weapon>(); weaponValues.CopyFrom(hit.collider.gameObject.GetComponent <Weapon>()); if (weaponValues.weaponType == Weapon.WeaponType.Gun) { Shoot tempShoot = (Shoot)weaponValues; tempShoot.CopyFrom(hit.collider.gameObject.GetComponent <Shoot>()); switch (tempShoot.shootType) { case Shoot.ShootType.GunShoot: GunShoot gunShoot = (GunShoot)tempShoot; gunShoot.CopyFrom(hit.collider.gameObject.GetComponent <GunShoot>()); break; case Shoot.ShootType.ShotgunShoot: ShotgunShoot shotgun = (ShotgunShoot)tempShoot; shotgun.CopyFrom(hit.collider.gameObject.GetComponent <ShotgunShoot>()); break; case Shoot.ShootType.SemiAutoShoot: break; case Shoot.ShootType.ChargeShoot: ChargeShoot chargeShoot = (ChargeShoot)tempShoot; chargeShoot.CopyFrom(hit.collider.gameObject.GetComponent <ChargeShoot>()); break; case Shoot.ShootType.ProjectileShoot: break; } } else { MeleeAttack tempMelee = (MeleeAttack)weaponValues; tempMelee.CopyFrom(hit.collider.GetComponent <MeleeAttack>()); } tempWeapon.transform.SetSiblingIndex(weaponSwitch.currentWeapon); GameObject weaponToDestroy = weaponSlot.GetChild(weaponSwitch.currentWeapon + 1).gameObject; hit.collider.gameObject.GetComponent <MiniMapIndicator>().DestroyCurrentIcon(); ThrowWeapon(weaponToDestroy); Destroy(weaponToDestroy); UpdateEquippedWeapons(); Destroy(hit.collider.gameObject); } else { GameObject weaponPickedUp = hit.collider.gameObject; GameObject tempWeapon = Instantiate(weaponPickedUp.GetComponent <PickUpProperties>().actualGunPrefab, weaponSlot.position, weaponSlot.rotation, weaponSlot); tempWeapon.name = weaponName; UpdateEquippedWeapons(); Weapon weaponValues = tempWeapon.GetComponent <Weapon>(); weaponValues.CopyFrom(weaponPickedUp.GetComponent <Weapon>()); weaponValues.isPickup = false; if (weaponValues.weaponType == Weapon.WeaponType.Gun) { Shoot tempShoot = (Shoot)weaponValues; tempShoot.CopyFrom(hit.collider.gameObject.GetComponent <Shoot>()); switch (tempShoot.shootType) { case Shoot.ShootType.GunShoot: GunShoot gunShoot = (GunShoot)tempShoot; gunShoot.CopyFrom(hit.collider.gameObject.GetComponent <GunShoot>()); break; case Shoot.ShootType.ShotgunShoot: ShotgunShoot shotgun = (ShotgunShoot)tempShoot; shotgun.CopyFrom(hit.collider.gameObject.GetComponent <ShotgunShoot>()); break; case Shoot.ShootType.SemiAutoShoot: break; case Shoot.ShootType.ChargeShoot: ChargeShoot chargeShoot = (ChargeShoot)tempShoot; chargeShoot.CopyFrom(hit.collider.gameObject.GetComponent <ChargeShoot>()); break; case Shoot.ShootType.ProjectileShoot: break; } } else { MeleeAttack tempMelee = (MeleeAttack)weaponValues; tempMelee.CopyFrom(hit.collider.GetComponent <MeleeAttack>()); } weaponSwitch.DisableWeapon(tempWeapon); hit.collider.gameObject.GetComponent <MiniMapIndicator>().DestroyCurrentIcon(); Destroy(hit.collider.gameObject); } } } else if (hit.collider.gameObject.CompareTag("Door")) { Door tempDoor = hit.collider.gameObject.GetComponent <Door>(); useText.SetActive(true); Text text = useText.GetComponent <Text>(); if (tempDoor.GetIsLocked()) { bool hasKey = false; int keyLoc = 0; for (int i = 0; i < keyNumbers.Count; i++) { hasKey = tempDoor.IsCorrectKey(keyNumbers[i]); if (hasKey) { keyLoc = i; } } text.text = (hasKey) ? "Unlock door" : "Door requires key!"; if (Input.GetKeyDown(control.use) && hasKey) { tempDoor.UnlockDoor(keyNumbers[keyLoc]); keyNumbers.RemoveAt(keyLoc); } } else if ((tempDoor.doorType == Door.DoorType.Use || tempDoor.doorType == Door.DoorType.RequiresKeyAfter || tempDoor.doorType == Door.DoorType.RequiresKeyInit) && !tempDoor.isOpen) { text.text = "Open door"; if (Input.GetKeyDown(control.use)) { tempDoor.OpenDoorWithUse(); } } else if (tempDoor.isOpen && tempDoor.doorType == Door.DoorType.Use) { text.text = "Close door"; if (Input.GetKeyDown(control.use)) { tempDoor.CloseDoorWithUse(); } } else { useText.SetActive(false); } } else if (hit.collider.gameObject.CompareTag("Key")) { useText.SetActive(true); Text text = useText.GetComponent <Text>(); text.text = "Pickup key"; if (Input.GetKeyDown(control.use)) { try { Key key = hit.collider.gameObject.GetComponent <Key>(); keyNumbers.Add(key.keyNumber); Destroy(hit.collider.gameObject); } catch (MissingComponentException e) { Debug.LogException(e); } } } else { useText.SetActive(false); } } else { useText.SetActive(false); } if (Input.GetKeyDown(control.throwWeapon)) { if (weaponSlot.GetChild(weaponSwitch.currentWeapon).gameObject != null) { ThrowWeapon(weaponSlot.GetChild(weaponSwitch.currentWeapon).gameObject); weaponSwitch.SwitchWeaponUp(); } UpdateEquippedWeapons(); } }