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