示例#1
0
 private void nextStage()
 {
     if (currentStageAction == Jobs.Stage.PICKUP)
     {
         stagePickup();
     }
     else if (StageConditions.isStagePickupWaitReady(currentStageAction, currentCrew))
     {
         stagePickupWait();
     }
     else if (currentStageAction == Jobs.Stage.JOURNEY)
     {
         stageHeistArrival();
     }
     else if (currentStageAction == Jobs.Stage.HEIST_START && heistEndTick == 0)
     {
         stageHeistStart();
     }
     else if (currentStageAction == Jobs.Stage.HEIST_START && Environment.TickCount > heistEndTick)
     {
         stageHeistWait();
     }
     else if (StageConditions.isStageEscapeReady(currentStageAction, currentCrew))
     {
         stageEscape();
     }
     else if (currentStageAction == Jobs.Stage.ESCAPE)
     {
         stageEnd();
     }
 }
示例#2
0
 public Stage(string stagename, Vector2 basespeed, List<HookPoint> hookpoints, StageConditions stageconditions, StageType stagetype, List<Obstacle> obstacles)
 {
     _stageName = stagename;
     _baseSpeed = basespeed;
     _hookPoints = hookpoints;
     _stageConditions = stageconditions;
     _stageType = stagetype;
     _obstacles = obstacles;
 }
示例#3
0
        // Main - On Tick
        private void onTick(object sender, EventArgs e)
        {
            // Always
            this.handleMessages();
            this.handleSubtitles();
            _iFruit.Update();
            menuPool.ProcessMenus();
            currentPlayerPosition = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 0, 0));

            if (vehicleToReportStolen != null && Game.Player.Character.CurrentVehicle != null &&
                vehicleToReportStolen == Game.Player.Character.CurrentVehicle &&
                Environment.TickCount > reportStolenTick
                )
            {
                Game.Player.Character.CurrentVehicle.IsStolen = true;
                vehicleToReportStolen = null;
                reportStolenTick      = 0;
            }

            if (Game.Player.WantedLevel > 0 && this.wantedVehicleName == null)
            {
                if (
                    Game.Player.Character.CurrentVehicle != null && Game.Player.Character.CurrentVehicle.DisplayName != this.wantedVehicleName)
                {
                    this.wantedVehicleName  = Game.Player.Character.CurrentVehicle.DisplayName;
                    this.wantedVehicleColor = Game.Player.Character.CurrentVehicle.PrimaryColor;
                }
            }
            this.prevWantedLevel = Game.Player.WantedLevel > 0 ? Game.Player.WantedLevel : this.prevWantedLevel;

            // World Management
            foreach (Vehicle vehicle in World.GetNearbyVehicles(Game.Player.Character, 20f))
            {
                if (!eligibleVehicles.Contains(vehicle) && !vehicle.Driver.Exists())
                {
                    vehicle.LockStatus        = VehicleLockStatus.CanBeBrokenInto;
                    vehicle.HasAlarm          = true;
                    vehicle.NeedsToBeHotwired = true;
                }
            }

            // Vehicle Management
            if (Game.Player.Character.IsInVehicle() && !Game.Player.Character.CurrentVehicle.AlarmActive && !Game.Player.Character.CurrentVehicle.EngineRunning)
            {
                Game.Player.Character.CurrentVehicle.LockStatus = VehicleLockStatus.Unlocked;
                Game.Player.Character.CurrentVehicle.StartAlarm();
                vehicleToReportStolen = Game.Player.Character.CurrentVehicle;
                reportStolenTick      = Environment.TickCount + 120000;
            }
            if (Utility.IsPlayerDriving())
            {
                vehicleOnTickUpdates();
            }
            if (Game.Player.Character.IsInVehicle())
            {
                Game.Player.Character.CurrentVehicle.HandbrakeOn = shouldDisableVehicle();
            }
            if (Game.Player.Character.IsJacking)
            {
                Game.Player.Character.GetVehicleIsTryingToEnter().IsStolen = true;
            }

            // Staging
            if (StageConditions.isReadyForNewJob(currentStageAction, newJobStartTick))
            {
                createNewJob();
            }
            if (isCloseToCurrentStageLocation())
            {
                closeToStageLocationActions();
            }
            if (isAtCurrentStageLocation())
            {
                nextStage();
            }
            if (shouldSpawnCrew())
            {
                foreach (CrewMember crewMember in Crew.Crew.SpawnCrew(this, currentJob.locationSet))
                {
                    currentCrew.Add(crewMember);
                }
            }
            if (StageConditions.isStageCloseSuccessReady(currentStageAction, currentStageLocation, currentPlayerPosition))
            {
                stageCloseSuccess();
            }
            if (StageConditions.isStageCloseFailReady(currentStageAction))
            {
                stageCloseFail();
            }
            if (Utility.IsPlayerDeadOrBusted() && currentStageAction != Jobs.Stage.NONE)
            {
                resetAll();
            }

            // Cop Mechanics
            Game.ShowsPoliceBlipsOnRadar = showPoliceOnMap;

            currentCops = new List <Cop>();
            foreach (Ped cop in World.GetNearbyPeds(currentPlayerPosition, 100f).Where(x => x.RelationshipGroup.GetHashCode() == -1533126372))
            {
                currentCops.Add(new Cop(this, cop));
            }

            // Subclass Onticks
            foreach (CrewMember crewMember in currentCrew)
            {
                crewMember.onTick();
            }
            foreach (Cop cop in currentCops)
            {
                if (cop.ped.Exists())
                {
                    cop.onTick();
                }
            }
        }