0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 08:30:45 -05:00
modules/project/SPT.Custom/Utils/BundleUtils.cs
Lacyway d9747c16cc Add GUI Component to Bundle Loading (!140)
This gives users feedback that the game is currently loading bundles, which prevents confusion when a large amount of them are being loaded and the game is "seemingly" infinitely loading.
The implementation is very bare bones, feel free to modify it to your liking if you want it to use a more fancy user interface. I went for clarity (black background, white text). With the standard `OnGUI` skin it's very hard to discern the text.
Tested on 1440p and 1080p.

![image](/attachments/31a818d6-d101-4e5d-a2c5-541c8b48ba71)

Co-authored-by: Lacyway <20912169+Lacyway@users.noreply.github.com>
Reviewed-on: SPT/Modules#140
Co-authored-by: Lacyway <lacyway@noreply.dev.sp-tarkov.com>
Co-committed-by: Lacyway <lacyway@noreply.dev.sp-tarkov.com>
2024-06-18 19:03:36 +00:00

58 lines
1.7 KiB
C#

using UnityEngine;
namespace SPT.Custom.Utils
{
public class BundleUtils : MonoBehaviour
{
private GameObject rootObject;
private int current;
private int maximum;
private string bundleName;
private Texture2D bgTexture;
public static BundleUtils Create()
{
GameObject bundleUtilsObject = new GameObject("BundleUtilsObject");
BundleUtils bundleUtils = bundleUtilsObject.AddComponent<BundleUtils>();
bundleUtils.rootObject = bundleUtilsObject;
bundleUtils.current = 0;
bundleUtils.maximum = 0;
bundleUtils.enabled = true;
bundleUtils.bgTexture = new Texture2D(2, 2);
return bundleUtils;
}
public void Init(int length)
{
maximum = length;
}
public void SetProgress(int progress, string fileName)
{
current = progress;
bundleName = fileName;
}
public void Dispose()
{
Destroy(rootObject);
Destroy(this);
}
public void OnGUI()
{
GUI.skin.label.alignment = TextAnchor.MiddleCenter;
GUI.skin.window.alignment = TextAnchor.MiddleCenter;
GUI.skin.window.normal.background = bgTexture;
GUI.backgroundColor = Color.black;
GUI.Window(0, new Rect((Screen.width / 2) - 200, (Screen.height / 2) + 200, 500, 80), DrawWindow, "Bundle Loading");
}
private void DrawWindow(int windowId)
{
GUI.Label(new Rect(0, 35, 500, 20), $"Loading bundle: {current} / {maximum}");
GUI.Label(new Rect(0, 50, 500, 20), bundleName);
}
}
}