Files
reallife-gamemode/Server/Managers/VehicleManager.cs

96 lines
2.6 KiB
C#

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<string> _enabledMods = new List<string>()
{
"polamggtr"
};
private static Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
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<int, NetHandle> 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;
}
}
}