Exemple #1
0
    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!");
    }
Exemple #2
0
    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);
                }
            }
        }
    }
Exemple #3
0
    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);
    }
Exemple #5
0
 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();
        }
    }
Exemple #8
0
    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);
    }
Exemple #10
0
  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);
  }
Exemple #11
0
    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();
     }
 }
Exemple #13
0
    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);
    }
Exemple #15
0
        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++;
            }
        }
Exemple #16
0
    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);
    }
Exemple #17
0
    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;
                }
            }
        }
    }
Exemple #19
0
    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;
        }
    }
Exemple #23
0
    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);
    }