// Update is called once per frame void Update() { transform.localPosition = new Vector3( 0.0f, -(float)(TimeStats.beatCountModdable % 2), 0.0f ); if (Time.timeSinceLevelLoad < changeStartTime) { return; } currentDelay += 1; if (currentDelay < delay) { return; } currentDelay = 0; colIndex += 1; // int colIndex = TimeStats.beatCount; // if (colIndex == prevDoneCol) return; // prevDoneCol = colIndex; // if (colIndex < 0) return; if (colIndex >= ColContainer.childCount) { return; } // Debug.Log(allChildren[colIndex]); foreach (Transform floor in ColContainer.GetChild(colIndex)) { DanceFloor dance = floor.GetComponent <DanceFloor>(); floor.GetComponentInChildren <SpriteRenderer>().color = ( ((colIndex + dance.posY) % 2 == 0)? color2 : color3 ); } }
public override bool Run() { try { mPlayer = Target.ActorsUsingMe[0x0]; bool flag = (mPlayer.Occupation is Music) && (mPlayer.Occupation.Level >= Music.GuitarBonusLevel); DanceFloor danceFloor = null; if (!MusicalInstrument.DoRouteForWatchOrDance(Actor, Target, out danceFloor)) { return(false); } mDanceFloor = danceFloor; if (mDanceFloor != null) { mDanceFloor.AddToUseList(Actor); } mPlayInstance = mPlayer.CurrentInteraction as MusicalInstrument.PlayInstrument <TTarget>; if (mPlayInstance != null) { if (!mPlayInstance.Performing) { return(false); } AddEventListeners(); } if (flag) { BeginCommodityUpdate(CommodityKind.Fun, Music.GuitarBonusFunMultiplier); } BeginCommodityUpdates(); bool success = false; try { AcquireStateMachine(Target.StateMachineName, AnimationPriority.kAPNormal); SetActorAndEnter("x", Actor, "Enter"); AddJamControllerWatchListener(); AnimateSim("Watch"); mbIsWatchingRightNow = true; Target.AddWatcher(); mFriendGainAlarm = Target.AddAlarmRepeating(Tuning.MinutesForLikingGain, TimeUnit.Minutes, new AlarmTimerCallback(GainFriendly), Tuning.MinutesForLikingGain, TimeUnit.Minutes, "Friendship Gain for Watch Music Playing", AlarmType.AlwaysPersisted); MusicSkill element = mPlayer.SkillManager.GetElement(Target.SkillName) as MusicSkill; if (element != null) { element.BeingWatched(); } if (Target.mPlayingForTips && (Actor.IsOutside || Actor.LotCurrent.IsCommunityLot)) { mTipChancePerCheck = Tuning.ChanceOfTipPerLevel[element.SkillLevel]; foreach (TraitNames names in Tuning.TraitsLessLikelyToTip) { if (Actor.TraitManager.HasElement(names)) { mTipChancePerCheck *= Tuning.LessLikelyToTipMultiplier; } } foreach (TraitNames names2 in Tuning.TraitsMoreLikelyToTip) { if (Actor.TraitManager.HasElement(names2)) { mTipChancePerCheck *= Tuning.MoreLikelyToTipMultiplier; } } mGoalTimeToTestTip = Tuning.TimePerTipTest; timeTillTip = RandomUtil.RandomFloatGaussianDistribution(Target.Tuning.ShortestSongLengthForTip, Target.Tuning.LongestSongLengthForTip); success = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), new Interaction <Sim, TTarget> .InsideLoopFunction(TippingLoop), mCurrentStateMachine); } else { success = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), new Interaction <Sim, TTarget> .InsideLoopFunction(WatchLoopBase), mCurrentStateMachine); } Target.RemoveAlarm(mFriendGainAlarm); Target.RemoveWatcher(); SongFinished(true, mTryToTip); RemoveJamControllerWatchListener(); if (mPlayInstance != null) { RemoveEventListeners(); mPlayInstance = null; } } finally { EndCommodityUpdates(success); } return(success); } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
public bool BaseRunEx() { mRelationship = Relationship.Get(Actor, Target, true); if (mRelationship == null) { return(false); } bool flag = false; if (IsSlowDance) { string reason; GreyedOutTooltipCallback greyedOutTooltipCallback = null; if (CommonSocials.CanGetRomantic(Actor, Target, false, false, true, ref greyedOutTooltipCallback, out reason)) { flag = true; } } else { foreach (CommodityTypes types in kAcceptableCommodities) { if (mRelationship.STC.CurrentCommodity == types) { flag = true; break; } } } Definition interactionDefinition = InteractionDefinition as Definition; IDanceable danceObject = interactionDefinition.DanceObject; if (flag) { mDanceFloor = DanceFloor.FindAndRouteOntoADanceFloorWithFollower(Actor, Target, danceObject); if (mDanceFloor != null) { mDanceFloor.AddToUseList(Actor); if (!mDanceFloor.IsActorUsingMe(Target)) { mDanceFloor.AddToUseList(Target); } } } Stereo targetStereo = interactionDefinition.TargetStereo; if (targetStereo != null) { targetStereo.AddSimListener(Actor); targetStereo.AddSimListener(Target); } string instanceName = "SocialJigTwoPerson"; ProductVersion baseGame = ProductVersion.BaseGame; if (IsSlowDance) { instanceName = "SlowdanceJig"; baseGame = ProductVersion.EP8; } SocialJig = GlobalFunctions.CreateObjectOutOfWorld(instanceName, baseGame) as SocialJigTwoPerson; bool succeeded = false; Actor.SynchronizationLevel = Sim.SyncLevel.NotStarted; Target.SynchronizationLevel = Sim.SyncLevel.NotStarted; string name = (Stereo.PartySimIsGettingMusicFromPartyLocation(Actor, danceObject) || Stereo.PartySimIsGettingMusicFromPartyLocation(Target, danceObject)) ? LocalizeString("BeRockingDancingTogether", new object[0x0]) : LocalizeString("BeDancingTogether", new object[0x0]); if (BeginSocialInteraction(new SocialInteractionB.Definition(null, name, false), true, false)) { IGlass objectInRightHand = Actor.GetObjectInRightHand() as IGlass; if (objectInRightHand != null) { objectInRightHand.PutGlassAway(); } objectInRightHand = Target.GetObjectInRightHand() as IGlass; if (objectInRightHand != null) { objectInRightHand.PutGlassAway(); } string stateMachineName = IsSlowDance ? "slowdance_together" : "dance_together"; StateMachineClient smc = StateMachineClient.Acquire(Actor, stateMachineName); if (IsSlowDance) { smc.SetActor("x", Actor); smc.SetActor("y", Target); } else { smc.SetActor("x", Target); smc.SetActor("y", Actor); } smc.EnterState("x", "enter"); smc.EnterState("y", "enter"); if (GameUtils.IsInstalled(ProductVersion.EP7)) { smc.SetParameter("xIsProper", Target.HasTrait(TraitNames.Proper)); smc.SetParameter("yIsProper", Actor.HasTrait(TraitNames.Proper)); } BeginCommodityUpdates(); smc.RequestState(false, "x", "Ask_To_Dance"); smc.RequestState(true, "y", "Ask_To_Dance"); if (flag) { smc.RequestState(false, "x", "Last_Sync"); smc.RequestState(true, "y", "Last_Sync"); smc.RequestState(false, "x", "dance"); smc.RequestState(true, "y", "dance"); Actor.SkillManager.StartGainAndAddSkillIfNeeded(SkillNames.Dancing, Stereo.kRateOfSkillGainForDancing); Target.SkillManager.StartGainAndAddSkillIfNeeded(SkillNames.Dancing, Stereo.kRateOfSkillGainForDancing); if (IsSlowDance) { EventTracker.SendEvent(EventTypeId.kSlowDanced, Actor, Target); EventTracker.SendEvent(EventTypeId.kSlowDanced, Target, Actor); } succeeded = DoLoop(~(ExitReason.Replan | ExitReason.MidRoutePushRequested | ExitReason.ObjectStateChanged | ExitReason.PlayIdle | ExitReason.MaxSkillPointsReached), new InteractionInstance.InsideLoopFunction(DanceTogetherDelegate), smc); Actor.SkillManager.StopSkillGain(SkillNames.Dancing); Target.SkillManager.StopSkillGain(SkillNames.Dancing); smc.RequestState(false, "x", "friendly"); smc.RequestState(true, "y", "friendly"); } else { smc.RequestState(false, "x", "awkward"); smc.RequestState(true, "y", "awkward"); mRelationship.LTR.UpdateLiking(Stereo.kLtrDecreaseAfterRejectingDanceTogether); succeeded = false; } } Definition definition2 = InteractionDefinition as Definition; if ((definition2 != null) && (definition2.DanceObject is DJTurntable)) { EventTracker.SendEvent(EventTypeId.kDanceToDJMusic, Target); EventTracker.SendEvent(EventTypeId.kDanceToDJMusic, Actor); } EndCommodityUpdates(succeeded); Actor.ClearSynchronizationData(); return(succeeded); }
private new void ExitAndTip(bool keepWatching) { try { AnimateSim("AfterWatch"); Vector3 position = Actor.Position; if ((mTippingStatus == Tipping.WillTip) && (mPlayInstance != null)) { bool flag = false; if (Actor.ExitReason == ExitReason.Finished) { flag = true; Actor.ClearExitReasons(); } if (Tip(Actor, mPlayer, Target, Tuning.MoneyPerLevel, Tuning.MoneyPerCompositionPlayed)) { mTippingStatus = Tipping.HasTipped; } if (flag) { Actor.AddExitReason(ExitReason.Finished); } } if (keepWatching) { Route r = Actor.CreateRoute(); r.PlanToPoint(position); r.DoRouteFail = false; if (!Actor.DoRoute(r)) { if (mDanceFloor != null) { mDanceFloor.RemoveFromUseList(Actor); mDanceFloor = null; } DanceFloor danceFloor = null; MusicalInstrument.DoRouteForWatchOrDance(Actor, Target, out danceFloor); mDanceFloor = danceFloor; if (mDanceFloor != null) { mDanceFloor.AddToUseList(Actor); } } Actor.RouteTurnToFace(mPlayer.Position); AnimateSim("Watch"); mbIsWatchingRightNow = true; } else { AnimateSim("Exit"); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); } }