Firstborn/Assets/RPG Creation Kit/Scripts/Trade System/UI/MiscItemInTradeUI.cs

177 lines
8.3 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using RPGCreationKit;
namespace RPGCreationKit
{
public class MiscItemInTradeUI : MiscItemInInventoryUI
{
public override void OnClick(bool takeAll = false)
{
if (TradeSystemUI.instance.isBuyingOrDrawing)
{
Debug.Log("Taking item: " + base.miscItemInInventory.item.ItemName);
if (TradeSystemUI.instance.isMerchant)
{
// if the amount is 1, add it one time
if (base.miscItemInInventory.Amount <= 1)
{
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
TradeSystemUI.instance.confirmTradePanel.Init(base.miscItemInInventory, this, "Are you sure you want to buy 1 " + base.miscItemInInventory.item.ItemName + " for " + base.miscItemInInventory.item.Value + " golds?");
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(1, ConfirmTradeAction.BuyFromMerchant));
}
else if (base.miscItemInInventory.item.isCumulable && base.miscItemInInventory.Amount > 1)
{
TradeSystemUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
TradeSystemUI.instance.takeDepositItemsPanel.Init(miscItemInInventory, this);
}
}
else
{
// we're drawing from a friendly npc
}
}
else // we're selling
{
// if the amount is 1, add it one time
if (TradeSystemUI.instance.isMerchant)
{
// if the amount is 1, add it one time
if (base.miscItemInInventory.Amount <= 1)
{
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
TradeSystemUI.instance.confirmTradePanel.Init(base.miscItemInInventory, this, "Are you sure you want to sell 1 " + base.miscItemInInventory.item.ItemName + " for " + base.miscItemInInventory.item.Value + " golds?");
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(1, ConfirmTradeAction.SellToMerchant));
}
else if (base.miscItemInInventory.item.isCumulable && base.miscItemInInventory.Amount > 1)
{
TradeSystemUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
TradeSystemUI.instance.takeDepositItemsPanel.Init(miscItemInInventory, this);
}
}
}
}
public override void ConfirmButtonCumulableItem(int amount)
{
if (TradeSystemUI.instance.isBuyingOrDrawing)
{
if (TradeSystemUI.instance.isMerchant)
{
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
TradeSystemUI.instance.confirmTradePanel.Init(base.miscItemInInventory, this, "Are you sure you want to buy " + amount + " " + base.miscItemInInventory.item.ItemName + " for " + (base.miscItemInInventory.item.Value * amount) + " golds?", true);
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(amount, ConfirmTradeAction.BuyFromMerchant));
}
else
{
// friendly npc
}
}
else // we're selling
{
if (TradeSystemUI.instance.isMerchant)
{
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
TradeSystemUI.instance.confirmTradePanel.Init(base.miscItemInInventory, this, "Are you sure you want to sell " + amount + " " + base.miscItemInInventory.item.ItemName + " for " + (base.miscItemInInventory.item.Value * amount) + " golds?", true);
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(amount, ConfirmTradeAction.SellToMerchant));
}
else
{
//friendly npc
}
}
}
public override void ConfirmTrade(int _amount, ConfirmTradeAction _action)
{
int totalGoldsAmount = (base.miscItemInInventory.item.Value * _amount);
if (_action == ConfirmTradeAction.BuyFromMerchant)
{
if (Inventory.PlayerInventory.GetItemCount("Gold001") >= totalGoldsAmount)
{
Inventory.PlayerInventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, _amount);
Inventory.PlayerInventory.RemoveItem("Gold001", totalGoldsAmount);
TradeSystemUI.instance.curMerchant.inventory.AddItem("Gold001", totalGoldsAmount);
// Remove the item from the merchant inventory
TradeSystemUI.instance.curMerchant.inventory.RemoveItem(base.miscItemInInventory, _amount);
TradeSystemUI.instance.PlaySound(GoldsSounds.Spend);
TradeSystemUI.instance.confirmTradePanel.CancelButton();
AlertMessage.instance.InitAlertMessage("Transaction Completed!", 1.5f);
TradeSystemUI.instance.UpdateStatsUI();
// if the merchant's item is out of stocks, remove the item
if (base.miscItemInInventory.Amount <= 0)
{
TradeSystemUI.instance.SelectNextButton();
// Disable this object
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
gameObject.SetActive(false);
}
else
{
Init();
}
}
else
{
TradeSystemUI.instance.confirmTradePanel.CancelButton();
AlertMessage.instance.InitAlertMessage("You don't have enough golds.", 1.5f);
}
}
else if (_action == ConfirmTradeAction.SellToMerchant)
{
if (TradeSystemUI.instance.curMerchant.inventory.GetItemCount("Gold001") >= totalGoldsAmount)
{
TradeSystemUI.instance.curMerchant.inventory.AddItem(base.miscItemInInventory.item, base.miscItemInInventory.metadata, _amount);
Inventory.PlayerInventory.RemoveItem(base.miscItemInInventory, _amount);
TradeSystemUI.instance.curMerchant.inventory.RemoveItem("Gold001", totalGoldsAmount);
Inventory.PlayerInventory.AddItem("Gold001", totalGoldsAmount);
TradeSystemUI.instance.PlaySound(GoldsSounds.Gain);
TradeSystemUI.instance.confirmTradePanel.CancelButton();
AlertMessage.instance.InitAlertMessage("Transaction Completed!", 1.5f);
TradeSystemUI.instance.UpdateStatsUI();
// if the merchant's item is out of stocks, remove the item
if (base.miscItemInInventory.Amount <= 0)
{
TradeSystemUI.instance.SelectNextButton();
// Disable this object
pool.usedObjects.Remove(this);
pool.MiscsPool.usedObjects.Remove(this);
gameObject.GetComponent<Button>().onClick.RemoveAllListeners();
gameObject.SetActive(false);
}
else
{
Init();
}
}
else
{
TradeSystemUI.instance.confirmTradePanel.CancelButton();
AlertMessage.instance.InitAlertMessage("The merchant doesn't have enough golds.", 1.5f);
}
}
}
}
}