From d70c7392082904391a84533096b7f1206e61cd7c Mon Sep 17 00:00:00 2001 From: "Nick I. A" <109136581+xEntenKoeniqx@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:29:18 +0200 Subject: [PATCH] Cleaned up --- RageCoop.Client/RageCoop.Client.csproj | 2 +- RageCoop.Client/Sync/EntityPool.cs | 159 ++++++++----------------- RageCoop.Client/Sync/SyncEvents.cs | 87 ++++++-------- 3 files changed, 90 insertions(+), 158 deletions(-) diff --git a/RageCoop.Client/RageCoop.Client.csproj b/RageCoop.Client/RageCoop.Client.csproj index 74daed0..75217c7 100644 --- a/RageCoop.Client/RageCoop.Client.csproj +++ b/RageCoop.Client/RageCoop.Client.csproj @@ -10,7 +10,7 @@ Properties RageCoop.Client RageCoop.Client - v4.8 + v4.8.1 512 true diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index 95e0400..2d6036e 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -46,8 +46,7 @@ namespace RageCoop.Client { foreach (int id in new List(PedsByID.Keys)) { - if (keepPlayer&&(id==Main.LocalPlayerID)) { continue; } - if (keepMine&&(PedsByID[id].OwnerID==Main.LocalPlayerID)) { continue; } + if (keepPlayer && (id==Main.LocalPlayerID)|| keepMine && (PedsByID[id].OwnerID == Main.LocalPlayerID)) { continue; } RemovePed(id); } PedsByID.Clear(); @@ -88,55 +87,44 @@ namespace RageCoop.Client } #region PEDS - public static SyncedPed GetPedByID(int id) - { - return PedsByID.ContainsKey(id) ? PedsByID[id] : null; - } - public static SyncedPed GetPedByHandle(int handle) - { - return PedsByHandle.ContainsKey(handle) ? PedsByHandle[handle] : null; - } - public static List GetPedIDs() - { - return new List(PedsByID.Keys); - } + public static SyncedPed GetPedByID(int id) => PedsByID.ContainsKey(id) ? PedsByID[id] : null; + public static SyncedPed GetPedByHandle(int handle) => PedsByHandle.ContainsKey(handle) ? PedsByHandle[handle] : null; + public static List GetPedIDs() => new List(PedsByID.Keys); public static bool AddPlayer() { Ped p = Game.Player.Character; SyncedPed player = GetPedByID(Main.LocalPlayerID); - if (player!=null) - { - if (player.MainPed!=p) - { - // Player model changed - player.MainPed = p; - - // Remove it from Handle_Characters - var pairs = PedsByHandle.Where(x => x.Value==player); - if (pairs.Any()) - { - var pair = pairs.First(); - - // Re-add - PedsByHandle.Remove(pair.Key); - if (PedsByHandle.ContainsKey(p.Handle)) - { - RemovePed(PedsByHandle[p.Handle].ID); - } - PedsByHandle.Add(p.Handle, player); - } - } - } - else + if (player==null) { Main.Logger.Debug($"Creating SyncEntity for player, handle:{p.Handle}"); SyncedPed c = new SyncedPed(p); - Main.LocalPlayerID=c.OwnerID=c.ID; + Main.LocalPlayerID = c.OwnerID = c.ID; Add(c); Main.Logger.Debug($"Local player ID is:{c.ID}"); PlayerList.SetPlayer(c.ID, Main.Settings.Username); return true; } + + if (player.MainPed != p) + { + // Player model changed + player.MainPed = p; + + // Remove it from Handle_Characters + var pairs = PedsByHandle.Where(x => x.Value == player); + if (pairs.Any()) + { + var pair = pairs.First(); + + // Re-add + PedsByHandle.Remove(pair.Key); + if (PedsByHandle.ContainsKey(p.Handle)) + { + RemovePed(PedsByHandle[p.Handle].ID); + } + PedsByHandle.Add(p.Handle, player); + } + } return false; } public static void Add(SyncedPed c) @@ -194,18 +182,9 @@ namespace RageCoop.Client #endregion #region VEHICLES - public static SyncedVehicle GetVehicleByID(int id) - { - return VehiclesByID.ContainsKey(id) ? VehiclesByID[id] : null; - } - public static SyncedVehicle GetVehicleByHandle(int handle) - { - return VehiclesByHandle.ContainsKey(handle) ? VehiclesByHandle[handle] : null; - } - public static List GetVehicleIDs() - { - return new List(VehiclesByID.Keys); - } + public static SyncedVehicle GetVehicleByID(int id) => VehiclesByID.ContainsKey(id) ? VehiclesByID[id] : null; + public static SyncedVehicle GetVehicleByHandle(int handle) => VehiclesByHandle.ContainsKey(handle) ? VehiclesByHandle[handle] : null; + public static List GetVehicleIDs() => new List(VehiclesByID.Keys); public static void Add(SyncedVehicle v) { if (VehiclesByID.ContainsKey(v.ID)) @@ -300,18 +279,9 @@ namespace RageCoop.Client } } - public static bool PedExists(int id) - { - return PedsByID.ContainsKey(id); - } - public static bool VehicleExists(int id) - { - return VehiclesByID.ContainsKey(id); - } - public static bool ProjectileExists(int id) - { - return ProjectilesByID.ContainsKey(id); - } + public static bool PedExists(int id) => PedsByID.ContainsKey(id); + public static bool VehicleExists(int id) => VehiclesByID.ContainsKey(id); + public static bool ProjectileExists(int id) => ProjectilesByID.ContainsKey(id); #endregion static int vehStateIndex; static int pedStateIndex; @@ -358,26 +328,21 @@ namespace RageCoop.Client if (!ProjectilesByHandle.ContainsKey(p.Handle)) { Add(new SyncedProjectile(p)); - } } foreach (SyncedProjectile p in ProjectilesByID.Values.ToArray()) { - // Outgoing sync if (p.IsLocal) { if (p.MainProjectile.AttachedEntity==null) { - // Prevent projectiles from exploding next to vehicle - if (WeaponUtil.VehicleProjectileWeapons.Contains((VehicleWeaponHash)p.MainProjectile.WeaponHash)) + if (WeaponUtil.VehicleProjectileWeapons.Contains((VehicleWeaponHash)p.MainProjectile.WeaponHash) && + p.MainProjectile.WeaponHash != (WeaponHash)VehicleWeaponHash.Tank && p.Origin.DistanceTo(p.MainProjectile.Position) < 2) { - if (p.MainProjectile.WeaponHash!=(WeaponHash)VehicleWeaponHash.Tank && p.Origin.DistanceTo(p.MainProjectile.Position)<2) - { - continue; - } + continue; } Networking.SendProjectile(p); @@ -393,11 +358,8 @@ namespace RageCoop.Client { p.Update(); } - } - } - } i=-1; @@ -411,20 +373,15 @@ namespace RageCoop.Client SyncedPed c = EntityPool.GetPedByHandle(p.Handle); if (c==null && (p!=Game.Player.Character)) { - if (allPeds.Length>Main.Settings.WorldPedSoftLimit) + if (allPeds.Length>Main.Settings.WorldPedSoftLimit && p.PopulationType != EntityPopulationType.RandomAmbient) { - if (p.PopulationType!=EntityPopulationType.RandomAmbient) - { - p.Delete(); - continue; - } + p.Delete(); + continue; } // Main.Logger.Trace($"Creating SyncEntity for ped, handle:{p.Handle}"); c=new SyncedPed(p); EntityPool.Add(c); - - } } #if BENCHMARK @@ -437,6 +394,7 @@ namespace RageCoop.Client { pedStateIndex=0; } + foreach (SyncedPed c in ps) { i++; @@ -457,7 +415,6 @@ namespace RageCoop.Client Networking.SendPed(c, (i-pedStateIndex)5) - { - endPos=subject.GetAimCoord(); - if (subject.IsInVehicle() && subject.VehicleWeapon!=VehicleWeaponHash.Invalid) - { - if (subject.IsOnTurretSeat()) - { - TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos); - } - else - { - TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c); - } - } - else - { - TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos); - } - return true; - } - i++; - return false; - } - else - { - if (subject.IsInVehicle() && subject.VehicleWeapon!=VehicleWeaponHash.Invalid) + if (++i<=5) { return false; } + + endPos = subject.GetAimCoord(); + if (subject.IsInVehicle() && subject.VehicleWeapon != VehicleWeaponHash.Invalid) { if (subject.IsOnTurretSeat()) { @@ -346,8 +317,25 @@ namespace RageCoop.Client return true; } + if (subject.IsInVehicle() && subject.VehicleWeapon != VehicleWeaponHash.Invalid) + { + if (subject.IsOnTurretSeat()) + { + TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos); + } + else + { + TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c); + } + } + else + { + TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos); + } + return true; }); + if (!getBulletImpact()) { Main.QueueAction(getBulletImpact); @@ -357,10 +345,8 @@ namespace RageCoop.Client { TriggerBulletShot((uint)VehicleWeaponHash.Tank, c, subject.LastWeaponImpactPosition); } - } - // Vehicles var g = subject.IsGettingIntoVehicle; if (g && (!c._lastEnteringVehicle)) @@ -368,6 +354,7 @@ namespace RageCoop.Client var v = subject.VehicleTryingToEnter.GetSyncEntity(); TriggerEnteringVehicle(c, v, subject.GetSeatTryingToEnter()); } + var currentSitting = subject.IsSittingInVehicle(); if (c._lastSittingInVehicle) { @@ -391,18 +378,20 @@ namespace RageCoop.Client public static void Check(SyncedVehicle v) { - if (v.MainVehicle!=null&&v.MainVehicle.HasNozzle()) + if (v.MainVehicle==null||!v.MainVehicle.HasNozzle()) { - if ((v.LastNozzleAngle==1) && (v.MainVehicle.GetNozzleAngel()!=1)) - { - TriggerNozzleTransform(v.ID, false); - } - else if ((v.LastNozzleAngle==0) && (v.MainVehicle.GetNozzleAngel()!=0)) - { - TriggerNozzleTransform(v.ID, true); - } - v.LastNozzleAngle=v.MainVehicle.GetNozzleAngel(); + return; } + + if ((v.LastNozzleAngle == 1) && (v.MainVehicle.GetNozzleAngel() != 1)) + { + TriggerNozzleTransform(v.ID, false); + } + else if ((v.LastNozzleAngle == 0) && (v.MainVehicle.GetNozzleAngel() != 0)) + { + TriggerNozzleTransform(v.ID, true); + } + v.LastNozzleAngle = v.MainVehicle.GetNozzleAngel(); } #endregion }