168 lines
4.8 KiB
C#
168 lines
4.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using UnityEngine;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
using NaughtyAttributes;
|
|
using UnityEngine.Analytics;
|
|
|
|
public class ForgeController : MonoBehaviour
|
|
{
|
|
public static int siegePassTier = 0;
|
|
public static int[] oreCounts = new int[7];
|
|
|
|
[SerializeField] private ForgableItem forgableItemPrefab;
|
|
[SerializeField] private Transform forgableItemParent;
|
|
private List<int> forgableItemIDs = new List<int>();
|
|
|
|
[SerializeField] private Image forgableBigItem;
|
|
[SerializeField] private Button forgeButton;
|
|
[System.NonSerialized] public int CurrentItemIDInForge = -1;
|
|
|
|
[BoxGroup("Weapon Stats Manager")] public WeaponStatsManager StatsManager;
|
|
|
|
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryPlayerRender;
|
|
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryEquiptmentBar;
|
|
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryBanner;
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryText;
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryKeyCodes;
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Transform inventoryInspectionText;
|
|
[BoxGroup("Inventory Assignments"), SerializeField]
|
|
private Image inventoryBackground;
|
|
|
|
private const float cachedInventoryBackgroundAlpha = 0.9568627f;
|
|
|
|
[BoxGroup("Buttons"), SerializeField] private Button exitButton;
|
|
|
|
public void Awake()
|
|
{
|
|
//set all orecounts to 0
|
|
for (int i = 0; i < oreCounts.Length; i++)
|
|
{
|
|
oreCounts[i] = 0;
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
StatsManager.GetCanvasGroup().alpha = 0;
|
|
forgableBigItem.enabled = false;
|
|
forgeButton.gameObject.SetActive(false);
|
|
GenerateForgableItems();
|
|
|
|
for (int i = 0; i < 7; i++)
|
|
{
|
|
GameObject g = GameObject.Find("ore_count_" + i);
|
|
//get the textmesh component if it exists
|
|
if (g != null)
|
|
{
|
|
if (g.TryGetComponent(out TextMeshProUGUI t))
|
|
{
|
|
t.text = ForgeController.oreCounts[i].ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
exitButton.onClick.AddListener(OnExitPressed);
|
|
forgeButton.onClick.AddListener(Forge);
|
|
}
|
|
|
|
private void Forge()
|
|
{
|
|
PacketManager.sendChatMessage("/forge " + CurrentItemIDInForge);
|
|
forgeButton.gameObject.SetActive(false);
|
|
forgableBigItem.enabled = false;
|
|
GenerateForgableItems();
|
|
}
|
|
|
|
|
|
public Button GetForgeButton() => forgeButton;
|
|
public Image GetBigPicture() => forgableBigItem;
|
|
|
|
public void GenerateForgableItems()
|
|
{
|
|
if (InventoryManager.Instance == null) return;
|
|
|
|
ResetForgableItems();
|
|
InventoryManager inventory = InventoryManager.Instance;
|
|
Debug.Log("Total items are :" + ItemDef.GetInstance().GetTotalItems().ToString());
|
|
for (int i = 0; i < ItemDef.GetInstance().GetTotalItems(); i++)
|
|
{
|
|
if (inventory.GetForableItemCount(i) >= 4)
|
|
{
|
|
forgableItemIDs.Add(i);
|
|
}
|
|
}
|
|
|
|
foreach (int itemID in forgableItemIDs)
|
|
{
|
|
//Debug.Log("Item IDs to Forge: " + itemID);
|
|
ForgableItem forgableItem = Instantiate(forgableItemPrefab, forgableItemParent);
|
|
forgableItem.SetSprite(itemID);
|
|
}
|
|
}
|
|
|
|
private void ResetForgableItems()
|
|
{
|
|
for (int i = 0; i < forgableItemParent.childCount; i++)
|
|
{
|
|
Destroy(forgableItemParent.GetChild(i).gameObject);
|
|
}
|
|
|
|
forgableItemIDs.Clear();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (inventoryBanner.gameObject.activeInHierarchy)
|
|
{
|
|
ToggleInventoryMenus(false);
|
|
}
|
|
}
|
|
|
|
private void ToggleInventoryMenus(bool isOn)
|
|
{
|
|
inventoryEquiptmentBar.gameObject.SetActive(isOn);
|
|
inventoryPlayerRender.gameObject.SetActive(isOn);
|
|
inventoryBanner.gameObject.SetActive(isOn);
|
|
inventoryText.gameObject.SetActive(isOn);
|
|
inventoryInspectionText.gameObject.SetActive(isOn);
|
|
inventoryKeyCodes.gameObject.SetActive(isOn);
|
|
|
|
Color tempCol = inventoryBackground.color;
|
|
tempCol.a = isOn ? cachedInventoryBackgroundAlpha : 1.0f;
|
|
inventoryBackground.color = tempCol;
|
|
}
|
|
|
|
|
|
private void OnExitPressed()
|
|
{
|
|
PacketManager.sendChatMessage("/closeForge");
|
|
gameObject.SetActive(false);
|
|
Player.Instance.UpdatePlayerOnMenuClose();
|
|
StatsManager.GetCanvasGroup().alpha = 0;
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
ToggleInventoryMenus(true);
|
|
UIManager.Instance.Inventory?.SetActive(true);
|
|
UIManager.Instance.WeaponStatsManager?.HideCall();
|
|
UIManager.Instance.Inventory?.SetActive(false);
|
|
|
|
}
|
|
} |