From 0b26b89aff64fc96cd2a07cbe594a13731e358f8 Mon Sep 17 00:00:00 2001 From: hydrant Date: Thu, 15 Apr 2021 12:38:10 +0200 Subject: [PATCH] finish /look --- .../Gui/vehiclemenu/main.ts | 8 ++++- .../assets/html/vehiclemenu/lastPlayers.html | 33 ------------------- .../assets/vehicle/application.js | 23 +++++++++++-- .../assets/vehicle/lastPlayers.html | 15 ++++----- .../Commands/UserCommands.cs | 27 +++++++++++++-- .../Events/EnterVehicle.cs | 7 ++-- .../Managers/VehicleManager.cs | 2 +- 7 files changed, 63 insertions(+), 52 deletions(-) delete mode 100644 ReallifeGamemode.Client/assets/html/vehiclemenu/lastPlayers.html diff --git a/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts b/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts index 94cbf2eb..385eaacb 100644 --- a/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts +++ b/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts @@ -11,8 +11,10 @@ export default function vehicleMenu(globalData: IGlobalData) { let menuBrowser: BrowserMp = null; var lastDriversBrowser: BrowserMp = null; + var lastDrivers = null; + mp.events.add('lookLastDrivers', (lastDriversParam) => { - var lastDrivers = JSON.parse(lastDriversParam); + lastDrivers = JSON.parse(lastDriversParam); if (lastDriversBrowser !== null) { lastDriversBrowser.destroy(); @@ -29,6 +31,10 @@ export default function vehicleMenu(globalData: IGlobalData) { } }); + mp.events.add("CEF:VehicleLook_Loaded", () => { + lastDriversBrowser.execute(`setDrivers('${JSON.stringify(lastDrivers)}');`); + }); + mp.events.add("removeLookMenu", () => { if (lastDriversBrowser == null) { return; diff --git a/ReallifeGamemode.Client/assets/html/vehiclemenu/lastPlayers.html b/ReallifeGamemode.Client/assets/html/vehiclemenu/lastPlayers.html deleted file mode 100644 index f407ae18..00000000 --- a/ReallifeGamemode.Client/assets/html/vehiclemenu/lastPlayers.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Eingabe | Life of German - - - - - - - - -
-
-

Letze Fahrer

-
-
- • Hier
- • könnten
- • Ihre
- • letzen Fahrer
- • stehen
-

- Viel Erfolg bei der Prüfung! -
- -
- - - - \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/vehicle/application.js b/ReallifeGamemode.Client/assets/vehicle/application.js index 591f41a6..024717a1 100644 --- a/ReallifeGamemode.Client/assets/vehicle/application.js +++ b/ReallifeGamemode.Client/assets/vehicle/application.js @@ -1,7 +1,26 @@  let close = document.getElementById('close'); +$(document).ready(function () { + mp.trigger("CEF:VehicleLook_Loaded"); +}); + +function setDrivers(driversJson) { + var drivers = JSON.parse(driversJson); + var listTag = $("#drivers-list"); + drivers.forEach(driver => { + var name = driver.Name; + var dateTime = new Date(driver.Time); + + var date = `${dateTime.getDay()}.${dateTime.getMonth()}.${dateTime.getFullYear()}`; + var time = `${dateTime.getHours()}:${dateTime.getMinutes()}:${dateTime.getSeconds()}`; + + var infoLine = `${name} am ${date} um ${time} Uhr`; + var listItemTag = `
  • ${infoLine}
  • `; + listTag.append(listItemTag); + }); +} + close.onclick = function closeWindow() { - mp.trigger('removeDrivingSchool'); - console.log('Fenster geschlossen!'); + mp.trigger('removeLookMenu'); } \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html b/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html index 2a0cff96..293f1c03 100644 --- a/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html +++ b/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html @@ -17,16 +17,13 @@

    Letze Fahrer

    - • Hier
    - • könnten
    - • Ihre
    - • letzen Fahrer
    - • stehen
    -

    +
    - + - - + + \ No newline at end of file diff --git a/ReallifeGamemode.Server/Commands/UserCommands.cs b/ReallifeGamemode.Server/Commands/UserCommands.cs index 671cac74..15d159a7 100644 --- a/ReallifeGamemode.Server/Commands/UserCommands.cs +++ b/ReallifeGamemode.Server/Commands/UserCommands.cs @@ -22,14 +22,35 @@ namespace ReallifeGamemode.Server.Commands { if (!player.IsLoggedIn()) return; - Vehicle veh = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).FirstOrDefault(); + Vehicle veh = NAPI.Pools.GetAllVehicles() + .Where(v => v.Position.DistanceTo(player.Position) <= 5) + .OrderBy(v => v.Position.DistanceTo(player.Position)) + .FirstOrDefault(); if (veh == null) { return; } - player.TriggerEvent("lookLastDrivers", JsonConvert.SerializeObject(VehicleManager.lastDriversInVehicle[veh])); + var lastDriverDic = new Dictionary(); + + if(VehicleManager.lastDriversInVehicle.ContainsKey(veh)) + { + lastDriverDic = VehicleManager.lastDriversInVehicle[veh]; + } + else + { + player.SendNotification("~r~Mit diesem Fahrzeug ist noch niemand gefahren"); + return; + } + + var list = lastDriverDic.Select(v => new + { + Name = v.Key, + Time = v.Value + }).OrderByDescending(v => v.Time).ToList(); + + player.TriggerEvent("lookLastDrivers", JsonConvert.SerializeObject(list)); } [Command("id", "~m~Benutzung: ~s~/id [Name]")] @@ -77,7 +98,7 @@ namespace ReallifeGamemode.Server.Commands } else { - pVeh = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).FirstOrDefault(); + pVeh = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).OrderBy(v => v.Position.DistanceTo(player.Position)).FirstOrDefault(); } if (pVeh == null) diff --git a/ReallifeGamemode.Server/Events/EnterVehicle.cs b/ReallifeGamemode.Server/Events/EnterVehicle.cs index 611948bd..0ac95d38 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicle.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicle.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; @@ -23,10 +24,10 @@ namespace ReallifeGamemode.Server.Events if (!VehicleManager.lastDriversInVehicle.ContainsKey(vehicle)) { - VehicleManager.lastDriversInVehicle.Add(vehicle, new List()); + VehicleManager.lastDriversInVehicle.Add(vehicle, new Dictionary()); } - VehicleManager.lastDriversInVehicle[vehicle].Add(client.Name); + VehicleManager.lastDriversInVehicle[vehicle][client.Name] = DateTime.Now; if (vehicle.GetServerVehicle() is FactionVehicle veh) { diff --git a/ReallifeGamemode.Server/Managers/VehicleManager.cs b/ReallifeGamemode.Server/Managers/VehicleManager.cs index 034eb9cf..95604c72 100644 --- a/ReallifeGamemode.Server/Managers/VehicleManager.cs +++ b/ReallifeGamemode.Server/Managers/VehicleManager.cs @@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Managers public class VehicleManager : Script { - public static Dictionary> lastDriversInVehicle = new Dictionary>(); + public static Dictionary> lastDriversInVehicle = new Dictionary>(); private static readonly List _enabledMods = new List() {