Vehicle tuning is saved now

This commit is contained in:
hydrant
2018-11-29 20:55:35 +01:00
parent fab3f05575
commit 3851d404b9
4 changed files with 71 additions and 6 deletions

View File

@@ -41,6 +41,9 @@ namespace reallife_gamemode.Model
modelBuilder.Entity<Server.Entities.ServerVehicle>()
.Property(sv => sv.Active)
.HasDefaultValue(true);
modelBuilder.Entity<Server.Entities.VehicleMod>()
.HasIndex(vM => new { vM.ServerVehicleId, vM.Slot }).IsUnique();
}
//User
@@ -87,5 +90,6 @@ namespace reallife_gamemode.Model
// Server Vehicles
public DbSet<Server.Entities.ServerVehicle> ServerVehicles { get; set; }
public DbSet<Server.Entities.VehicleMod> VehicleMods { get; set; }
}
}

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

View File

@@ -36,13 +36,9 @@ namespace reallife_gamemode.Server.Managers
if (!veh.Active) continue;
Vehicle current = veh.Spawn();
TuningManager.ApplyTuningToServerVehicle(veh);
if (veh is Saves.SavedVehicle savedV)
{
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)
if (veh is ShopVehicle shopV)
{
string displayName = NAPI.Vehicle.GetVehicleDisplayName(shopV.Model);
NAPI.Vehicle.SetVehicleEngineHealth(current, 0);

View File

@@ -1,7 +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
{
@@ -38,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)
{
@@ -51,6 +67,33 @@ 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
{
vMod.ModId = index;
}
dbContext.SaveChanges();
}
}
}
}