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 forgableItemIDs = new List(); [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); } }