示例#1
0
    internal bool AddItemToInventory(ItemContainer item, int stcCnt = 1)
    {
        //Todo: make sure about the carry count of user
        //Should match with the AddItemToInventory in InventoryHandler
        //CheckUniqueness
        var existingItem = ItemInInventory(item.Id);

        if (existingItem != null)
        {
            if (item.Unique)
            {
                return(false);
            }
            if (existingItem.UserItem.StackCnt + stcCnt <= item.MaxStackCnt)
            {
                existingItem.UserItem.StackCnt++;
                _userDatabase.UpdateUserInventory();
                return(true);
            }
        }
        int order = FindAvailableSlot();

        if (order == -1)
        {
            return(false);
        }
        var userItem         = new UserItem(item, UserPlayer.Id, stcCnt, order);
        var newItem          = new ItemIns(item, userItem);
        var inventoryManager = InventoryManager.Instance();

        inventoryManager.AddItemToInventory(newItem);
        return(true);
    }
示例#2
0
 void Update()
 {
     if (ItemIns == null)
     {
         return;
     }
     if (ItemIns.UserItem.StackCnt == 0)
     {
         _inv.DeleteFromInventory(ItemIns);
         //Logic of adding empty Item to Slot
         ItemIns             = null;
         this.transform.name = "Empty";
         this.GetComponent <Image>().sprite = EmptySprite;
         //Update Text
         _stackCntText.text = "";
         _inv.InvSlots[SlotIndex].transform.name = this.transform.name;
     }
     else
     {
         if (ItemIns.UserItem.StackCnt.ToString() != _stackCntText.text)
         {
             _stackCntText.text = ItemIns.UserItem.StackCnt > 1 ? ItemIns.UserItem.StackCnt.ToString() : "";
         }
     }
 }
示例#3
0
 internal void DeleteItemFromInventory(ItemIns itemIns)
 {
     Debug.Log("IM-Item " + itemIns.MyInfo() + " Will be Deleted from Order " + itemIns.UserItem.Order);
     _characterManager.CharacterInventory.Remove(itemIns);
     _userDatabase.DeleteItemFromInventory(itemIns.UserItem);
     RefreshInventory();
 }
示例#4
0
 internal void AddItemToInventory(ItemIns itemIns)
 {
     Debug.Log("IM-Item " + itemIns.MyInfo() + " Will be added to order " + itemIns.UserItem.Order);
     _characterManager.CharacterInventory.Add(itemIns);
     _userDatabase.UpdateUserInventory(itemIns.UserItem);
     RefreshInventory();
 }
示例#5
0
 public void UnUseItem(ItemIns item)
 {
     if (item == null)
     {
         return;
     }
     _characterManager.CharacterSettingUnuseItem(item, true);
 }
示例#6
0
文件: Tooltip.cs 项目: avidvid/OUP
    //internal void Activate(ItemContainer item)
    //{
    //    if (item != null)
    //    {
    //        _tooltip.transform.GetComponentInChildren<TextMeshProUGUI>().text = item.GetTooltip();
    //        TooltipObject.SetActive(true);
    //        TooltipObject.transform.position = Input.mousePosition;
    //    }
    //}

    public void Activate(ItemIns itemIns)
    {
        if (itemIns != null)
        {
            _tooltip.transform.GetComponentInChildren <TextMeshProUGUI>().text = itemIns.GetTooltip();
            TooltipObject.SetActive(true);
            TooltipObject.transform.position = Input.mousePosition;
        }
    }
示例#7
0
 internal void LoadItem(ItemIns itemIns)
 {
     if (ItemIns != null)
     {
         _inv.UnUseItem(ItemIns);
     }
     this.ItemIns = itemIns;
     LoadItem();
 }
示例#8
0
 public void LoadEmpty()
 {
     ItemIns = null;
     GetComponent <Image>().sprite = DefaultSprite;
     _time      = DateTime.MinValue;
     ItemLocked = false;
     TextMeshProUGUI[] texts = this.transform.parent.GetComponentsInChildren <TextMeshProUGUI>();
     texts[0].text = "";
     texts[1].text = "Empty";
     //Save empty item in mixture
     _inv.SaveCharacterMixture(0, 0, DateTime.Now);
 }
示例#9
0
    internal void LoadItem(int itemId, int stackCnt, DateTime time)
    {
        var itemDatabase = ItemDatabase.Instance();
        var item         = itemDatabase.GetItemById(itemId);

        ItemIns   = new ItemIns(item, new UserItem(item, _characterManager.UserPlayer.Id, stackCnt));
        _stackCnt = stackCnt;
        GetComponent <Image>().sprite = item.GetSprite();
        _time      = time;
        ItemLocked = true;
        TextMeshProUGUI[] texts = this.transform.parent.GetComponentsInChildren <TextMeshProUGUI>();
        texts[0].text = _stackCnt > 1 ? _stackCnt.ToString() : "";
        texts[1].text = (_time - DateTime.Now).ToString();
    }
示例#10
0
 internal void LoadItem()
 {
     if (ItemIns == null)
     {
         this.ItemIns = null;
         GetComponent <Image>().sprite = EmptySprite;
         this.transform.name           = "Empty";
     }
     else
     {
         Sprite itemSprite = ItemIns.Item.GetSprite();
         GetComponent <Image>().sprite = itemSprite != null ? itemSprite : EmptySprite;
         this.transform.name           = ItemIns.Item.Name;
     }
     _inv.UpdateInventory();
 }
示例#11
0
    internal void CharacterSettingUnuseItem(ItemIns itemIns, bool save)
    {
        if (itemIns == null)
        {
            return;
        }
        var item = itemIns.Item;

        switch (itemIns.Item.Type)
        {
        case ItemContainer.ItemType.Consumable:
            return;

        case ItemContainer.ItemType.Equipment:
            CharacterSetting.Agility     -= item.Agility;
            CharacterSetting.Bravery     -= item.Bravery;
            CharacterSetting.Carry       -= item.Carry;
            CharacterSetting.CarryCnt    -= item.CarryCnt;
            CharacterSetting.Charming    -= item.Charming;
            CharacterSetting.Intellect   -= item.Intellect;
            CharacterSetting.Crafting    -= item.Crafting;
            CharacterSetting.Researching -= item.Researching;
            CharacterSetting.Speed       -= item.Speed;
            CharacterSetting.Stamina     -= item.Stamina;
            CharacterSetting.Strength    -= item.Strength;
            break;

        case ItemContainer.ItemType.Weapon:
            CharacterSetting.SpeedAttack    -= item.SpeedAttack;
            CharacterSetting.SpeedDefense   -= item.SpeedDefense;
            CharacterSetting.AbilityAttack  -= item.AbilityAttack;
            CharacterSetting.AbilityDefense -= item.AbilityDefense;
            CharacterSetting.MagicAttack    -= item.MagicAttack;
            CharacterSetting.MagicDefense   -= item.MagicDefense;
            CharacterSetting.PoisonAttack   -= item.PoisonAttack;
            CharacterSetting.PoisonDefense  -= item.PoisonDefense;
            break;

        case ItemContainer.ItemType.Tool:
            return;
        }
        CharacterSetting.Updated = true;
        if (save)
        {
            SaveCharacterSetting(CharacterSetting);
        }
    }
示例#12
0
 public bool UseItem(ItemIns item)
 {
     if (item == null)
     {
         return(false);
     }
     //Use 1/10 of Max energy to use an item
     if (_characterManager.UseEnergy(_characterManager.CharacterSetting.MaxEnergy / 10))
     {
         string itemStatus = _characterManager.CharacterSettingUseItem(item, true);
         if (itemStatus != "")
         {
             PrintMessage(itemStatus, Color.yellow);
         }
         return(true);
     }
     PrintMessage("Not enough energy to use this item", Color.yellow);
     return(false);
 }
示例#13
0
 internal void LoadItem()
 {
     print("Item data loading " + (ItemIns == null?"Empty": ItemIns.Item.Name));
     if (ItemIns == null)
     {
         this.ItemIns = null;
         GetComponent <Image>().sprite = EmptySprite;
         var stackCntText = this.transform.GetChild(0).GetComponent <TextMeshProUGUI>();
         stackCntText.text     = "";
         transform.parent.name = this.transform.name = "Empty";
     }
     else
     {
         transform.parent.name          = this.transform.name = ItemIns.Item.Name;
         this.ItemIns.UserItem.Order    = SlotIndex;
         this.ItemIns.UserItem.Equipped = false;
         GetComponent <Image>().sprite  = ItemIns.Item.GetSprite();
         this.transform.GetComponentInChildren <TextMeshProUGUI>().text = ItemIns.UserItem.StackCnt > 1 ? ItemIns.UserItem.StackCnt.ToString() : "";
     }
     _inv.UpdateInventory();
 }
示例#14
0
    public string CharacterSettingUseItem(ItemIns itemIns, bool save)
    {
        string message = "";

        if (itemIns == null)
        {
            return(message);
        }
        Debug.Log("ItemIns = " + itemIns.MyInfo());
        var item     = itemIns.Item;
        var userItem = itemIns.UserItem;

        switch (itemIns.Item.Type)
        {
        case ItemContainer.ItemType.Consumable:
            if (item.Recipe > 0)
            {
                if (_userDatabase.AddNewRandomUserRecipe())
                {
                    message = "You found a Recipe!!";
                }
                else
                {
                    return("Recipe you found is not readable!! ");
                }
            }
            if (item.Egg > 0)
            {
                if (_userDatabase.AddNewRandomUserCharacters())
                {
                    message = "You Hatched a New Character!!";
                }
                else
                {
                    return("The Egg you found is already rotten !! ");
                }
            }
            if (item.Health > 0)
            {
                AddCharacterSetting("Health", item.Health * userItem.StackCnt, false);
            }
            if (item.Mana > 0)
            {
                AddCharacterSetting("Mana", item.Mana * userItem.StackCnt, false);
            }
            if (item.Energy > 0)
            {
                AddCharacterSetting("Energy", item.Energy * userItem.StackCnt, false);
            }
            if (item.Coin > 0)
            {
                AddCharacterSetting("Coin", item.Coin * userItem.StackCnt, false);
            }
            if (item.Gem > 0)
            {
                AddCharacterSetting("Gem", item.Gem * userItem.StackCnt, false);
            }
            break;

        case ItemContainer.ItemType.Equipment:
            if (item.Agility > 0)
            {
                AddCharacterSetting("Agility", item.Agility, false);
            }
            if (item.Bravery > 0)
            {
                AddCharacterSetting("Bravery", item.Bravery, false);
            }
            if (item.Carry > 0)
            {
                AddCharacterSetting("Carry", item.Carry, false);
            }
            if (item.CarryCnt > 0)
            {
                AddCharacterSetting("CarryCnt", item.CarryCnt, false);
            }
            if (item.Charming > 0)
            {
                AddCharacterSetting("Charming", item.Charming, false);
            }
            if (item.Intellect > 0)
            {
                AddCharacterSetting("Intellect", item.Intellect, false);
            }
            if (item.Crafting > 0)
            {
                AddCharacterSetting("Crafting", item.Crafting, false);
            }
            if (item.Researching > 0)
            {
                AddCharacterSetting("Researching", item.Researching, false);
            }
            if (item.Speed > 0)
            {
                AddCharacterSetting("Speed", item.Speed, false);
            }
            if (item.Stamina > 0)
            {
                AddCharacterSetting("Stamina", item.Stamina, false);
            }
            if (item.Strength > 0)
            {
                AddCharacterSetting("Strength", item.Strength, false);
            }
            break;

        case ItemContainer.ItemType.Weapon:
            if (item.SpeedAttack > 0)
            {
                AddCharacterSetting("SpeedAttack", item.SpeedAttack, false);
            }
            if (item.SpeedDefense > 0)
            {
                AddCharacterSetting("SpeedDefense", item.SpeedDefense, false);
            }
            if (item.AbilityAttack > 0)
            {
                AddCharacterSetting("AbilityAttack", item.AbilityAttack, false);
            }
            if (item.AbilityDefense > 0)
            {
                AddCharacterSetting("AbilityDefense", item.AbilityDefense, false);
            }
            if (item.MagicAttack > 0)
            {
                AddCharacterSetting("MagicAttack", item.MagicAttack, false);
            }
            if (item.MagicDefense > 0)
            {
                AddCharacterSetting("MagicDefense", item.MagicDefense, false);
            }
            if (item.PoisonAttack > 0)
            {
                AddCharacterSetting("PoisonAttack", item.PoisonAttack, false);
            }
            if (item.PoisonDefense > 0)
            {
                AddCharacterSetting("PoisonDefense", item.PoisonDefense, false);
            }
            break;

        case ItemContainer.ItemType.Tool:
            return(message);
        }
        if (save)
        {
            SaveCharacterSetting(CharacterSetting);
        }
        return(message);
    }
示例#15
0
 public void DeleteFromInventory(ItemIns itemIns)
 {
     _inventoryManager.DeleteItemFromInventory(itemIns);
 }
示例#16
0
文件: SlotDelete.cs 项目: avidvid/OUP
 private void DeleteItem(ItemIns itemIns)
 {
     _characterManager.AddCharacterSetting("Coin", (int)(itemIns.UserItem.StackCnt * itemIns.Item.Cost / 2));
     itemIns.UserItem.StackCnt = 0;
     //_inv.DeleteFromInventory(itemIns);
 }
示例#17
0
 internal void LoadItem(ItemIns itemIns)
 {
     this.ItemIns = itemIns;
     LoadItem();
 }