public void Add(ItemData item) { //stack on existing slot foreach (InventorySlotData slot in invSlots) { if (!slot.Empty && slot.Item == item) { slot.Add(item); return; } } //add to empty slot foreach (InventorySlotData slot in invSlots) { if (slot.Empty) { slot.Add(item); return; } } //add extra slot if possible if (invSlots.Count < maxSlots) { InventorySlotData slot = new InventorySlotData(); invSlots.Add(slot); slot.Add(item); } Debug.Log("Inventory is full!"); }
void ReduceHealth(int amount) { if (takesDamage) { if (inventorySelector != null) { InventorySlotData data = inventorySelector.CurrentSlotObject.GetComponent <InventorySlotData> (); data.itemHealth -= amount; data.SetItemHealth(); if (data.itemHealth <= 0) { destroyed = true; if (breakSound != null) { AudioSource sound = Instantiate(breakSound) as AudioSource; sound.transform.parent = GameObject.Find("Player").transform; sound.transform.localPosition = Vector3.zero; sound.Play(); } inventory.RemoveAtIndex(inventorySelector.CurrentSlotObject.GetComponent <InventorySlot> ().slotID); data.Empty(); Destroy(gameObject); } } } }
public void OnDrop(PointerEventData eventData) { InventorySlotData droppedItem = eventData.pointerDrag.GetComponent <InventorySlotData>(); if (inv.items[id].ID == -1) { inv.items[droppedItem.slot] = new Item(); inv.items[id] = droppedItem.item; droppedItem.slot = id; } else if (droppedItem != null && droppedItem.slot != id) { Transform item = this.transform.GetChild(0); item.GetComponent <InventorySlotData>().slot = droppedItem.slot; item.transform.SetParent(inv.slots[droppedItem.slot].transform); item.transform.position = inv.slots[droppedItem.slot].transform.position; droppedItem.slot = id; droppedItem.transform.SetParent(this.transform); droppedItem.transform.position = this.transform.position; inv.items[droppedItem.slot] = item.GetComponent <InventorySlotData>().item; inv.items[id] = droppedItem.item; } }
public void Load(InventorySlotData data) { // If this slot had no item in it when saved, clear it when loading. if (data.item == null) { ClearSlot(); UpdateUI(); return; } // Load the associated item Item item = null; switch (data.item.type) { case Item.ItemType.Seed: item = inventory.seedItemMap[data.item.seed]; break; case Item.ItemType.Weapon: item = inventory.weaponItemMap[data.item.weapon]; break; case Item.ItemType.Resource: item = inventory.resourceItemMap[data.item.resource]; break; } this.count = data.count; Assign(item, data.count); }
public void CreateItem(InventorySlotData slotData) { SlotItem.Create(slotData); if (Inventory != null && Inventory.Configuration == InventoryConfiguration.RaidInventory) { UpdateState(); } }
public void MapInventorySlot(InventorySlot slot, InventorySlotData slotData) { var itemType = ItemTypes.GetItemType(slotData.ItemStack.Item.ItemTypeId); var item = itemType.Load(new DictionaryAccess(slotData.ItemStack.Item.Data)); var itemStack = new ItemStack(item, slotData.ItemStack.Size); slot.Put(itemStack); }
void MoveToMouse() { Item item = inventory.InventoryList [slotID]; // Taking from slot if (inventoryUI.GetItemAtMouse().itemName == "" && item.itemName != "") { inventoryUI.SetAtMouse(item, slotID, gameObject, GetComponent <InventorySlotData>()); inventory.RemoveAtIndex(slotID); inventoryUI.GetSlotAtMouse().GetComponent <InventorySlotData> ().Empty(); if (slotChangedEvent != null) { slotChangedEvent(); } } // Putting in slot else { // Slot is empty if (inventory.InventoryList [slotID].itemName == "") { inventory.AddItemToInventory(inventoryUI.GetItemAtMouse(), slotID); InventorySlotData slotData = GetComponent <InventorySlotData> (); slotData.SetItem(inventory.InventoryList [slotID]); slotData.currentAmmo = inventoryUI.GetWeaponAmmoAtMouse(); slotData.itemHealth = inventoryUI.GetHealthAtMouse(); slotData.SetItemHealth(); } // Swap places else { InventorySlotData thisSlot = GetComponent <InventorySlotData> (); InventorySlotData otherSlot = inventoryUI.GetSlotAtMouse().GetComponent <InventorySlotData> (); int heldAmmo = inventoryUI.GetWeaponAmmoAtMouse(); // the ammo of the item being moved int newAmmo = thisSlot.currentAmmo; // the ammo of this slot float heldHealth = inventoryUI.GetHealthAtMouse(); // the health of the item being moved float newHealth = thisSlot.itemHealth; // the health of this slot // Swap the slots inventory.AddItemToInventory(item, inventoryUI.GetIndexAtMouse()); inventory.AddItemToInventory(inventoryUI.GetItemAtMouse(), slotID); // Replace the values thisSlot.currentAmmo = heldAmmo; thisSlot.itemHealth = heldHealth; otherSlot.currentAmmo = newAmmo; otherSlot.itemHealth = newHealth; } inventoryUI.EmptyAtMouse(); } }
public void Shoot() { int ammo; if (gameObject.transform.parent.parent.name == "Player") { InventorySlotData data = inventorySelector.CurrentSlotObject.GetComponent <InventorySlotData> (); ammo = data.currentAmmo; } else { ammo = currentAmmo; } if (ammo > 0) { if (Time.time > nextshotTime && CanShoot()) { if (reloading) { StopReload(); } nextshotTime = Time.time + msBetweenShots / 1000f; foreach (Transform muzzle in muzzles) { Projectile newProjectile = Instantiate(projectile, muzzle.position, muzzle.rotation) as Projectile; newProjectile.SetSpeed(muzzleVelocity); newProjectile.SetDamage(damage); newProjectile.SetPenetration(penetration); newProjectile.SetFiredBy(gameObject.transform.parent.transform.parent.gameObject); } if (gameObject.transform.parent.parent.name == "Player") { ReduceHealth(1); } ReduceAmmo(1); if (flashParticles != null) { flashParticles.Play(); } if (SFX.Length > 0) { int random = Random.Range(0, SFX.Length - 1); SFX [random].Play(); } } } else { Reload(reloadTime); } }
public List <InventorySlotData> SaveInventorySlotData() { List <InventorySlotData> slotData = new List <InventorySlotData>(); foreach (var slot in InventorySlots) { InventorySlotData newSlotData = new InventorySlotData(); newSlotData.Item = slot.SlotItem.Item; newSlotData.ItemData = slot.SlotItem.ItemData; slotData.Add(newSlotData); } return(slotData); }
public InventorySlotData[] GetData() { InventorySlotData[] inventorySlotDatas = new InventorySlotData[slots.Count]; int i = 0; foreach (Slot slot in slots) { inventorySlotDatas[i].itemID = slot != null && slot.item != null ? slot.item.id : 0; inventorySlotDatas[i].amount = slot != null ? slot.amount : 0; i++; } return(inventorySlotDatas); }
public void SetAtMouse(Item _item, int index, GameObject _slot, InventorySlotData _data) { itemAtMouse = _item; indexAtMouse = index; slotAtMouse = _slot; weaponAmmoAtMouse = _data.currentAmmo; weaponHealthAtMouse = _data.itemHealth; item.transform.Find("Icon").GetComponent <Image> ().sprite = _item.itemSprite; item.transform.Find("Amount").GetComponent <Text> ().text = ""; if (_item.Amount > 1) { item.transform.Find("Amount").GetComponent <Text> ().text = _item.Amount.ToString(); } }
public void Create(InventorySlotData slotData) { isEmpty = slotData.ItemData == null; if (isEmpty) { Delete(); } else { Item.Type = slotData.Item.Type; Item.Id = slotData.Item.Id; Item.Amount = slotData.Item.Amount; LoadItem(); } }
public PlayerData GetPlayerData() { PlayerData pd = new PlayerData(); PlayerInfo a = GameManagerScript.ins.playerInfo; Stats s = GameManagerScript.ins.playerInfo.stats; pd.charName = a.characterName; pd.x = GameManagerScript.ins.player.transform.position.x; pd.y = GameManagerScript.ins.player.transform.position.y; pd.direction = (int)a.direction; pd.state = (int)a.state; pd.id = a.id; pd.active = GameManagerScript.ins.player.activeSelf; pd.canMove = a.canMove; pd.inCombat = a.inCombat; pd.castProgress = a.progress; pd.currentHealth = a.currentHealth; pd.currentStamina = a.currentStamina; pd.money = a.money; pd.polyNavActive = a.polyNav.isActiveAndEnabled; pd.intuition = s.intuition; pd.intelligence = s.intelligence; pd.strength = s.strength; pd.charisma = s.charisma; pd.precision = s.precision; pd.dexterity = s.dexterity; pd.perception = s.perception; pd.attitude = s.attitude; pd.fear = s.fear; pd.danger = s.danger; pd.spirituality = s.spirituality; pd.inventory = new List <InventorySlotData>(); foreach (Inventory.InventorySlot invSlot in a.inventory.inventory) { InventorySlotData invSlotData = new InventorySlotData(); invSlotData.id = invSlot.item.ID; invSlotData.count = invSlot.count; pd.inventory.Add(invSlotData); } pd.maxSize = a.inventory.maxSize; return(pd); }
public InventorySlotData Save() { InventorySlotData data = new InventorySlotData(); if (item) { data.item = item.Save(); data.count = count; } else { data.item = null; } return(data); }
protected override void InitilizeItemSlots() { base.InitilizeItemSlots(); var count = 0; foreach (var equipmentSlot in SlotReferences) { var itemslotData = new ItemSlotData { ParentNetId = AttachedNetworkIdentity.netId, SlotIndex = InventorySlotData.Count + count, SlotType = equipmentSlot.Key }; InventorySlotData.Add(count + Capacity, itemslotData); count++; } }
private int currentAmmo; // used by AI only, not player void Start() { currentAmmo = clipSize; inventory = GameObject.Find("GameManager").GetComponent <Inventory> (); gunManager = GameObject.Find("GameManager").GetComponent <GunManager>(); inventoryUI = GameObject.Find("GameManager").GetComponent <InventoryUIManager>(); flashParticles = Instantiate(gunManager.flashParticles); flashParticles.transform.parent = transform; foreach (Transform muzzle in muzzles) { flashParticles.transform.position = muzzle.position; } inventorySelector = GameObject.Find("GameManager").GetComponent <InventorySelector> (); InventorySlotData data = inventorySelector.CurrentSlotObject.GetComponent <InventorySlotData> (); gunManager.ammoUI.SetCurrentAmmo(data.currentAmmo); }
void ReduceAmmo(int amount) { if (gameObject.transform.parent.parent.name == "Player") { if (inventorySelector != null) { InventorySlotData data = inventorySelector.CurrentSlotObject.GetComponent <InventorySlotData> (); data.currentAmmo -= amount; if (data.currentAmmo < 0) { data.currentAmmo = 0; } gunManager.ammoUI.SetCurrentAmmo(data.currentAmmo); } } else { currentAmmo -= amount; } }
// Add item functions: Necessary for adding unique instances of different subclasses of Item public void addWeapon(int id, Weapon weapon) { if (weapon.Stackable && IsItemInInventory(weapon)) { for (int i = 0; i < items.Count; i++) { if (items[i].ID == id) { items[i].Quantity++; InventorySlotData data = slots[i].transform.GetChild(0).GetComponent <InventorySlotData>(); data.transform.GetChild(0).GetComponent <Text>().text = items[i].Quantity.ToString(); } } } else { for (int i = 0; i < items.Count; i++) { if (items[i].ID == -1) { currentSlotCount++; items[i] = weapon; items[i].UniqueID = Guid.NewGuid(); // Completely UI tweaks, no game functionality GameObject itemObj = Instantiate(inventoryItem); itemObj.GetComponent <InventorySlotData>().item = weapon; itemObj.GetComponent <InventorySlotData>().slot = i; itemObj.GetComponent <InventorySlotData>().inventoryPanelBounds = panelBounds; itemObj.transform.SetParent(slots[i].transform); itemObj.transform.position = slots[i].transform.position; itemObj.GetComponent <Image>().sprite = weapon.Sprite; itemObj.name = weapon.Title; slots[i].name = weapon.Title + " Slot"; break; } } } }
public void Equip(int inventorySlotId) { if (!IsValidSlotId(inventorySlotId)) { return; } InventorySlotData inventorySlot = invSlots[inventorySlotId]; if (inventorySlot.Empty) { return; } ItemData item = inventorySlot.Item; EquipmentData.CanEquipResult canEquipResult = equipmentData.CanEquip(item); switch (canEquipResult.Status) { case EquipmentData.CanEquipStatus.Yes: Remove(item); equipmentData.Equip(item); break; case EquipmentData.CanEquipStatus.No_PrimaryConflict: case EquipmentData.CanEquipStatus.No_SecondaryConflict: Remove(item); IList <ItemData> unequippedItems = canEquipResult.ConflictingItems; foreach (var unequippedItem in unequippedItems) { Add(unequippedItem); equipmentData.Unequip(unequippedItem); } equipmentData.Equip(item); break; } }
void ShiftClick() { // From Hotbar if (this.slotID < 7) { for (int i = 7; i < inventory.InventoryList.Count; i++) { Item item = inventory.InventoryList [i]; // Empty space if (item.itemName == "") { inventory.MoveItemToSlot(slotID, i); tooltip.Hide(); GameObject[] allSlots = GameObject.FindGameObjectsWithTag("InventorySlot"); for (int j = 0; j < allSlots.Length; j++) { if (allSlots [j].GetComponent <InventorySlot> ().slotID == i) { InventorySlotData slotData = allSlots [j].GetComponent <InventorySlotData> (); InventorySlotData thisSlot = GetComponent <InventorySlotData> (); slotData.SetItem(inventory.InventoryList [slotID]); slotData.currentAmmo = thisSlot.currentAmmo; slotData.itemHealth = thisSlot.itemHealth; slotData.SetItemHealth(); break; } } break; } } } // From Inventory if (this.slotID >= 7) { for (int i = 0; i < 7; i++) { Item item = inventory.InventoryList [i]; // Empty space if (item.itemName == "") { inventory.MoveItemToSlot(slotID, i); tooltip.Hide(); GameObject[] allSlots = GameObject.FindGameObjectsWithTag("InventorySlot"); for (int j = 0; j < allSlots.Length; j++) { if (allSlots [j].GetComponent <InventorySlot> ().slotID == i) { InventorySlotData slotData = allSlots [j].GetComponent <InventorySlotData> (); InventorySlotData thisSlot = GetComponent <InventorySlotData> (); slotData.SetItem(inventory.InventoryList [slotID]); slotData.currentAmmo = thisSlot.currentAmmo; slotData.itemHealth = thisSlot.itemHealth; slotData.SetItemHealth(); break; } } break; } } } }
public InventorySlotData(InventorySlotData other) { item = other.item; count = other.count; maxCount = other.maxCount; }
protected override void LoadDataInternal() { if (!isInitialized) { return; } InventoryData inventoryData = parentMenu.InventoryData; ItemData itemData = null; int count = 0; bool itemIconEnabled = false; bool locked = false; if (!slotId.isEquipmentSlot) { InventorySlotData inventorySlotData = inventoryData.GetInventorySlotData(slotId.inventorySlotId); if (!inventorySlotData.Empty) { itemData = inventorySlotData.Item; itemIconEnabled = true; } count = inventorySlotData.Count; } else if (slotId.isEquipmentSlot) { EquipmentSlotData eqSlotData = inventoryData.EquipmentData.GetEquipmentSlot(slotId.equipmentSlotType); if (!eqSlotData.Empty) { itemData = eqSlotData.Item; if (eqSlotData.Primary) { itemIconEnabled = true; } else { locked = true; } } } if (itemData != null) { if (itemData.IsType(ItemType.Weapon)) { UnitWeaponCombiner combiner = new UnitWeaponCombiner(parentMenu.UnitData, itemData.WeaponData); if (!combiner.CanUse) { locked = true; } } } if (itemIconEnabled) { itemIcon.enabled = true; itemIcon.texture = parentMenu.ItemIconAtlas; itemIcon.uvRect = parentMenu.GetItemIconUvRect(itemData); } else { itemIcon.enabled = false; } lockIcon.enabled = locked; if (count > 1) { countText.text = count.ToString(); } else { countText.text = ""; } nameText.text = eqSlotName; if (parentMenu.IsSelected(slotId)) { borderImage.color = selectedBorderColor; } else { borderImage.color = deselectedBorderColor; } }
public List <NPCData> CollectCurrentData() { foreach (GameObject c in allNPCsInScene) { if (c.tag.ToString() != "NPC") { continue; } NPCData temp = new NPCData(); NPCInfo a = c.GetComponent <NPCInfo>(); Stats s = c.GetComponent <Stats>(); NPCSpeechHolder h = c.GetComponent <NPCSpeechHolder>(); CombatScript cs = c.GetComponent <CombatScript>(); temp.x = c.transform.position.x; temp.y = c.transform.position.y; temp.direction = (int)a.direction; temp.state = (int)a.state; temp.id = a.id; temp.active = c.gameObject.activeSelf; temp.canMove = a.canMove; temp.inCombat = a.inCombat; if (cs.selectedSpell != null) { temp.selectedSpellID = cs.selectedSpell.ID; } else { temp.selectedSpellID = -1; } temp.castProgress = cs.ProgressI; temp.combatState = (int)cs.state; temp.energyState = (int)cs.energyState; temp.currentHealth = a.currentHealth; temp.currentStamina = a.currentStamina; temp.merchantMoney = a.merchantMoney; temp.combatCooldown = a.combatCooldown; temp.cooldown = a.timeStoppedCombat; temp.intuition = s.intuition; temp.intelligence = s.intelligence; temp.strength = s.strength; temp.charisma = s.charisma; temp.precision = s.precision; temp.dexterity = s.dexterity; temp.perception = s.perception; temp.attitude = s.attitude; temp.fear = s.fear; temp.danger = s.danger; temp.spirituality = s.spirituality; temp.currentLine = h.currentLine; temp.currentSet = h.currentSet; temp.moveType = (int)a.movementType; temp.areaPointX = a.destination.x; temp.areaPointY = a.destination.y; temp.isWaiting = a.isWaiting; temp.isMoving = a.isMoving; if (a.patrolPoints.Count > 0) { temp.hasPatrol = true; temp.patrolPointX = a.patrolPoints[0].transform.position.x; temp.patrolPointY = a.patrolPoints[0].transform.position.y; } else { temp.hasPatrol = false; temp.patrolPointX = 0; temp.patrolPointY = 0; } temp.inventory = new List <InventorySlotData>(); foreach (Inventory.InventorySlot invSlot in a.merchantInventory.inventory) { InventorySlotData invSlotData = new InventorySlotData(); invSlotData.id = invSlot.item.ID; invSlotData.count = invSlot.count; temp.inventory.Add(invSlotData); } temp.maxSize = a.merchantInventory.maxSize; AddToData(temp); } return(allNPCData); }