using GTANetworkAPI; using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Services; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ReallifeGamemode.Server.Job { public abstract class JobBase { protected delegate void JobStartHandler(); protected delegate void JobStopHandler(); protected event JobStartHandler JobStart; protected event JobStopHandler JobStop; private readonly List _inJob = new List(); public abstract int Id { get; } public abstract string Name { get; } public abstract bool NeedVehicleToStart { get; } public void StartJob(Client player) { _inJob.Add(player); if (NeedVehicleToStart && !GetJobVehicles().Any(v => VehicleManager.GetVehicleFromServerVehicle(v).Handle.Value == player.Vehicle?.Handle.Value)) { ChatService.Error(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein"); return; } JobStart?.Invoke(); } public void StopJob(Client player) { _inJob.Remove(player); JobStop?.Invoke(); } public List GetJobVehicles() { using (var dbContext = new DatabaseContext()) { return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); } } public List GetUsersInJob() => _inJob; } }