Vehicle tuning is saved now
This commit is contained in:
@@ -41,6 +41,9 @@ namespace reallife_gamemode.Model
|
|||||||
modelBuilder.Entity<Server.Entities.ServerVehicle>()
|
modelBuilder.Entity<Server.Entities.ServerVehicle>()
|
||||||
.Property(sv => sv.Active)
|
.Property(sv => sv.Active)
|
||||||
.HasDefaultValue(true);
|
.HasDefaultValue(true);
|
||||||
|
|
||||||
|
modelBuilder.Entity<Server.Entities.VehicleMod>()
|
||||||
|
.HasIndex(vM => new { vM.ServerVehicleId, vM.Slot }).IsUnique();
|
||||||
}
|
}
|
||||||
|
|
||||||
//User
|
//User
|
||||||
@@ -87,5 +90,6 @@ namespace reallife_gamemode.Model
|
|||||||
|
|
||||||
// Server Vehicles
|
// Server Vehicles
|
||||||
public DbSet<Server.Entities.ServerVehicle> ServerVehicles { get; set; }
|
public DbSet<Server.Entities.ServerVehicle> ServerVehicles { get; set; }
|
||||||
|
public DbSet<Server.Entities.VehicleMod> VehicleMods { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
Server/Entities/VehicleMod.cs
Normal file
22
Server/Entities/VehicleMod.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace reallife_gamemode.Server.Entities
|
||||||
|
{
|
||||||
|
public class VehicleMod
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey("Vehicle")]
|
||||||
|
public int ServerVehicleId { get; set; }
|
||||||
|
public ServerVehicle Vehicle { get; set; }
|
||||||
|
|
||||||
|
public int Slot { get; set; }
|
||||||
|
public int ModId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,13 +36,9 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
if (!veh.Active) continue;
|
if (!veh.Active) continue;
|
||||||
|
|
||||||
Vehicle current = veh.Spawn();
|
Vehicle current = veh.Spawn();
|
||||||
|
TuningManager.ApplyTuningToServerVehicle(veh);
|
||||||
|
|
||||||
if (veh is Saves.SavedVehicle savedV)
|
if (veh is ShopVehicle shopV)
|
||||||
{
|
|
||||||
NAPI.Vehicle.CreateVehicle((uint)savedV.Model, new Vector3(savedV.PositionX, savedV.PositionY, savedV.PositionZ), savedV.Heading, savedV.PrimaryColor,
|
|
||||||
savedV.SecondaryColor, savedV.NumberPlate, 255, savedV.Locked);
|
|
||||||
}
|
|
||||||
else if (veh is ShopVehicle shopV)
|
|
||||||
{
|
{
|
||||||
string displayName = NAPI.Vehicle.GetVehicleDisplayName(shopV.Model);
|
string displayName = NAPI.Vehicle.GetVehicleDisplayName(shopV.Model);
|
||||||
NAPI.Vehicle.SetVehicleEngineHealth(current, 0);
|
NAPI.Vehicle.SetVehicleEngineHealth(current, 0);
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using reallife_gamemode.Model;
|
||||||
using reallife_gamemode.Server.Entities;
|
using reallife_gamemode.Server.Entities;
|
||||||
using reallife_gamemode.Server.Extensions;
|
using reallife_gamemode.Server.Extensions;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace reallife_gamemode.Server.Managers
|
namespace reallife_gamemode.Server.Managers
|
||||||
{
|
{
|
||||||
@@ -38,6 +40,20 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
tuningGarages.Add(colShape);
|
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")]
|
[RemoteEvent("startPlayerTuning")]
|
||||||
public void StartPlayerTuning(Client player)
|
public void StartPlayerTuning(Client player)
|
||||||
{
|
{
|
||||||
@@ -51,6 +67,33 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (index == 0) index--;
|
if (index == 0) index--;
|
||||||
player.Vehicle.SetMod(slot, index - 1);
|
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
|
||||||
|
{
|
||||||
|
vMod.ModId = index;
|
||||||
|
}
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user