using GTANetworkAPI; using reallife_gamemode.Server.Entities; using System; using System.Collections.Generic; using System.Text; using reallife_gamemode.Model; namespace reallife_gamemode.Server.Managers { public class VehicleManager { private static readonly List _enabledMods = new List() { "polamggtr", "g65amg" }; private static Dictionary _serverVehicles = new Dictionary(); public static void AddVehicle(ServerVehicle serverVehicle, Vehicle vehicle) { if(_serverVehicles.ContainsKey(serverVehicle.Id)) { return; } if (_serverVehicles.ContainsValue(vehicle.Handle)) { return; } _serverVehicles[serverVehicle.Id] = vehicle.Handle; } internal static void DeleteVehicle(Vehicle veh) { ServerVehicle sVeh; if ((sVeh = GetServerVehicleFromVehicle(veh)) != null) { _serverVehicles.Remove(sVeh.Id); } veh.Delete(); } public static Vehicle GetVehicleFromHandle(NetHandle handle) { return NAPI.Pools.GetAllVehicles().Find(v => v.Handle == handle); } public static Vehicle GetVehicleFromId(int id) { return NAPI.Pools.GetAllVehicles().Find(v => v.Handle.Value == id); } public static Vehicle GetVehicleFromServerVehicle(ServerVehicle serverVehicle) { if(!_serverVehicles.ContainsKey(serverVehicle.Id)) { return null; } return GetVehicleFromHandle(_serverVehicles[serverVehicle.Id]); } public static ServerVehicle GetServerVehicleFromVehicle(Vehicle veh) { using (var dbContext = new DatabaseContext()) { foreach(KeyValuePair pair in _serverVehicles) { if (pair.Value == veh.Handle) { return dbContext.ServerVehicles.Find(pair.Key); } } } return null; } public static bool IsValidHash(uint hash) { foreach(VehicleHash vh in Enum.GetValues(typeof(VehicleHash))) { if ((uint)vh == hash) return true; } foreach(string mod in _enabledMods) { if (NAPI.Util.GetHashKey(mod) == hash) return true; } return false; } } }