Merge branch 'develop' into feature/inventory-system
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Server.Business;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
using reallife_gamemode.Server.Util;
|
||||
@@ -13,11 +14,44 @@ using reallife_gamemode.Server.Util;
|
||||
* @copyright (c) 2008 - 2018 Life of German
|
||||
*/
|
||||
|
||||
|
||||
namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
public class BankManager : Script
|
||||
public class BankManager
|
||||
{
|
||||
public static TransactionResult SetMoney(Client admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt")
|
||||
{
|
||||
using (var transferMoney = new Model.DatabaseContext())
|
||||
{
|
||||
if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT;
|
||||
|
||||
IBankAccount account = owner.GetBankAccount(transferMoney);
|
||||
|
||||
if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT;
|
||||
|
||||
var transactionLog = new Logs.BankAccountTransactionHistory
|
||||
{
|
||||
Sender = "ADMIN: " + admin.Name,
|
||||
SenderBalance = 0,
|
||||
Receiver = owner.Name,
|
||||
ReceiverBalance = amount,
|
||||
NewReceiverBalance = amount,
|
||||
NewSenderBalance = 0,
|
||||
MoneySent = amount,
|
||||
Fee = 0,
|
||||
Origin = reason
|
||||
};
|
||||
|
||||
// add log
|
||||
transferMoney.BankAccountTransactionLogs.Add(transactionLog);
|
||||
|
||||
account.Balance = amount;
|
||||
|
||||
transferMoney.SaveChanges();
|
||||
|
||||
return TransactionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
public static TransactionResult TransferMoney(IBankAccountOwner sender, IBankAccountOwner receiver, int amount, string origin)
|
||||
{
|
||||
using (var transferMoney = new Model.DatabaseContext())
|
||||
|
||||
112
Server/Managers/BusinessManager.cs
Normal file
112
Server/Managers/BusinessManager.cs
Normal file
@@ -0,0 +1,112 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Server.Business;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
using reallife_gamemode.Server.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
class BusinessManager : Script
|
||||
{
|
||||
public static List<BusinessBase> Businesses { get; private set; }
|
||||
|
||||
public static void LoadBusinesses()
|
||||
{
|
||||
Businesses = new List<BusinessBase>();
|
||||
|
||||
IEnumerable<Type> allTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => type.IsClass && !type.IsAbstract && type.IsSubclassOf(typeof(BusinessBase)));
|
||||
foreach (Type item in allTypes)
|
||||
{
|
||||
NAPI.Util.ConsoleOutput($"Loading Business {item.Name}");
|
||||
if (Activator.CreateInstance(item) is BusinessBase o)
|
||||
{
|
||||
if (GetBusiness(o.Id) != null)
|
||||
{
|
||||
throw new InvalidOperationException($"Double Business ID found: {o.Id} | {o.Name}");
|
||||
}
|
||||
Businesses.Add(o);
|
||||
o.Setup();
|
||||
o.Load();
|
||||
o.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static T GetBusiness<T>() where T : BusinessBase
|
||||
{
|
||||
return (T)Businesses.Find(b => b.GetType() == typeof(T));
|
||||
}
|
||||
|
||||
public static BusinessBase GetBusiness(int? id)
|
||||
{
|
||||
return Businesses.Find(b => b.Id == id);
|
||||
}
|
||||
|
||||
[RemoteEvent("Business_DepositMoney")]
|
||||
public void BusinessDepositMoney(Client player, int amount)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
if(user == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BusinessBase playerBusiness = GetBusiness(user.BusinessId);
|
||||
|
||||
TransactionResult result = BankManager.TransferMoney(user, playerBusiness, amount, "Überweisung");
|
||||
|
||||
/*if(result == TransactionResult.NEGATIVE_MONEY_SENT)
|
||||
{
|
||||
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
|
||||
return;
|
||||
}
|
||||
else if(result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||
{
|
||||
player.SendNotification("~r~Du hast nicht genug Geld");
|
||||
return;
|
||||
}
|
||||
else */if(result == TransactionResult.SUCCESS)
|
||||
{
|
||||
player.TriggerEvent("business_updateMoney", playerBusiness.GetBankAccount().Balance.ToMoneyString());
|
||||
player.SendNotification("~g~Du hast erfolgreich ~s~" + amount.ToMoneyString() + " ~g~ überwiesen");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("Business_WithdrawMoney")]
|
||||
public void BusinessWithdrawMoney(Client player, int amount)
|
||||
{
|
||||
User user = player.GetUser();
|
||||
if (user == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BusinessBase playerBusiness = GetBusiness(user.BusinessId);
|
||||
|
||||
TransactionResult result = BankManager.TransferMoney(playerBusiness, user, amount, "Überweisung");
|
||||
|
||||
if (result == TransactionResult.NEGATIVE_MONEY_SENT)
|
||||
{
|
||||
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
|
||||
return;
|
||||
}
|
||||
else if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||
{
|
||||
player.SendNotification("~r~Es ist nicht genug Geld auf der Businesskasse vorhanden");
|
||||
return;
|
||||
}
|
||||
else if (result == TransactionResult.SUCCESS)
|
||||
{
|
||||
player.TriggerEvent("business_updateMoney", playerBusiness.GetBankAccount().Balance.ToMoneyString());
|
||||
player.SendNotification("~g~Du hast erfolgreich ~s~" + amount.ToMoneyString() + " ~g~ überwiesen");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Model;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
|
||||
/**
|
||||
* @overview Life of German Reallife - Managers LoadManager (LoadManager.cs)
|
||||
@@ -15,10 +16,6 @@ namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
public class LoadManager : Script
|
||||
{
|
||||
public static List<GotoPoint> GotoPointList = new List<GotoPoint>();
|
||||
public static List<Vehicle> FactionVehicleList = new List<Vehicle>();
|
||||
public static List<Vehicle> ShopVehicleList = new List<Vehicle>();
|
||||
public static List<Vehicle> UserVehicleList = new List<Vehicle>();
|
||||
|
||||
[ServerEvent(Event.ResourceStart)]
|
||||
public void OnResourceStart()
|
||||
@@ -33,51 +30,24 @@ namespace reallife_gamemode.Server.Managers
|
||||
b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension);
|
||||
}
|
||||
}
|
||||
foreach (GotoPoint g in loadData.GotoPoints)
|
||||
|
||||
foreach(ServerVehicle veh in loadData.ServerVehicles)
|
||||
{
|
||||
if (g.Active == true)
|
||||
if (!veh.Active) continue;
|
||||
|
||||
Vehicle current = veh.Spawn();
|
||||
TuningManager.ApplyTuningToServerVehicle(veh);
|
||||
|
||||
if (veh is ShopVehicle shopV)
|
||||
{
|
||||
GotoPointList.Add(g);
|
||||
}
|
||||
}
|
||||
foreach (Saves.SavedVehicle v in loadData.Vehicles)
|
||||
{
|
||||
if (v.Active == true)
|
||||
{
|
||||
NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||
v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
|
||||
}
|
||||
}
|
||||
foreach (FactionVehicle v in loadData.FactionVehicles)
|
||||
{
|
||||
if (v.Active == true)
|
||||
{
|
||||
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||
v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
|
||||
current.SetData("factionId", v.FactionId);
|
||||
FactionVehicleList.Add(current);
|
||||
}
|
||||
}
|
||||
foreach (ShopVehicle v in loadData.ShopVehicles)
|
||||
{
|
||||
if (v.Active == true)
|
||||
{
|
||||
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||
v.SecondaryColor, v.NumberPlate, v.Alpha, false, false, v.Dimension);
|
||||
ShopVehicleList.Add(current);
|
||||
string displayName = NAPI.Vehicle.GetVehicleDisplayName(shopV.Model);
|
||||
NAPI.Vehicle.SetVehicleEngineHealth(current, 0);
|
||||
var tLabel = NAPI.TextLabel.CreateTextLabel(v.ModelName + " | " + v.Price + "~g~$", new Vector3(v.PositionX, v.PositionY, v.PositionZ + 1.5), 10, 1, 0, new Color(255, 255, 255), false, v.Dimension);
|
||||
current.SetData("shopVehicleId", v.Id);
|
||||
var tLabel = NAPI.TextLabel.CreateTextLabel(displayName + " | " + shopV.Price.ToMoneyString(), new Vector3(shopV.PositionX, shopV.PositionY, shopV.PositionZ + 1.5), 10, 1, 0, new Color(255, 255, 255), false);
|
||||
tLabel.AttachTo(current, "chassis", new Vector3(0, 0, 1.5), new Vector3(0, 0, 0));
|
||||
}
|
||||
}
|
||||
foreach (UserVehicle v in loadData.UserVehicles)
|
||||
{
|
||||
Vehicle current = NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (v.PrimaryColor),
|
||||
v.SecondaryColor, v.NumberPlate, v.Alpha, false, false, v.Dimension);
|
||||
current.SetData("ownerId", v.UserId);
|
||||
UserVehicleList.Add(current);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Model;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
using reallife_gamemode.Server.Managers;
|
||||
using reallife_gamemode.Server.Saves;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -29,9 +32,9 @@ namespace reallife_gamemode.Server.Events
|
||||
|
||||
NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x,y,z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension);
|
||||
|
||||
using (var saveData = new Model.DatabaseContext())
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
var dataSet = new Server.Saves.SavedBlip
|
||||
var dataSet = new SavedBlip
|
||||
{
|
||||
Sprite = sprite,
|
||||
PositionX = x,
|
||||
@@ -52,12 +55,12 @@ namespace reallife_gamemode.Server.Events
|
||||
}
|
||||
}
|
||||
|
||||
public static void SaveVehicleData(VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, byte vehicleDimension)
|
||||
public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked)
|
||||
{
|
||||
using (var saveData = new Model.DatabaseContext())
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
var dataSet = new Server.Saves.SavedVehicle
|
||||
var dataSet = new SavedVehicle
|
||||
{
|
||||
Model = vehicleModel,
|
||||
PositionX = vehiclePosition.X,
|
||||
@@ -68,20 +71,21 @@ namespace reallife_gamemode.Server.Events
|
||||
PrimaryColor = vehiclePrimaryColor,
|
||||
SecondaryColor = vehicleSecondaryColor,
|
||||
Locked = vehicleLocked,
|
||||
Engine = vehicleEngine,
|
||||
Dimension = vehicleDimension,
|
||||
Active = true
|
||||
};
|
||||
saveData.Vehicles.Add(dataSet);
|
||||
saveData.SaveChanges();
|
||||
|
||||
return dataSet.Spawn(veh);
|
||||
}
|
||||
}
|
||||
public static void SaveFactionVehicleData(VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, byte vehicleDimension, int? factionId)
|
||||
public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int? factionId)
|
||||
{
|
||||
using (var saveData = new Model.DatabaseContext())
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
var dataSet = new Entities.FactionVehicle
|
||||
Console.WriteLine("Adding Faction Vehicle Secondary Color: " + vehicleSecondaryColor);
|
||||
var dataSet = new FactionVehicle
|
||||
{
|
||||
Model = vehicleModel,
|
||||
FactionId = factionId,
|
||||
@@ -93,23 +97,22 @@ namespace reallife_gamemode.Server.Events
|
||||
PrimaryColor = vehiclePrimaryColor,
|
||||
SecondaryColor = vehicleSecondaryColor,
|
||||
Locked = vehicleLocked,
|
||||
Engine = vehicleEngine,
|
||||
Dimension = vehicleDimension,
|
||||
Active = true
|
||||
};
|
||||
saveData.FactionVehicles.Add(dataSet);
|
||||
saveData.SaveChanges();
|
||||
|
||||
return dataSet.Spawn(veh);
|
||||
}
|
||||
}
|
||||
public static void SaveShopVehicleData(VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, byte vehicleDimension, int? factionId)
|
||||
public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor)
|
||||
{
|
||||
using (var saveData = new Model.DatabaseContext())
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
var dataSet = new Entities.ShopVehicle
|
||||
var dataSet = new ShopVehicle
|
||||
{
|
||||
Model = vehicleModel,
|
||||
ModelName = vehicleModelName,
|
||||
PositionX = vehiclePosition.X,
|
||||
PositionY = vehiclePosition.Y,
|
||||
PositionZ = vehiclePosition.Z,
|
||||
@@ -117,11 +120,12 @@ namespace reallife_gamemode.Server.Events
|
||||
NumberPlate = vehicleNumberPlate,
|
||||
PrimaryColor = vehiclePrimaryColor,
|
||||
SecondaryColor = vehicleSecondaryColor,
|
||||
Dimension = vehicleDimension,
|
||||
Active = true
|
||||
};
|
||||
saveData.ShopVehicles.Add(dataSet);
|
||||
saveData.SaveChanges();
|
||||
|
||||
return dataSet.Spawn(veh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,44 +143,31 @@ namespace reallife_gamemode.Server.Events
|
||||
};
|
||||
saveData.GotoPoints.Add(dataSet);
|
||||
saveData.SaveChanges();
|
||||
LoadManager.GotoPointList.Add(dataSet);
|
||||
}
|
||||
}
|
||||
public static void SaveAllOnSave()
|
||||
{
|
||||
// Alle Fahrzeuge
|
||||
using (var saveAll = new Model.DatabaseContext())
|
||||
{
|
||||
//TODO Fahrzeugschäden und Tankfüllstände
|
||||
//User Vehicle
|
||||
foreach (Vehicle v in LoadManager.UserVehicleList)
|
||||
foreach(ServerVehicle veh in saveAll.ServerVehicles)
|
||||
{
|
||||
int ownerId = v.GetData("ownerId");
|
||||
Entities.UserVehicle userVehicle = saveAll.UserVehicles.FirstOrDefault(u => u.UserId == ownerId);
|
||||
userVehicle.PositionX = v.Position.X;
|
||||
userVehicle.PositionY = v.Position.Y;
|
||||
userVehicle.PositionZ = v.Position.Z;
|
||||
userVehicle.Heading = v.Heading;
|
||||
}
|
||||
Vehicle v = VehicleManager.GetVehicleFromServerVehicle(veh);
|
||||
|
||||
//Faction Vehicle
|
||||
foreach (Vehicle v in LoadManager.FactionVehicleList)
|
||||
{
|
||||
int factionId = v.GetData("factionId");
|
||||
Entities.FactionVehicle factionVehicle = saveAll.FactionVehicles.FirstOrDefault(u => u.FactionId == factionId);
|
||||
factionVehicle.PositionX = v.Position.X;
|
||||
factionVehicle.PositionY = v.Position.Y;
|
||||
factionVehicle.PositionZ = v.Position.Z;
|
||||
factionVehicle.Heading = v.Heading;
|
||||
veh.PositionX = v.Position.X;
|
||||
veh.PositionY = v.Position.Y;
|
||||
veh.PositionZ = v.Position.Z;
|
||||
veh.Heading = v.Heading;
|
||||
}
|
||||
|
||||
//Alle Spieler
|
||||
foreach (Client player in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
int userId = player.GetUser().Id;
|
||||
Entities.User user = saveAll.Users.FirstOrDefault(u => u.Id == userId);
|
||||
user.PositionX = player.Position.X;
|
||||
user.PositionY = player.Position.Y;
|
||||
user.PositionZ = player.Position.Z;
|
||||
Vector3 pos = player.Position;
|
||||
User user = player.GetUser(saveAll);
|
||||
user.PositionX = pos.X;
|
||||
user.PositionY = pos.Y;
|
||||
user.PositionZ = pos.Z;
|
||||
}
|
||||
|
||||
saveAll.SaveChanges();
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Model;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
@@ -19,7 +23,12 @@ namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
if(c.IsInVehicle)
|
||||
{
|
||||
c.TriggerEvent("showTuningInfo", c.GetData("duty"));
|
||||
Vehicle v = c.Vehicle;
|
||||
if(v.GetServerVehicle() is FactionVehicle fV && fV.GetFaction().StateOwned)
|
||||
{
|
||||
return;
|
||||
}
|
||||
c.TriggerEvent("showTuningInfo");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -31,6 +40,20 @@ namespace reallife_gamemode.Server.Managers
|
||||
tuningGarages.Add(colShape);
|
||||
}
|
||||
|
||||
public static void ApplyTuningToServerVehicle(ServerVehicle sVeh)
|
||||
{
|
||||
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh);
|
||||
if (veh == null) return;
|
||||
|
||||
using(var dbContext = new DatabaseContext())
|
||||
{
|
||||
foreach(VehicleMod vMod in dbContext.VehicleMods.ToList().FindAll(vM => vM.ServerVehicleId == sVeh.Id))
|
||||
{
|
||||
veh.SetMod(vMod.Slot, vMod.ModId - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("startPlayerTuning")]
|
||||
public void StartPlayerTuning(Client player)
|
||||
{
|
||||
@@ -44,6 +67,42 @@ namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
if (index == 0) index--;
|
||||
player.Vehicle.SetMod(slot, index - 1);
|
||||
|
||||
ServerVehicle sV = player.Vehicle.GetServerVehicle();
|
||||
if (sV == null) return;
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
VehicleMod vMod = dbContext.VehicleMods.FirstOrDefault(m => m.ServerVehicleId == sV.Id && m.Slot == slot);
|
||||
if(vMod == null && index != -1)
|
||||
{
|
||||
vMod = new VehicleMod
|
||||
{
|
||||
ServerVehicleId = sV.Id,
|
||||
Slot = slot,
|
||||
ModId = index
|
||||
};
|
||||
dbContext.VehicleMods.Add(vMod);
|
||||
}
|
||||
else if(vMod != null && index == -1)
|
||||
{
|
||||
dbContext.VehicleMods.Remove(vMod);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vMod == null)
|
||||
{
|
||||
vMod = new VehicleMod
|
||||
{
|
||||
ServerVehicleId = sV.Id,
|
||||
Slot = slot
|
||||
};
|
||||
dbContext.VehicleMods.Add(vMod);
|
||||
}
|
||||
vMod.ModId = index;
|
||||
}
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
70
Server/Managers/VehicleManager.cs
Normal file
70
Server/Managers/VehicleManager.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
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<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 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user