ClientServer/Client/Assets/Scripts/UI/Forge/ForgeController.cs
TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

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);
}
}