EFTCheatPVE/EscapeFromTarkovCheat/Features/ESP/ItemESP.cs

81 lines
3.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using Comfort.Common;
using EFT;
using EFT.Interactive;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using JsonType;
using UnityEngine;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public class ItemESP : MonoBehaviour
{
private static readonly float CacheLootItemsInterval = 4f;
private float _nextLootItemCacheTime;
//private static readonly Color SpecialColor = new Color(1f, 0.2f, 0.09f);
private static readonly Color QuestColor = Color.yellow;
private static readonly Color CommonColor = Color.white;
private static readonly Color RareColor = new Color(0.38f, 0.43f, 1f);
private static readonly Color SuperRareColor = new Color(1f, 0.29f, 0.36f);
private List<GameLootItem> _gameLootItems = new List<GameLootItem>();
private Stopwatch _stopwatch = new Stopwatch();
public void Update()
{
if (!Settings.DrawLootItems)
return;
if (Time.time >= _nextLootItemCacheTime)
{
if ((Main.GameWorld != null) && (Main.GameWorld.LootItems != null))
{
_gameLootItems.Clear();
for (int i = 0; i < Main.GameWorld.LootItems.Count; i++)
{
LootItem lootItem = Main.GameWorld.LootItems.GetByIndex(i);
if (!GameUtils.IsLootItemValid(lootItem) || (Vector3.Distance(Main.MainCamera.transform.position, lootItem.transform.position) > Settings.DrawLootItemsDistance))
continue;
_gameLootItems.Add(new GameLootItem(lootItem));
}
_nextLootItemCacheTime = (Time.time + CacheLootItemsInterval);
}
}
foreach (GameLootItem gameLootItem in _gameLootItems)
gameLootItem.RecalculateDynamics();
}
private void OnGUI()
{
if (Settings.DrawLootItems)
{
foreach (var gameLootItem in _gameLootItems)
{
if (!GameUtils.IsLootItemValid(gameLootItem.LootItem) || !gameLootItem.IsOnScreen || gameLootItem.Distance > Settings.DrawLootItemsDistance)
continue;
string lootItemName = $"{gameLootItem.LootItem.Item.ShortName.Localized()} [{gameLootItem.FormattedDistance}]";
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Common)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, CommonColor);
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Rare)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, RareColor);
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Superrare)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, SuperRareColor);
if (gameLootItem.LootItem.Item.Template.QuestItem)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, QuestColor);
}
}
}
}
}