private bool TrySelectCar(int index, bool preview = true) { DeloreanTimeMachine timeMachine = DeloreanHandler.GetTimeMachineFromIndex(index); if (timeMachine != null) { float dist = timeMachine.Vehicle.Position.DistanceToSquared(Main.PlayerPed.Position); if (dist <= RCManager.MAX_DIST * RCManager.MAX_DIST) { _currentTimeMachine = timeMachine; if (preview) { PreviewCar(timeMachine); } return(true); } else { if (preview) { StopPreviewing(); } return(false); } } return(false); }
private void SpawnMenu_OnMenuOpen(UIMenu sender) { if (ForceNew || (Main.PlayerVehicle == null || !DeloreanHandler.IsVehicleATimeMachine(Main.PlayerVehicle))) { if (ForceNew) { ForceNew = false; } Vector3 spawnPos = Main.PlayerPed.Position; if (Main.PlayerVehicle != null) { spawnPos = Main.PlayerVehicle.Position.Around(5f); } _tempTimeMachine = (DeloreanTimeMachine)DMC12.CreateDelorean(spawnPos, Main.PlayerPed.Heading, DeloreanType.BTTF1); Main.PlayerPed.SetIntoVehicle(_tempTimeMachine.Vehicle, VehicleSeat.Driver); _tempTimeMachine.Vehicle.PlaceOnGround(); _tempTimeMachine.MPHSpeed = 1; } else if (DeloreanHandler.IsVehicleATimeMachine(Main.PlayerVehicle)) { _tempTimeMachine = DeloreanHandler.GetTimeMachineFromVehicle(Main.PlayerVehicle); _save = true; _wheelsType.Enabled = !_tempTimeMachine.Circuits.IsFlying; } LoadVehicleType(); }
private void RogersSierraManager_OnDetachedDelorean(DeloreanTimeMachine deloreanTimeMachine) { if (IsPlaying && _justAttached) { if (DeloreanTimedEventManager.ManageCamera) { DeloreanTimedEventManager.ResetCamera(); } DeloreanTimedEventManager.ClearEvents(); _justAttached = false; } }
public void PreviewCar(DeloreanTimeMachine timeMachine) { _currentTimeMachine = timeMachine; if (_carCam != null) { _carCam?.Delete(); } _carCam = World.CreateCamera(_currentTimeMachine.Vehicle.GetOffsetPosition(new Vector3(0.0f, -5.0f, 3.0f)), World.RenderingCamera.Rotation, 75.0f); _carCam.PointAt(_currentTimeMachine.Vehicle); World.RenderingCamera = _carCam; Function.Call(Hash.CLEAR_FOCUS); Function.Call(Hash.SET_FOCUS_ENTITY, _currentTimeMachine.Vehicle); }
private void RogersSierraManager_OnAttachedDelorean(DeloreanTimeMachine deloreanTimeMachine) { if (IsPlaying && !_justAttached) { DeloreanTimedEventManager.ManageCamera = false; DeloreanTimedEventManager.Add(1, 31, 386, 1, 40, 137, TimeMultiplier); DeloreanTimedEventManager.Last.SetCamera(deloreanTimeMachine.Vehicle, new Vector3(1f, 3f, 0), deloreanTimeMachine.Vehicle, Vector3.Zero); DeloreanTimedEventManager.Add(5, 19, 0, 5, 21, 0, TimeMultiplier); //wheelie up DeloreanTimedEventManager.Last.OnExecute += WheelieUp_OnExecute; DeloreanTimedEventManager.Add(5, 26, 0, 5, 27, 0, TimeMultiplier); //wheelie down DeloreanTimedEventManager.Last.OnExecute += WheelieDown_OnExecute; DeloreanTimedEventManager.Add(5, 27, 500, 5, 28, 500, TimeMultiplier); //add ptfx wheels on front DeloreanTimedEventManager.Last.OnExecute += GlowingWheelsFront_OnExecute; DeloreanTimedEventManager.Add(5, 29, 500, 5, 30, 500, TimeMultiplier); //delete wheelie effects DeloreanTimedEventManager.Last.OnExecute += DeleteEffects_OnExecute; _justAttached = true; } }
private static void HandleSwitching() { if (isSwitching) { if (Game.GameTime < switchTimer) { return; } switch (currentSwitchStep) { case 0: Screen.FadeOut(1000); if (currentDelorean != null && currentDelorean.IsTimeMachine) { DeloreanTimeMachine timeMachine = currentDelorean as DeloreanTimeMachine; destinationTime = timeMachine.Circuits.DestinationTime; previousTime = timeMachine.Circuits.PreviousTime; } else { destinationTime = null; previousTime = null; } switchTimer = Game.GameTime + 1200; currentSwitchStep++; break; case 1: // Do the switching here // Delete old DMC12 if (currentDelorean != null) { DeloreanHandler.RemoveDelorean(currentDelorean); } else { currentVehicle?.Delete(); } // Spawn new delorean var newDelorean = DMC12.CreateDelorean(garageVehiclePosition, garageVehicleRotation.ToHeading(), switchTo, hasHook); newDelorean.Vehicle.Rotation = garageVehicleRotation; // Set the destination and previous time, so they're not lost if (switchTo != DeloreanType.DMC12 && destinationTime != null && previousTime != null) { ((DeloreanTimeMachine)newDelorean).Circuits.DestinationTime = destinationTime.GetValueOrDefault(); ((DeloreanTimeMachine)newDelorean).Circuits.PreviousTime = previousTime.GetValueOrDefault(); } // Warp player inside vehicle Main.PlayerPed.Task.WarpIntoVehicle(newDelorean, VehicleSeat.Driver); // Update variables currentVehicle = newDelorean; currentDelorean = newDelorean; // Move forward currentSwitchStep++; switchTimer = Game.GameTime + 1000; break; case 2: Screen.FadeIn(1000); UpdateGarage(); Main.MenuPool.CloseAllMenus(); garageMenu.Visible = true; switchTimer = 0; currentSwitchStep = 0; isSwitching = false; break; } } }