Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Sims3.Gameplay.Actors;
- using Sims3.Gameplay.Core;
- using Sims3.Gameplay.Interactions;
- using Sims3.Gameplay.Objects.Counters;
- using Sims3.Gameplay.Objects.Register;
- using Sims3.SimIFace;
- using System.Collections.Generic;
- namespace HKnowles
- {
- class TendRegister
- {
- [Tunable]
- protected static bool kInstantiator;
- static TendRegister()
- {
- LoadSaveManager.ObjectGroupsPreLoad += new ObjectGroupsPreLoadHandler(OnPreload);
- }
- private static void OnPreload()
- {
- ShoppingRegister.TendRegister.Singleton = new TendRegisterI.Definition();
- }
- }
- public class TendRegisterI : Interaction<Sim, ShoppingRegister>
- {
- public override bool Run()
- {
- StandardEntry();
- EnterStateMachine("tendregister", "Enter", "x");
- BeginCommodityUpdates();
- AnimateSim("TendLoop");
- mbInStateMachine = true;
- bool flag = DoLoop(ExitReason.Default, new InsideLoopFunction(LoopCallback), null);
- EndCommodityUpdates(flag);
- bool flag2 = mbInStateMachine;
- if (flag2)
- {
- AnimateSim("Exit");
- }
- StandardExit();
- return flag;
- }
- public override void Init(ref InteractionInstanceParameters parameters)
- {
- parameters.Priority = new InteractionPriority(InteractionPriorityLevel.Zero);
- base.Init(ref parameters);
- }
- public void LoopCallback(StateMachineClient smc, LoopData ld)
- {
- bool flag = !Actor.SimDescription.HasActiveRole;
- if (flag)
- {
- Actor.AddExitReason(ExitReason.Finished);
- }
- else
- {
- bool flag2 = mTimeToExitBehindTend < ld.mLifeTime;
- if (flag2)
- {
- bool flag3 = RandomUtil.RandomChance(ShoppingRegister.TendRegister.kChanceToStandBehindRegister);
- if (flag3)
- {
- bool flag4 = mbInStateMachine;
- if (flag4)
- {
- AnimateSim("Exit");
- mbInStateMachine = false;
- }
- bool flag5 = ((Counter)Target.Parent).RouteToObjectOnSurface(Actor, Target);
- if (flag5)
- {
- Actor.LoopIdle();
- mTimeToExitBehindTend = ld.mLifeTime + ShoppingRegister.TendRegister.kSimMinBehindRegister;
- }
- }
- else
- {
- bool flag6 = !mbInStateMachine;
- if (flag6)
- {
- Actor.Wander(ShoppingRegister.TendRegister.kMinWanderDistance, ShoppingRegister.TendRegister.kMaxWanderDistance, false, RouteDistancePreference.NoPreference, false);
- EnterStateMachine("tendregister", "Enter", "x");
- AnimateSim("TendLoop");
- mbInStateMachine = true;
- }
- else
- {
- float num = RandomUtil.GetFloat(100f);
- bool flag7 = Actor.GetDistanceToObject(Target) > ShoppingRegister.TendRegister.kMaxDistance;
- if (flag7)
- {
- float @float = RandomUtil.GetFloat(ShoppingRegister.TendRegister.kMinRadiusDistance, ShoppingRegister.TendRegister.kMaxRadiusDistance);
- Actor.RouteToObjectRadius(Target, @float);
- }
- else
- {
- bool flag8 = (num -= ShoppingRegister.TendRegister.kWanderChance) < 0f;
- if (flag8)
- {
- Actor.Wander(ShoppingRegister.TendRegister.kMinWanderDistance, ShoppingRegister.TendRegister.kMaxWanderDistance, false, RouteDistancePreference.NoPreference, false);
- }
- else
- {
- bool flag9 = num - ShoppingRegister.TendRegister.kLookAtSimChance < 0f;
- if (flag9)
- {
- AnimateSim("HaltToTurn");
- List<Sim> list = new List<Sim>(Sims3.Gameplay.Queries.GetObjects<Sim>(Actor.Position, ShoppingRegister.TendRegister.kMaxTurnToDistance));
- list.Remove(Actor);
- bool flag10 = list.Count > 0;
- if (flag10)
- {
- Sim randomObjectFromList = RandomUtil.GetRandomObjectFromList(list);
- Actor.RouteTurnToFace(randomObjectFromList.Position);
- }
- else
- {
- float num2 = 1.5707964f;
- float float2 = RandomUtil.GetFloat(-num2, num2);
- Vector3 vector = Quaternion.MakeFromEulerAngles(0f, float2, 0f).ToMatrix().TransformVector(Actor.ForwardVector);
- Actor.RouteTurnToFace(vector + Actor.Position);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- public float mTimeToExitBehindTend;
- public bool mbInStateMachine;
- public static InteractionDefinition Singleton = new Definition();
- public class Definition : InteractionDefinition<Sim, ShoppingRegister, TendRegisterI>
- {
- public override bool Test(Sim a, ShoppingRegister target, bool isAutonomous, ref GreyedOutTooltipCallback greyedOutTooltipCallback)
- {
- return a.SimDescription.HasActiveRole && a.SimDescription.AssignedRole.RoleGivingObject == target;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment