Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 4
0
        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;
                }
            }
        }