コード例 #1
0
        // Token: 0x06001322 RID: 4898 RVA: 0x0001B710 File Offset: 0x0001A710
        public Countdown(InstancedEvent evnt, EntrantInfo entrant)
        {
            LocalHumanOpponent localHumanOpponent = entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                FlasherBase flasher  = new FlasherBase(1031321970u);
                FlasherBase flasher2 = new FlasherBase(2997328623u);
                FlasherBase flasher3 = new FlasherBase(3512998001u);
                FlasherBase flasher4 = new FlasherBase(2140919479u);
                FlasherBase flasher5 = new FlasherBase(2926395083u);
                base.Activities.Add(new DisplayFlasher(evnt, entrant, flasher, false));
                if (evnt.ConnectionSupport == ConnectionSupport.kConnectionOnline)
                {
                    base.Activities.Add(new ReadySync(0.0166666675f));
                }
                else
                {
                    base.Activities.Add(new Timer(new InArgument <float>(() => 3f)));
                }
                base.Activities.Add(new RemoveFlasher(evnt, entrant, flasher));
                base.Activities.Add(new DisplayFlasher(evnt, entrant, flasher2, false));
                base.Activities.Add(new Timer(new InArgument <float>(() => 1f)));
                base.Activities.Add(new RemoveFlasher(evnt, entrant, flasher2));
                base.Activities.Add(new DisplayFlasher(evnt, entrant, flasher3, false));
                base.Activities.Add(new Timer(new InArgument <float>(() => 1f)));
                base.Activities.Add(new RemoveFlasher(evnt, entrant, flasher3));
                base.Activities.Add(new DisplayFlasher(evnt, entrant, flasher4, false));
                base.Activities.Add(new Timer(new InArgument <float>(() => 1f)));
                base.Activities.Add(new RemoveFlasher(evnt, entrant, flasher4));
                base.Activities.Add(new DisplayFlasher(evnt, entrant, flasher5, false));
            }
        }
コード例 #2
0
        // Token: 0x06001261 RID: 4705 RVA: 0x0001A78C File Offset: 0x0001978C
        protected override void OnMessage(OnTriggerExit message)
        {
            InternalInstance internalInstance = InstanceCatalog.Get().Find(message.TriggerKey);
            uint             flag             = 64u;

            if (internalInstance != null)
            {
                Opponent opponent = this.manager.OpponentManager.FindByPersonaId(message.PersonaId);
                if (opponent != null)
                {
                    LocalHumanOpponent localHumanOpponent = opponent as LocalHumanOpponent;
                    if (localHumanOpponent != null)
                    {
                        uint num = 0u;
                        if (internalInstance.IsTypeOf(ObjType.kObjType_Trigger) && internalInstance.IsFlagSet(flag))
                        {
                            Collection collection = new Collection(internalInstance);
                            num = collection.TargetActivity().GetCollectionKey();
                        }
                        else if (internalInstance.IsTypeOf(ObjType.kObjType_Event))
                        {
                            num = internalInstance.GetCollection();
                        }
                        if (num != 0u)
                        {
                            EventDefinition eventDefinition = Engine.Get().EventRepository().FindByEventKey(num);
                            localHumanOpponent.Hud.OnExitEngagable(eventDefinition.EventId);
                        }
                    }
                }
            }
        }
コード例 #3
0
        // Token: 0x060017B5 RID: 6069 RVA: 0x0002A490 File Offset: 0x00029490
        public IOpponent CreateLocalHuman(InternalLocalHumanOpponent internalOpponent)
        {
            LocalHumanOpponent localHumanOpponent = new LocalHumanOpponent(internalOpponent);

            this.opponents.Add(localHumanOpponent);
            return(localHumanOpponent);
        }
コード例 #4
0
        // Token: 0x0600191B RID: 6427 RVA: 0x0002CCD4 File Offset: 0x0002BCD4
        public void OnUpdate(EntrantInfo entrant, Event evnt, float dt)
        {
            PursuitScoringState pursuitScoringState = entrant.ScoringState as PursuitScoringState;

            if (pursuitScoringState != null)
            {
                float speed = entrant.Opponent.Vehicle.GetSpeed();
                if (speed > pursuitScoringState.TopSpeed)
                {
                    pursuitScoringState.TopSpeed = speed;
                }
                if (entrant.Opponent.Vehicle.GetCurrentAirborneTime() > pursuitScoringState.LongestAirTimeInSeconds)
                {
                    pursuitScoringState.LongestAirTimeInSeconds = entrant.Opponent.Vehicle.GetCurrentAirborneTime();
                }
                if (entrant.Opponent.Vehicle.GetNumWheelsOnGround() == 0)
                {
                    pursuitScoringState.SumAirTimeInSeconds += dt;
                }
                LocalHumanOpponent localHumanOpponent = entrant.Opponent as LocalHumanOpponent;
                if (localHumanOpponent != null)
                {
                    PursuitInfo pursuitData = localHumanOpponent.PursuitData;
                    pursuitScoringState.Heat                        = Cops.GetPursuitHeat();
                    pursuitScoringState.CopsDisabled                = pursuitData.GetNumCopsDisabled();
                    pursuitScoringState.CopsRammed                  = pursuitData.GetNumCopsRammed();
                    pursuitScoringState.CopsDeployed                = pursuitData.GetNumCopsDeployed();
                    pursuitScoringState.CostToState                 = pursuitData.GetCostToState();
                    pursuitScoringState.SpikeStripsDodged           = pursuitData.GetSpikeStripsDodged();
                    pursuitScoringState.RoadBlocksDodged            = pursuitData.GetRoadBlocksDodged();
                    pursuitScoringState.Infractions                 = pursuitData.GetInfractions();
                    pursuitScoringState.EventDurationInMilliseconds = pursuitData.GetPursuitDuration();
                }
            }
        }
コード例 #5
0
        // Token: 0x06001899 RID: 6297 RVA: 0x0002BA6C File Offset: 0x0002AA6C
        public unsafe void Fill(RadarTracker tracker, Event evnt)
        {
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();

            tracker.Enabled = false;
            tracker.SetMovieClipName("Cop");
            float num = 0f;

            localHumanOpponent.Vehicle.GetSkillModEffectAmount(SkillModEffectType.Radar, &num);
            float rad_ = 0f;
            float num2 = 0f;

            Cops.GetClosestCopDirectionAndDistance(&rad_, &num2);
            if ((double)num2 <= 0.0 || num2 > this.radarFarMax || num2 < this.radarNearMin || num2 < num)
            {
                tracker.Enabled  = false;
                tracker.Distance = RadarDistance.kRadarDistance_OutOfRange;
                return;
            }
            tracker.Enabled  = true;
            tracker.Distance = RadarDistance.kRadarDistance_Far;
            if (num2 < this.radarMediumMin)
            {
                tracker.Distance = RadarDistance.kRadarDistance_Near;
            }
            else if (num2 < this.radarFarMin)
            {
                tracker.Distance = RadarDistance.kRadarDistance_Medium;
            }
            tracker.DirectionDeg = Conversions.RAD2DEG(rad_);
        }
コード例 #6
0
        // Token: 0x06001920 RID: 6432 RVA: 0x0002CED8 File Offset: 0x0002BED8
        public EventResult Arbitrated(Event evnt, XmlString xmlString)
        {
            InstancedEvent     instancedEvent = evnt as InstancedEvent;
            PursuitEventResult pursuitEventResult;

            if (!XSD2CPP.ReadPursuitEventResult(xmlString, out pursuitEventResult) || pursuitEventResult.EventSessionId != instancedEvent.EventSessionId)
            {
                return(null);
            }
            EntrantInfo entrantInfo = evnt.FindEntrant(pursuitEventResult.PersonaId);

            if (entrantInfo == null)
            {
                return(null);
            }
            LocalHumanOpponent localHumanOpponent = entrantInfo.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                localHumanOpponent.Heat = pursuitEventResult.Heat;
            }
            PursuitScoringState pursuitScoringState = entrantInfo.ScoringState as PursuitScoringState;

            if (pursuitScoringState != null)
            {
                pursuitScoringState.HasArbitrated = true;
            }
            Marshal.Get().SetLocalPlayersDurability(pursuitEventResult.Durability);
            return(pursuitEventResult);
        }
コード例 #7
0
        // Token: 0x06001202 RID: 4610 RVA: 0x0001A0FC File Offset: 0x000190FC
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();

            if (localHumanOpponent != null)
            {
                localHumanOpponent.AssignPursuitEscalation(this.key);
            }
        }
コード例 #8
0
        // Token: 0x06001386 RID: 4998 RVA: 0x0001C4B4 File Offset: 0x0001B4B4
        protected override void OnExecute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                Hud.EnableGadget("PostRace", true);
            }
        }
コード例 #9
0
        // Token: 0x06001385 RID: 4997 RVA: 0x0001C47C File Offset: 0x0001B47C
        public PostEventScreen(Event evnt, EntrantInfo entrant, uint port) : base(evnt, entrant, port)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                base.Event.CreateArbitratedPacket();
            }
        }
コード例 #10
0
        // Token: 0x06001392 RID: 5010 RVA: 0x0001C718 File Offset: 0x0001B718
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                localHumanOpponent.RefreshPersona();
            }
        }
コード例 #11
0
        // Token: 0x060012AA RID: 4778 RVA: 0x0001AC74 File Offset: 0x00019C74
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();

            if (localHumanOpponent != null)
            {
                Cops.SetPursuitHeat(localHumanOpponent.Heat);
            }
        }
コード例 #12
0
        // Token: 0x06001896 RID: 6294 RVA: 0x0002B828 File Offset: 0x0002A828
        public void Fill(RadarTracker tracker, Event evnt)
        {
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();
            double             num        = double.MaxValue;
            Collection         collection = null;

            for (uint num2 = 0u; num2 < evnt.EventDef.Num_Coins(); num2 += 1u)
            {
                Collection      collection2     = new Collection(evnt.EventDef.Coins(num2).GetCollectionKey());
                uint            collectionKey   = collection2.GetCollection();
                PointOfInterest pointOfInterest = evnt.PointsOfInterest.Find((PointOfInterest x) => x.Key == collectionKey);
                if (pointOfInterest != null && pointOfInterest.IsEnabled())
                {
                    double num3 = (double)GameCore.Math.Math.DistanceXZ2(localHumanOpponent.Vehicle.GetPosition(), CoordSys.RenderToSim(collection2.Position()));
                    if (num3 < num)
                    {
                        num        = num3;
                        collection = collection2;
                    }
                }
            }
            tracker.Enabled = false;
            tracker.SetMovieClipName("Treasure");
            if (collection != null)
            {
                GameCore.Math.Vector3 vector = CoordSys.RenderToSim(collection.Position());
                GameCore.Math.Vector3 p      = new GameCore.Math.Vector3(localHumanOpponent.Vehicle.GetPosition());
                GameCore.Math.Math.Sub(ref vector, p);
                double num4 = System.Math.Sqrt(GameCore.Math.Math.LengthSq(vector));
                if (num4 > (double)this.radarFarMax || num4 < (double)this.radarNearMin)
                {
                    tracker.Enabled  = false;
                    tracker.Distance = RadarDistance.kRadarDistance_OutOfRange;
                    return;
                }
                tracker.Enabled  = true;
                tracker.Distance = RadarDistance.kRadarDistance_Far;
                if (num4 < (double)this.radarMediumMin)
                {
                    tracker.Distance = RadarDistance.kRadarDistance_Near;
                }
                else if (num4 < (double)this.radarFarMin)
                {
                    tracker.Distance = RadarDistance.kRadarDistance_Medium;
                }
                UMath.Vector3         direction = localHumanOpponent.Vehicle.GetDirection();
                GameCore.Math.Vector2 p2        = new GameCore.Math.Vector2(direction.x, direction.z);
                GameCore.Math.Vector2 p3        = new GameCore.Math.Vector2(vector.x, vector.z);
                GameCore.Math.Math.Normalize(ref p3);
                float num5 = (float)System.Math.Acos((double)GameCore.Math.Math.Clamp <float>(GameCore.Math.Math.Dot(p2, p3), -1f, 1f));
                if (GameCore.Math.Math.Cross(p2, p3) < 0f)
                {
                    num5 = -num5;
                }
                tracker.DirectionDeg = Conversions.RAD2DEG(num5);
            }
        }
コード例 #13
0
        // Token: 0x06001997 RID: 6551 RVA: 0x0002E398 File Offset: 0x0002D398
        public virtual void OnUpdate(EntrantInfo entrant, Event evnt, float dt)
        {
            TeamEscapeScoringState teamEscapeScoringState = entrant.ScoringState as TeamEscapeScoringState;
            InstancedEvent         instancedEvent         = evnt as InstancedEvent;

            if (teamEscapeScoringState != null)
            {
                teamEscapeScoringState.FractionCompleted   = this.GetFractionCompleted(teamEscapeScoringState, entrant, instancedEvent);
                teamEscapeScoringState.DistanceToStartLine = instancedEvent.GetDistanceToStartLine(entrant.Opponent.Vehicle);
                teamEscapeScoringState.DistanceToFinish    = this.GetDistanceToFinish(teamEscapeScoringState, entrant, instancedEvent);
                if (!instancedEvent.IsTimingOut)
                {
                    teamEscapeScoringState.TimeRemaining = evnt.EventDef.TimeLimit() - entrant.ScoringState.EventDurationInSeconds;
                }
                else
                {
                    teamEscapeScoringState.TimeRemaining = (float)instancedEvent.TimingOutRemaining.TotalSeconds;
                }
                if (!teamEscapeScoringState.IsTimerUrgent && teamEscapeScoringState.TimeRemaining < evnt.EventDef.TimeLimitWarning())
                {
                    teamEscapeScoringState.IsTimerUrgent = true;
                    new OnTimingOut(entrant.PersonaId).Post(Ports.Gameplay);
                }
                float speed = entrant.Opponent.Vehicle.GetSpeed();
                if (speed > teamEscapeScoringState.TopSpeed)
                {
                    teamEscapeScoringState.TopSpeed = speed;
                }
                if (entrant.Opponent.Vehicle.GetCurrentAirborneTime() > teamEscapeScoringState.LongestAirTimeInSeconds)
                {
                    teamEscapeScoringState.LongestAirTimeInSeconds = entrant.Opponent.Vehicle.GetCurrentAirborneTime();
                }
                if (entrant.Opponent.InternalOpponent.GetNumOpponentsCollidedWith() > teamEscapeScoringState.NumOpponentsTagged)
                {
                    teamEscapeScoringState.NumOpponentsTagged = entrant.Opponent.InternalOpponent.GetNumOpponentsCollidedWith();
                }
                if (entrant.Opponent is LocalHumanOpponent)
                {
                    Screen.Print(-300, 120, string.Format("{0} : {1}", entrant.Opponent.OpponentName, teamEscapeScoringState.FractionCompleted));
                }
                entrant.Opponent.InternalOpponent.SetFractionEventComplete(teamEscapeScoringState.FractionCompleted);
                LocalHumanOpponent localHumanOpponent = entrant.Opponent as LocalHumanOpponent;
                if (localHumanOpponent != null)
                {
                    PursuitInfo pursuitData = localHumanOpponent.PursuitData;
                    teamEscapeScoringState.CopsDisabled      = pursuitData.GetNumCopsDisabled();
                    teamEscapeScoringState.CopsRammed        = pursuitData.GetNumCopsRammed();
                    teamEscapeScoringState.CopsDeployed      = pursuitData.GetNumCopsDeployed();
                    teamEscapeScoringState.CostToState       = pursuitData.GetCostToState();
                    teamEscapeScoringState.SpikeStripsDodged = pursuitData.GetSpikeStripsDodged();
                    teamEscapeScoringState.RoadBlocksDodged  = pursuitData.GetRoadBlocksDodged();
                    teamEscapeScoringState.Infractions       = pursuitData.GetInfractions();
                    pursuitData.HACK_SetPursuitMeter(teamEscapeScoringState.PursuitBar);
                }
            }
        }
コード例 #14
0
        // Token: 0x06001335 RID: 4917 RVA: 0x0001BB98 File Offset: 0x0001AB98
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                Marshal.Get().EnableGhosting(this.enabled, this.durationInSeconds * 1000f);
            }
            base.Entrant.Opponent.Vehicle.EnableInvulnerability(this.enabled, this.durationInSeconds);
        }
コード例 #15
0
        // Token: 0x060013C9 RID: 5065 RVA: 0x0001CE20 File Offset: 0x0001BE20
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                localHumanOpponent.Hud.UnHideAllGadgets();
            }
            base.Close();
        }
コード例 #16
0
        // Token: 0x060013B8 RID: 5048 RVA: 0x0001CB98 File Offset: 0x0001BB98
        protected internal override void Execute(ActivityExecutionContext context)
        {
            OnRespawn          onRespawn          = new OnRespawn(base.Entrant.PersonaId, this.respawnTargetPersonaId.Value);
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                onRespawn.Synchronize(Ports.Gameplay);
            }
        }
コード例 #17
0
        // Token: 0x060018D4 RID: 6356 RVA: 0x0002C6FC File Offset: 0x0002B6FC
        public bool IsPowerupRestricted(Restriction restriction, EntrantInfo entrantInfo, Event evnt)
        {
            if (entrantInfo == null)
            {
                return(true);
            }
            LocalHumanOpponent localHumanOpponent = entrantInfo.Opponent as LocalHumanOpponent;
            DragScoringState   dragScoringState   = entrantInfo.ScoringState as DragScoringState;

            if (dragScoringState == null)
            {
                return(true);
            }
            if (dragScoringState.EventDurationInSeconds < evnt.EventDef.PowerupBlackoutAtEventStart() && localHumanOpponent != null && !this.IsJumpStartActive(entrantInfo, evnt))
            {
                return(true);
            }
            switch (restriction)
            {
            case Restriction.kPowerupRestriction_NobodyHasFinishedEvent:
                foreach (EntrantInfo entrantInfo2 in evnt.Entrants)
                {
                    DragScoringState dragScoringState2 = entrantInfo2.ScoringState as DragScoringState;
                    if (dragScoringState2 != null && dragScoringState2.FractionCompleted > 0.95f)
                    {
                        return(true);
                    }
                }
                break;

            case Restriction.kPowerupRestriction_IAmNotInFirstPlace:
            {
                if (dragScoringState.Rank == 1)
                {
                    return(true);
                }
                int num = 999;
                foreach (EntrantInfo entrantInfo3 in evnt.Entrants)
                {
                    bool flag = entrantInfo3.Opponent.IsStatus(OpponentStatus.kOpponent_Disconnected);
                    RouteScoringState routeScoringState = entrantInfo3.ScoringState as RouteScoringState;
                    if (routeScoringState != null && routeScoringState.FinishReason == FinishReason.Unknown && !flag && routeScoringState.Rank < num)
                    {
                        num = routeScoringState.Rank;
                    }
                }
                if (num == dragScoringState.Rank)
                {
                    return(true);
                }
                break;
            }
            }
            return(false);
        }
コード例 #18
0
 // Token: 0x060013C4 RID: 5060 RVA: 0x0001CCD0 File Offset: 0x0001BCD0
 protected override void OnMessage(M message)
 {
     if (message.PersonaId == base.Entrant.PersonaId)
     {
         LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;
         if (localHumanOpponent != null)
         {
             message.Synchronize(base.Port);
         }
     }
 }
コード例 #19
0
        // Token: 0x060013E8 RID: 5096 RVA: 0x0001D114 File Offset: 0x0001C114
        protected internal override void Close()
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                FlasherManager.Get().DequeueFlasher(this.flasher_handle);
            }
            this.duration = -1f;
            base.Close();
        }
コード例 #20
0
        // Token: 0x06001372 RID: 4978 RVA: 0x0001C1B8 File Offset: 0x0001B1B8
        protected internal override void Execute(ActivityExecutionContext context)
        {
            if (Cops.IsPursuitActive())
            {
                return;
            }
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                Cops.LaunchPursuit((int)localHumanOpponent.Heat, true);
            }
        }
コード例 #21
0
        // Token: 0x060013BC RID: 5052 RVA: 0x0001CBFC File Offset: 0x0001BBFC
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                if (base.InstancedEvent.SpectateMethod != null)
                {
                    base.InstancedEvent.SpectateMethod.ClearTarget();
                }
                Cameras.Set(this.cameraName);
            }
        }
コード例 #22
0
        // Token: 0x06001365 RID: 4965 RVA: 0x0001C0C8 File Offset: 0x0001B0C8
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                localHumanOpponent.Hud.HideAllGadgets();
                foreach (string name in this.gadgets)
                {
                    localHumanOpponent.Hud.HideGadget(name, false);
                }
            }
            base.Close();
        }
コード例 #23
0
        // Token: 0x06001331 RID: 4913 RVA: 0x0001BB1C File Offset: 0x0001AB1C
        protected internal override void Execute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                bool enable = (this.flags & EnableGadget.GadgetToggle.Enable) != (EnableGadget.GadgetToggle) 0;
                Hud.EnableGadget(this.name, enable);
                if ((this.flags & EnableGadget.GadgetToggle.Dispose) != (EnableGadget.GadgetToggle) 0)
                {
                    Hud.DisposeGadget(this.name);
                }
            }
        }
コード例 #24
0
        // Token: 0x0600121A RID: 4634 RVA: 0x0001A294 File Offset: 0x00019294
        protected internal override void Execute(ActivityExecutionContext context)
        {
            base.Execute(context);
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();

            if (localHumanOpponent != null)
            {
                uint driverLevel = localHumanOpponent.DriverLevel;
                if (this.minLevel <= driverLevel && this.maxLevel >= driverLevel)
                {
                    this.Close();
                }
            }
        }
コード例 #25
0
        // Token: 0x060012EB RID: 4843 RVA: 0x0001B218 File Offset: 0x0001A218
        protected override void Tick(float dT)
        {
            LocalHumanOpponent localHumanOpponent = Engine.Get().OpponentManager().FindLocalOpponent();

            if (this.mEntrant.Opponent is LocalHumanOpponent)
            {
                float speed = localHumanOpponent.Vehicle.GetSpeed();
                this.mHighestSpeedSeen = System.Math.Max(this.mHighestSpeedSeen, speed);
                bool flag  = speed < this.Tweak_DragSpeedResetThreshold_Low && this.mHighestSpeedSeen >= this.Tweak_DragSpeedResetThreshold_High;
                bool flag2 = localHumanOpponent.Vehicle.IsFacingWrongWay();
                if (flag || (flag2 && speed > Conversions.MPH2MPS(3f)))
                {
                    localHumanOpponent.Vehicle.ResetVehicle();
                    this.mHighestSpeedSeen = 0f;
                }
            }
        }
コード例 #26
0
        // Token: 0x0600135F RID: 4959 RVA: 0x0001C020 File Offset: 0x0001B020
        protected override void OnExecute(ActivityExecutionContext context)
        {
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent != null)
            {
                if (Marshal.Get().IsTutorialComplete(this.source))
                {
                    this.Close();
                    return;
                }
                if (!Marshal.Get().HandleTutorial(this.source))
                {
                    this.Close();
                }
            }
        }
コード例 #27
0
        // Token: 0x0600194C RID: 6476 RVA: 0x0002D5C4 File Offset: 0x0002C5C4
        public virtual void OnLapCompleted(EntrantInfo entrant, Event evnt, int lap)
        {
            RouteScoringState routeScoringState = entrant.ScoringState as RouteScoringState;

            if (routeScoringState != null)
            {
                routeScoringState.LapTimer.Stop();
                routeScoringState.BestLapDurationInMilliseconds = Math.Min(routeScoringState.BestLapDurationInMilliseconds, routeScoringState.LapTimer.ElapsedInMilliseconds);
                routeScoringState.CurrentLap = lap;
                LocalHumanOpponent localHumanOpponent = entrant.Opponent as LocalHumanOpponent;
                if (localHumanOpponent != null)
                {
                    FlasherManager.Get().EnqueueFlasher(new TimeFlasher(3020512949u, routeScoringState.LapTimer.ElapsedInSeconds));
                }
                routeScoringState.LapTimer.Reset();
                routeScoringState.LapTimer.Start();
            }
        }
コード例 #28
0
        // Token: 0x060019D1 RID: 6609 RVA: 0x0002F1E4 File Offset: 0x0002E1E4
        public uint UpdateTarget(InstancedEvent evt)
        {
            if (this.target != null && !this.target.Opponent.IsStatus(OpponentStatus.kOpponent_NotSpectatable))
            {
                return(this.target.Opponent.InternalOpponent.GetWrappedVehicle().GetWorldID());
            }
            LocalHumanOpponent     localHumanOpponent     = evt.Manager.OpponentManager.FindLocalOpponent();
            EntrantInfo            entrantInfo            = evt.FindEntrant(localHumanOpponent.PersonaId);
            TeamEscapeScoringState teamEscapeScoringState = entrantInfo.ScoringState as TeamEscapeScoringState;

            this.target = entrantInfo;
            float       fractionCompleted = teamEscapeScoringState.FractionCompleted;
            EntrantInfo entrantInfo2      = entrantInfo;
            float       num          = float.MaxValue;
            EntrantInfo entrantInfo3 = entrantInfo;
            float       num2         = float.MinValue;

            foreach (EntrantInfo entrantInfo4 in evt.Entrants)
            {
                if (entrantInfo4.PersonaId != entrantInfo.PersonaId && !entrantInfo4.Opponent.IsStatus(OpponentStatus.kOpponent_NotSpectatable))
                {
                    TeamEscapeScoringState teamEscapeScoringState2 = entrantInfo4.ScoringState as TeamEscapeScoringState;
                    if (teamEscapeScoringState2.FractionCompleted >= fractionCompleted && teamEscapeScoringState2.FractionCompleted <= num)
                    {
                        entrantInfo2 = entrantInfo4;
                        num          = teamEscapeScoringState2.FractionCompleted;
                    }
                    else if (teamEscapeScoringState2.FractionCompleted <= fractionCompleted && teamEscapeScoringState2.FractionCompleted >= num2)
                    {
                        entrantInfo3 = entrantInfo4;
                        num2         = teamEscapeScoringState2.FractionCompleted;
                    }
                }
            }
            if (entrantInfo3 != entrantInfo)
            {
                this.target = entrantInfo3;
            }
            if (entrantInfo2 != entrantInfo)
            {
                this.target = entrantInfo2;
            }
            return(this.target.Opponent.InternalOpponent.GetWrappedVehicle().GetWorldID());
        }
コード例 #29
0
        // Token: 0x060013C6 RID: 5062 RVA: 0x0001CD28 File Offset: 0x0001BD28
        protected internal unsafe override void Execute(ActivityExecutionContext context)
        {
            IPerfectStart perfectStart = base.Entrant.ScoringState as IPerfectStart;

            if (perfectStart == null)
            {
                return;
            }
            LocalHumanOpponent localHumanOpponent = base.Entrant.Opponent as LocalHumanOpponent;

            if (localHumanOpponent == null)
            {
                return;
            }
            bool  flag     = false;
            float duration = 0f;
            bool  flag2    = localHumanOpponent.Vehicle.TryPerfectLaunch(&duration, &flag);

            if (!flag)
            {
                perfectStart.PerfectStart = PerfectStart.kPerfectStart_Unlearned;
                return;
            }
            if (!flag2)
            {
                perfectStart.PerfectStart = PerfectStart.kPerfectStart_Fail;
                return;
            }
            perfectStart.PerfectStart = PerfectStart.kPerfectStart_Success;
            float             torque            = 0f;
            powerup_gamegroup powerup_gamegroup = new powerup_gamegroup(3423076689u);

            if (powerup_gamegroup.Num_magnitude() > 0u)
            {
                float num = powerup_gamegroup.magnitude(0u);
                if (num > 1f)
                {
                    torque = num - 1f;
                }
            }
            FlasherManager.Get().EnqueueFlasher(new FlasherBase(1547819931u));
            new OnPerfectLaunchAchieved(localHumanOpponent.PersonaId, duration, torque).Post(Ports.Gameplay);
            localHumanOpponent.Hud.OnPerfectLaunchAchieved((int)localHumanOpponent.PersonaId);
        }
コード例 #30
0
        // Token: 0x06001750 RID: 5968 RVA: 0x00029BC8 File Offset: 0x00028BC8
        public void TimingOut(XmlString xmlString)
        {
            EventTimingOut eventTimingOut;

            if (XSD2CPP.ReadEventTimingOut(xmlString, out eventTimingOut) && this.EventSessionId == eventTimingOut.EventSessionId)
            {
                this.timingOutBeginning      = Simulation.GetTick();
                this.timingOutInMilliseconds = eventTimingOut.TimeInMilliseconds;
                LocalHumanOpponent localHumanOpponent = base.Manager.OpponentManager.FindLocalOpponent();
                if (localHumanOpponent != null)
                {
                    EntrantInfo entrantInfo = base.FindEntrant(localHumanOpponent.PersonaId);
                    if (entrantInfo != null && !entrantInfo.ScoringState.HasFinishReason)
                    {
                        Hud.EnableGadget("RaceCountdownTimer", true);
                    }
                }
            }
        }