From 0b498ad6ae412eda7b6865a2f13f15b5047658db Mon Sep 17 00:00:00 2001 From: hydrant Date: Sat, 29 May 2021 00:00:17 +0200 Subject: [PATCH] fix hanf performance?? --- ReallifeGamemode.Client/drugs/hanf.ts | 11 ++---- ReallifeGamemode.Server/Main.cs | 2 +- .../Managers/HanfManager.cs | 37 +++++++++++++++---- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/ReallifeGamemode.Client/drugs/hanf.ts b/ReallifeGamemode.Client/drugs/hanf.ts index eb1581f0..de041246 100644 --- a/ReallifeGamemode.Client/drugs/hanf.ts +++ b/ReallifeGamemode.Client/drugs/hanf.ts @@ -333,13 +333,8 @@ export default function hanfSystem(globalData: IGlobalData) { let hanfDataIdToObjectMap: Map = new Map(); let hanfDataIdToTextLabelMap: Map = new Map(); - mp.events.addDataHandler("hanfData", (entity: EntityMp, value) => { - if (entity.type == 'player' && entity.remoteId == mp.players.local.remoteId) { - updateHanf(value); - } - }); - - function updateHanf(dataJson: string) { + mp.events.add("SERVER:Hanf_UpdateHanf", (dataJsonArr: string[]) => { + var dataJson = dataJsonArr.join(''); var data: Array = >JSON.parse(dataJson) var newPlants = data.filter(d => currentHanfData.filter(x => x.Id === d.Id).length == 0); @@ -382,7 +377,7 @@ export default function hanfSystem(globalData: IGlobalData) { }); currentHanfData = data; - } + }); function getPlantModel(plant: CannabisData): number { var diff = Date.now() - Date.parse(plant.Time); diff --git a/ReallifeGamemode.Server/Main.cs b/ReallifeGamemode.Server/Main.cs index d26c9b24..8da87d88 100644 --- a/ReallifeGamemode.Server/Main.cs +++ b/ReallifeGamemode.Server/Main.cs @@ -149,7 +149,7 @@ namespace ReallifeGamemode.Server Rentcar.Setup(); - // HanfManager.Load(); + HanfManager.Load(); World.WeatherSync.Load(); diff --git a/ReallifeGamemode.Server/Managers/HanfManager.cs b/ReallifeGamemode.Server/Managers/HanfManager.cs index 4664e384..3edd2d54 100644 --- a/ReallifeGamemode.Server/Managers/HanfManager.cs +++ b/ReallifeGamemode.Server/Managers/HanfManager.cs @@ -173,8 +173,11 @@ namespace ReallifeGamemode.Server.Managers private static void UpdateHanfDataTimer_Elapsed(object sender, ElapsedEventArgs e) { - using var dbContext = new DatabaseContext(); - UpdateHanfWorldData(dbContext); + NAPI.Task.Run(() => + { + using var dbContext = new DatabaseContext(); + UpdateHanfWorldData(dbContext); + }); } private static void OnSeedBuyRangeColShapeEnter(ColShape colShape, Player player) @@ -205,7 +208,6 @@ namespace ReallifeGamemode.Server.Managers internal static void StartCannabisPlanting(Player player) { - return; player.ToggleInventory(InventoryToggleOption.HIDE); if (!player.IsAlive()) @@ -286,12 +288,31 @@ namespace ReallifeGamemode.Server.Managers }); } - public async static void UpdateHanfForPlayer(Player player, List cannabisData = null) + public static void UpdateHanfForPlayer(Player player, List cannabisData = null) { cannabisData ??= _currentCannabisData; - await NAPI.Task.WaitForMainThread(); - player.SetSharedData("hanfData", JsonConvert.SerializeObject(cannabisData)); - //player.TriggerEvent("SERVER:Hanf_UpdateHanfData"); + + string jsonStr = JsonConvert.SerializeObject(cannabisData); + List parts = GetChunks(jsonStr, 500); + + player.TriggerEvent("SERVER:Hanf_UpdateHanf", parts); + } + + public static List GetChunks(string value, int chunkSize) + { + List triplets = new List(); + while (value.Length > chunkSize) + { + triplets.Add(value.Substring(0, chunkSize)); + value = value.Substring(chunkSize); + } + + if (value != "") + { + triplets.Add(value); + } + + return triplets; } [RemoteEvent("CLIENT:Hanf_BuySeeds")] @@ -349,7 +370,7 @@ namespace ReallifeGamemode.Server.Managers } [RemoteEvent("CLIENT:Hanf_HarvestHanf")] - public async void HanfManagerHarvestHanf(Player player, long hanfId) + public void HanfManagerHarvestHanf(Player player, long hanfId) { if (!player.IsLoggedIn()) {