Beispiel #1
0
    private void OnTake(ItemSlotData item, int amount)
    {
        if (!lootAgent)
        {
            return;
        }
        if (!lootAgent.lootItems.Exists(x => x.source == item.item))
        {
            return;
        }
        int takeAmount = BackpackManager.Instance.Inventory.PeekGet(item.item, amount);

        if (BackpackManager.Instance.GetItem(item.item, takeAmount))
        {
            item.amount -= takeAmount;
        }
        if (item.amount < 1)
        {
            lootAgent.lootItems.RemoveAll(x => x.source == item.item);
        }
        if (lootAgent.lootItems.Count < 1)
        {
            lootAgent.Recycle();
            Close();
        }
        else
        {
            productList.Refresh(ItemSlotData.Convert(lootAgent.lootItems, slotCount));
        }
    }
Beispiel #2
0
    public void RefreshDescription()
    {
        title.text           = selectedQuest.Model.Title;
        giver.text           = $"[委托人:{selectedQuest.originalQuestHolder.TalkerName}]";
        descriptionText.text = selectedQuest.Model.Description;
        StringBuilder objectives        = new StringBuilder();
        var           displayObjectives = selectedQuest.Objectives.Where(x => x.Model.Display).ToArray();
        int           lineCount         = displayObjectives.Length - 1;

        for (int i = 0; i < displayObjectives.Length; i++)
        {
            string endLine = i == lineCount ? string.Empty : "\n";
            if (selectedQuest.IsFinished)
            {
                objectives.AppendFormat("-{0}{1}", displayObjectives[i].Model.DisplayName, endLine);
            }
            else
            {
                objectives.AppendFormat("-{0}{1}{2}", displayObjectives[i], displayObjectives[i].IsComplete ? "\t(达成)" : string.Empty, endLine);
            }
        }
        objectiveText.text = objectives.ToString();
        rewardList.Refresh(ItemSlotData.Convert(selectedQuest.Model.RewardItems, maxRewardCount));

        ZetanUtility.SetActive(abandonButton.gameObject, !selectedQuest.IsFinished && selectedQuest.Model.Abandonable);
        ZetanUtility.SetActive(traceButton.gameObject, !selectedQuest.IsFinished);
        RefreshTraceText();
    }
Beispiel #3
0
 public void ShowQuestDescription(QuestData quest)
 {
     if (quest == null)
     {
         return;
     }
     currentQuest         = quest;
     descriptionText.text = new StringBuilder().AppendFormat("<b>{0}</b>\n[委托人: {1}]\n{2}",
                                                             currentQuest.Model.Title,
                                                             currentQuest.originalQuestHolder.TalkerName,
                                                             currentQuest.Model.Description).ToString();
     rewardList.Refresh(ItemSlotData.Convert(currentQuest.Model.RewardItems, 10));
     descriptionWindow.alpha          = 1;
     descriptionWindow.blocksRaycasts = true;
 }
Beispiel #4
0
    protected override bool OnOpen(params object[] args)
    {
        if (IsOpen)
        {
            MessageManager.Instance.New("请先拾取完上一个物品");
            return(false);
        }
        if (GatherManager.Instance.IsGathering)
        {
            MessageManager.Instance.New("请先等待采集完成");
            return(false);
        }
        LootAgent lootAgent = openBy as LootAgent;

        if (!lootAgent)
        {
            return(false);
        }
        this.lootAgent = lootAgent;
        productList.Refresh(ItemSlotData.Convert(this.lootAgent.lootItems, slotCount));
        return(base.OnOpen(args));
    }
Beispiel #5
0
 public void TakeAll()
 {
     if (!lootAgent)
     {
         return;
     }
     foreach (var item in lootAgent.lootItems)
     {
         int takeAmount = BackpackManager.Instance.Inventory.PeekGet(item.source, item.amount);
         if (BackpackManager.Instance.GetItem(item.source, takeAmount))
         {
             item.amount -= takeAmount;
         }
         productList.Refresh(ItemSlotData.Convert(lootAgent.lootItems, slotCount));
     }
     lootAgent.lootItems.RemoveAll(x => x.amount < 1);
     if (lootAgent.lootItems.Count < 1)
     {
         lootAgent.Recycle();
         Close();
     }
 }