public void HandleEndEventOffence(AbstractAmbientVehicleEvent offenceEvent) { if (this.CurrentsEvents.Contains(offenceEvent)) { this.CurrentsEvents.Remove(offenceEvent); //Garbage collector clean instance (break references) } }
public AbstractAmbientVehicleEvent GetRandomOffenceEvent() { if (false == this.Timer.CanCreateEvent()) { Logger.LogTrivial("Can't create event: TIMER"); return(null); } if (false == this.CanCreateAnEvent()) { Logger.LogTrivial("Can't create event: To many | Callout running | In pursuit | Is performing pullover"); return(null); } if (Tools.HavingChance(10, 100)) { Logger.LogTrivial("Can't create event: Bad Chance"); GameFiber.Sleep(3000); return(null); } this.HandleCleanUsedVehicles(); AbstractAmbientVehicleEvent offenceEvent = null; int loopSecurity = 3; int loopCounter = 0; while (null == offenceEvent && loopCounter < loopSecurity) { Vehicle[] vehicles = VehicleManager.Instance.GetNearbyVehicles(10); foreach (Vehicle vehicle in vehicles) { if (vehicle.Exists()) { if (vehicle.HasDriver && vehicle.Driver.Exists() && false == vehicle.IsPoliceVehicle && false == vehicle.HasSiren && vehicle.Driver != PedsManager.LocalPlayer() && false == vehicle.IsBoat && false == vehicle.IsBike && false == vehicle.IsBicycle && false == this.PlateAlreadyUsed.Contains(vehicle.LicensePlate)) { this.PlateAlreadyUsed.Add(vehicle.LicensePlate); offenceEvent = this.GenerateRandomOffenceInstance(vehicle); this.Timer.HandleTimer(); break; //Bad but have no choice in Foreach ;) } } } loopSecurity++; GameFiber.Sleep(4000); } this.CurrentsEvents.Add(offenceEvent); return(offenceEvent); }
public static void RunAmbientVehicleEvent(AbstractAmbientVehicleEvent offenceEvent) { offenceEvent.Prepare(); try { offenceEvent.OnBeforeStartEvent(); while (offenceEvent.IsRunning()) { offenceEvent.OnProcessEvent(); GameFiber.Yield(); } } catch (Exception e) { Logger.Log("---------- Exception ----------"); Logger.Log(e.Message); } finally { offenceEvent.OnEndEvent(); } }
public static void HandleRunAmbientVehicleEvent(object sender, AbstractAmbientVehicleEvent offenceEvent) { Functions.RunAmbientVehicleEvent(offenceEvent); }