using GTANetworkAPI; using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using ReallifeGamemode.Server.Util; using System.Collections; namespace ReallifeGamemode.Server.Job { public abstract class JobBase { public delegate void JobStartHandler(Client player); public delegate void JobStopHandler(Client player); public event JobStartHandler JobStart; public 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) { if (_inJob.Contains(player)) return; _inJob.Add(player); ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); JobStart?.Invoke(player); List list = new List(); list.Add(new Vector3(-105.5951, -1684.548, 29.23948)); list.Add(new Vector3(-1056.246, -2552.576, 13.66063)); list.Add(new Vector3(200.3088, -1978.828, 19.3329)); list.Add(new Vector3(358.6138, -1785.821, 28.92113)); list.Add(new Vector3(281.8594, -1462.503, 29.13148)); list.Add(new Vector3(77.72239, -1212.086, 29.12294)); list.Add(new Vector3(218.1398, -850.9549, 30.16619)); CheckPointHandle.startCheckPointRoute(player, list); } public void StopJob(Client player, bool quit = false) { if (!_inJob.Contains(player)) return; _inJob.Remove(player); if (quit) { ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); } JobStop?.Invoke(player); } public List GetJobVehicles() { using (var dbContext = new DatabaseContext()) { return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); } } public List GetUsersInJob() => _inJob; } }