Changed whole project structure (split client and server into separat projects)
This commit is contained in:
144
ReallifeGamemode.Server/Managers/VehicleManager.cs
Normal file
144
ReallifeGamemode.Server/Managers/VehicleManager.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
public class VehicleManager
|
||||
{
|
||||
private static readonly List<string> _enabledMods = new List<string>()
|
||||
{
|
||||
"models",
|
||||
"polamggtr",
|
||||
"impaler3",
|
||||
"monster4",
|
||||
"monster5",
|
||||
"slamvan6",
|
||||
"issi6",
|
||||
"cerberus2",
|
||||
"cerberus3",
|
||||
"deathbike2",
|
||||
"dominator6",
|
||||
"deathbike3",
|
||||
"impaler4",
|
||||
"slamvan4",
|
||||
"slamvan5",
|
||||
"brutus",
|
||||
"brutus2",
|
||||
"brutus3",
|
||||
"deathbike",
|
||||
"dominator4",
|
||||
"dominator5",
|
||||
"bruiser",
|
||||
"bruiser2",
|
||||
"bruiser3",
|
||||
"rcbandito",
|
||||
"italigto",
|
||||
"cerberus",
|
||||
"impaler2",
|
||||
"monster3",
|
||||
"tulip",
|
||||
"scarab",
|
||||
"scarab2",
|
||||
"scarab3",
|
||||
"issi4",
|
||||
"issi5",
|
||||
"clique",
|
||||
"deveste",
|
||||
"vamos",
|
||||
"imperator",
|
||||
"imperator2",
|
||||
"imperator3",
|
||||
"toros",
|
||||
"deviant",
|
||||
"schlagen",
|
||||
"impaler",
|
||||
"zr380",
|
||||
"zr3802",
|
||||
"zr3803",
|
||||
"flashgt",
|
||||
"gb200",
|
||||
"dominator3"
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user