f35c8a6d6e
Upgraded the framework which includes the Distant cell rendering. I have been merging meshes to cut down the Draw calls, so far gaining on average 20FPS everywhere. New bugs are the magic fails (Again) and the environment presets fail to call when outside. Currently trying to build new lightmaps for the combined meshes.
187 lines
6.7 KiB
C#
187 lines
6.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using RPGCreationKit;
|
|
|
|
namespace RPGCreationKit
|
|
{
|
|
public class BookItemInTradeUI : BookItemInInventoryUI
|
|
{
|
|
public override void OnClick(bool takeAll = false)
|
|
{
|
|
if (TradeSystemUI.instance.isBuyingOrDrawing)
|
|
{
|
|
Debug.Log("Taking item: " + base.bookItemInInventory.item.ItemName);
|
|
if (TradeSystemUI.instance.isMerchant)
|
|
{
|
|
// if the amount is 1, add it one time
|
|
if (base.bookItemInInventory.Amount <= 1)
|
|
{
|
|
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.confirmTradePanel.Init(base.bookItemInInventory, this, "Are you sure you want to buy 1 " + base.bookItemInInventory.item.ItemName + " for " + base.bookItemInInventory.item.Value + " golds?");
|
|
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(1, ConfirmTradeAction.BuyFromMerchant));
|
|
}
|
|
else if (base.bookItemInInventory.item.isCumulable && base.bookItemInInventory.Amount > 1)
|
|
{
|
|
TradeSystemUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.takeDepositItemsPanel.Init(bookItemInInventory, this);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// we're drawing from a friendly npc
|
|
}
|
|
}
|
|
else // we're selling
|
|
{
|
|
if (base.bookItemInInventory.item.QuestItem)
|
|
{
|
|
AlertMessage.instance.InitAlertMessage("You can't sell Quest Items", AlertMessage.DEFAULT_MESSAGE_DURATION_MEDIUM);
|
|
return;
|
|
}
|
|
|
|
// if the amount is 1, add it one time
|
|
if (TradeSystemUI.instance.isMerchant)
|
|
{
|
|
// if the amount is 1, add it one time
|
|
if (base.bookItemInInventory.Amount <= 1)
|
|
{
|
|
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.confirmTradePanel.Init(base.bookItemInInventory, this, "Are you sure you want to sell 1 " + base.bookItemInInventory.item.ItemName + " for " + base.bookItemInInventory.item.Value + " golds?");
|
|
TradeSystemUI.instance.confirmTradePanel.continueButton.onClick.AddListener(() => ConfirmTrade(1, ConfirmTradeAction.SellToMerchant));
|
|
}
|
|
else if (base.bookItemInInventory.item.isCumulable && base.bookItemInInventory.Amount > 1)
|
|
{
|
|
TradeSystemUI.instance.takeDepositItemsPanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.takeDepositItemsPanel.Init(bookItemInInventory, this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void ConfirmButtonCumulableItem(int amount)
|
|
{
|
|
if (TradeSystemUI.instance.isBuyingOrDrawing)
|
|
{
|
|
if (TradeSystemUI.instance.isMerchant)
|
|
{
|
|
TradeSystemUI.instance.takeDepositItemsPanel.CancelButton();
|
|
|
|
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.confirmTradePanel.Init(base.bookItemInInventory, this, "Are you sure you want to buy " + amount + " " + base.bookItemInInventory.item.ItemName + " for " + (base.bookItemInInventory.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.takeDepositItemsPanel.CancelButton();
|
|
|
|
TradeSystemUI.instance.confirmTradePanel.gameObject.SetActive(true);
|
|
TradeSystemUI.instance.confirmTradePanel.Init(base.bookItemInInventory, this, "Are you sure you want to sell " + amount + " " + base.bookItemInInventory.item.ItemName + " for " + (base.bookItemInInventory.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.bookItemInInventory.item.Value * _amount);
|
|
|
|
if (_action == ConfirmTradeAction.BuyFromMerchant)
|
|
{
|
|
if (Inventory.PlayerInventory.GetItemCount("Gold001") >= totalGoldsAmount)
|
|
{
|
|
Inventory.PlayerInventory.AddItem(base.bookItemInInventory.item, base.bookItemInInventory.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.bookItemInInventory, _amount);
|
|
|
|
TradeSystemUI.instance.PlaySound(GoldsSounds.Spend);
|
|
TradeSystemUI.instance.confirmTradePanel.CancelButton();
|
|
AlertMessage.instance.InitAlertMessage("Transaction Completed!", 3f);
|
|
|
|
TradeSystemUI.instance.UpdateStatsUI();
|
|
|
|
// if the merchant's item is out of stocks, remove the item
|
|
|
|
if (base.bookItemInInventory.Amount <= 0)
|
|
{
|
|
TradeSystemUI.instance.SelectNextButton();
|
|
|
|
// Disable this object
|
|
pool.usedObjects.Remove(this);
|
|
pool.BooksPool.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 gold.", 3f);
|
|
}
|
|
}
|
|
else if (_action == ConfirmTradeAction.SellToMerchant)
|
|
{
|
|
if (TradeSystemUI.instance.curMerchant.inventory.GetItemCount("Gold001") >= totalGoldsAmount)
|
|
{
|
|
TradeSystemUI.instance.curMerchant.inventory.AddItem(base.bookItemInInventory.item, base.bookItemInInventory.metadata, _amount);
|
|
Inventory.PlayerInventory.RemoveItem(base.bookItemInInventory, _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!", 3f);
|
|
|
|
TradeSystemUI.instance.UpdateStatsUI();
|
|
|
|
// if the merchant's item is out of stocks, remove the item
|
|
|
|
if (base.bookItemInInventory.Amount <= 0)
|
|
{
|
|
TradeSystemUI.instance.SelectNextButton();
|
|
|
|
// Disable this object
|
|
pool.usedObjects.Remove(this);
|
|
pool.BooksPool.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 gold.", 3f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |