Ejemplo n.º 1
0
            public override void AddInteractions(InteractionObjectPair iop, Sim actor, Sim target, List <InteractionObjectPair> results)
            {
                try
                {
                    mTargetDanceObject = null;

                    foreach (InteractionObjectPair pair in actor.Interactions)
                    {
                        if (pair.InteractionDefinition.GetType() == typeof(Stereo.DanceTogetherA.Definition))
                        {
                            Stereo.DanceTogetherA.Definition definition = pair.InteractionDefinition as Stereo.DanceTogetherA.Definition;
                            mTargetDanceObject = definition.mTargetDanceObject;
                            break;
                        }
                    }

                    if (mTargetDanceObject == null)
                    {
                        return;
                    }

                    bool allowDance     = mTargetDanceObject.AllowsDance && (Stereo.SimCanBaseDance(actor, mTargetDanceObject) && Stereo.SimCanBaseDance(target, mTargetDanceObject));
                    bool allowClubDance = mTargetDanceObject.AllowsClubDance && (Stereo.SimCanClubDance(actor, mTargetDanceObject) && Stereo.SimCanClubDance(target, mTargetDanceObject));
                    bool canSlowDance   = Stereo.SimsCanSlowDanceTogether(actor, target, mTargetDanceObject);
                    int  num            = 0x0;
                    num += allowDance ? 0x1 : 0x0;
                    num += allowClubDance ? 0x1 : 0x0;
                    num += canSlowDance ? 0x1 : 0x0;
                    bool     inClub       = Stereo.ObjectIsInDanceClub(target);
                    string[] menu         = (num > 0x1) ? new string[] { Stereo.DanceTogetherA.LocalizeString("DanceMenu", new object[0x0]) } : new string[0x0];
                    bool     canClubDance = allowClubDance && inClub;
                    Stereo.DanceTogetherA.DanceType dance = Stereo.DanceTogetherA.DanceType.Dance;
                    if (allowDance || canClubDance)
                    {
                        if (canClubDance)
                        {
                            dance = Stereo.DanceTogetherA.DanceType.Club;
                        }

                        if (Stereo.PartySimIsGettingMusicFromPartyLocation(actor, mTargetDanceObject))
                        {
                            results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("RockingInteractionName", new object[0x0]), menu, dance, mTargetDanceObject), iop.Target));
                        }
                        else
                        {
                            results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("InteractionName", new object[0x0]), menu, dance, mTargetDanceObject), iop.Target));
                        }
                    }

                    if (allowClubDance && !canClubDance)
                    {
                        if (Stereo.PartySimIsGettingMusicFromPartyLocation(actor, mTargetDanceObject))
                        {
                            results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("ClubRockingInteractionName", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Club, mTargetDanceObject), iop.Target));
                        }
                        else
                        {
                            results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("ClubDanceTogetherA", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Club, mTargetDanceObject), iop.Target));
                        }
                    }

                    if (canSlowDance)
                    {
                        results.Add(new InteractionObjectPair(new Definition(Stereo.DanceTogetherA.LocalizeString("SlowDance", new object[0x0]), menu, Stereo.DanceTogetherA.DanceType.Slow, mTargetDanceObject), iop.Target));
                    }
                }
                catch (Exception e)
                {
                    Common.Exception(actor, target, e);
                }
            }