using System; using EFT.Interactive; using stupid.solutions.Utils; using UnityEngine; namespace stupid.solutions.Data; internal class GameExfiltrationPoint { private Vector3 screenPosition; public ExfiltrationPoint ExfiltrationPoint { get; } public Vector3 ScreenPosition => screenPosition; public bool IsOnScreen { get; private set; } public float Distance { get; private set; } public string Name { get; set; } public string status { get; set; } public string FormattedDistance => $"{Math.Round(Distance)}m"; public GameExfiltrationPoint(ExfiltrationPoint exfiltrationPoint) { if (exfiltrationPoint == null) { throw new ArgumentNullException("exfiltrationPoint"); } ExfiltrationPoint = exfiltrationPoint; screenPosition = default(Vector3); Distance = 0f; Name = ExtractionNameToSimpleName(exfiltrationPoint.Settings.Name.Localized()) ?? ""; } public void RecalculateDynamics() { if (!(ExfiltrationPoint == null) && GameUtils.IsExfiltrationPointValid(ExfiltrationPoint)) { screenPosition = GameUtils.WorldPointToScreenPoint(ExfiltrationPoint.transform.position); IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition); Distance = Vector3.Distance(Main.MainCamera.transform.position, ExfiltrationPoint.transform.position); if (ExfiltrationPoint.Status == EExfiltrationStatus.AwaitsManualActivation || ExfiltrationPoint.Status == EExfiltrationStatus.NotPresent) { status = "Closed"; } else { status = "Open"; } } } private string ExtractionNameToSimpleName(string extractionName) { if (extractionName.Contains("exit (3)")) { return "Cellars"; } if (extractionName.Contains("exit (1)")) { return "Gate 3"; } if (extractionName.Contains("exit (2)")) { return "Gate 0"; } if (extractionName.Contains("exit_scav_gate3")) { return "Gate 3"; } if (extractionName.Contains("exit_scav_camer")) { return "Blinking Light"; } if (extractionName.Contains("exit_scav_office")) { return "Office"; } if (extractionName.Contains("eastg")) { return "East Gate"; } if (extractionName.Contains("scavh")) { return "House"; } if (extractionName.Contains("deads")) { return "Dead Mans Place"; } if (extractionName.Contains("var1_1_constant")) { return "Outskirts"; } if (extractionName.Contains("scav_outskirts")) { return "Outskirts"; } if (extractionName.Contains("water")) { return "Outskirts Water"; } if (extractionName.Contains("boat")) { return "The Boat"; } if (extractionName.Contains("mountain")) { return "Mountain Stash"; } if (extractionName.Contains("oldstation")) { return "Old Station"; } if (extractionName.Contains("UNroad")) { return "UN Road Block"; } if (extractionName.Contains("var2_1_const")) { return "UN Road Block"; } if (extractionName.Contains("gatetofactory")) { return "Gate to Factory"; } if (extractionName.Contains("RUAF")) { return "RUAF Gate"; } if (extractionName.Contains("roadtoc")) { return "Road to Customs"; } if (extractionName.Contains("lighthouse")) { return "Lighthouse"; } if (extractionName.Contains("tunnel")) { return "Tunnel"; } if (extractionName.Contains("wreckedr")) { return "Wrecked Road"; } if (extractionName.Contains("deadend")) { return "Dead End"; } if (extractionName.Contains("housefence")) { return "Ruined House Fence"; } if (extractionName.Contains("gyment")) { return "Gym Entrance"; } if (extractionName.Contains("southfence")) { return "South Fence Passage"; } if (extractionName.Contains("adm_base")) { return "Admin Basement"; } if (extractionName.Contains("administrationg")) { return "Administration Gate"; } if (extractionName.Contains("factoryfar")) { return "Factory Far Corner"; } if (extractionName.Contains("oldazs")) { return "Old Gate"; } if (extractionName.Contains("milkp_sh")) { return "Shack"; } if (extractionName.Contains("beyondfuel")) { return "Beyond Fuel Tank"; } if (extractionName.Contains("railroadtom")) { return "Railroad to Mil Base"; } if (extractionName.Contains("_pay_car")) { return "V-Exit"; } if (extractionName.Contains("oldroadgate")) { return "Old Road Gate"; } if (extractionName.Contains("sniperroad")) { return "Sniper Road Block"; } if (extractionName.Contains("warehouse17")) { return "Warehouse 17"; } if (extractionName.Contains("factoryshacks")) { return "Factory Shacks"; } if (extractionName.Contains("railroadtotarkov")) { return "Railroad to Tarkov"; } if (extractionName.Contains("trailerpark")) { return "Trailer Park"; } if (extractionName.Contains("crossroads")) { return "Crossroads"; } if (extractionName.Contains("railroadtoport")) { return "Railroad to Port"; } if (extractionName.Contains("NW_Exfil")) { return "North West Extract"; } if (extractionName.Contains("SE_Exfil")) { return "Emmercom"; } return extractionName; } }